001package org.hl7.fhir.dstu2016may.formats;
002
003
004
005
006import java.io.IOException;
007
008/*
009  Copyright (c) 2011+, HL7, Inc.
010  All rights reserved.
011  
012  Redistribution and use in source and binary forms, with or without modification, 
013  are permitted provided that the following conditions are met:
014  
015   * Redistributions of source code must retain the above copyright notice, this 
016     list of conditions and the following disclaimer.
017   * Redistributions in binary form must reproduce the above copyright notice, 
018     this list of conditions and the following disclaimer in the documentation 
019     and/or other materials provided with the distribution.
020   * Neither the name of HL7 nor the names of its contributors may be used to 
021     endorse or promote products derived from this software without specific 
022     prior written permission.
023  
024  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
025  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
026  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
027  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
028  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
029  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
030  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
031  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
032  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
033  POSSIBILITY OF SUCH DAMAGE.
034  
035*/
036
037// Generated on Sun, May 8, 2016 03:05+1000 for FHIR v1.4.0
038import org.hl7.fhir.dstu2016may.model.*;
039import org.hl7.fhir.exceptions.FHIRFormatError;
040import org.hl7.fhir.utilities.Utilities;
041import org.xmlpull.v1.XmlPullParser;
042import org.xmlpull.v1.XmlPullParserException;
043
044public class XmlParser extends XmlParserBase {
045
046  public XmlParser() {
047    super();
048  }
049
050  public XmlParser(boolean allowUnknownContent) {
051    super();
052    setAllowUnknownContent(allowUnknownContent);
053  }
054
055
056  protected boolean parseElementContent(int eventType, XmlPullParser xpp, Element res) throws XmlPullParserException, IOException, FHIRFormatError {
057    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) 
058      res.getExtension().add(parseExtension(xpp));
059    else
060      return false;
061      
062    return true;
063  }
064
065  protected boolean parseBackboneContent(int eventType, XmlPullParser xpp, BackboneElement res) throws XmlPullParserException, IOException, FHIRFormatError {
066    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) 
067      res.getModifierExtension().add(parseExtension(xpp));
068    else
069      return parseElementContent(eventType, xpp, res);
070      
071    return true;
072  }
073
074  @SuppressWarnings("unchecked")
075  protected <E extends Enum<E>> Enumeration<E> parseEnumeration(XmlPullParser xpp, E item, EnumFactory e) throws XmlPullParserException, IOException, FHIRFormatError {
076    Enumeration<E> res = new Enumeration<E>(e);
077    parseElementAttributes(xpp, res);
078    res.setValue((E) e.fromCode(xpp.getAttributeValue(null, "value")));
079    next(xpp);
080    int eventType = nextNoWhitespace(xpp);
081    while (eventType != XmlPullParser.END_TAG) {
082      if (!parseElementContent(eventType, xpp, res))
083        unknownContent(xpp);
084      eventType = nextNoWhitespace(xpp);
085    }
086    next(xpp);
087    parseElementClose(res);
088    return res;
089  }
090
091  protected MarkdownType parseMarkdown(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
092    MarkdownType res = new MarkdownType(xpp.getAttributeValue(null, "value"));
093    parseElementAttributes(xpp, res);
094    next(xpp);
095    int eventType = nextNoWhitespace(xpp);
096    while (eventType != XmlPullParser.END_TAG) {
097      if (!parseElementContent(eventType, xpp, res))
098        unknownContent(xpp);
099      eventType = nextNoWhitespace(xpp);
100    }
101    next(xpp);
102    parseElementClose(res);
103    return res;
104  }
105
106  protected IntegerType parseInteger(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
107    IntegerType res = new IntegerType(xpp.getAttributeValue(null, "value"));
108    parseElementAttributes(xpp, res);
109    next(xpp);
110    int eventType = nextNoWhitespace(xpp);
111    while (eventType != XmlPullParser.END_TAG) {
112      if (!parseElementContent(eventType, xpp, res))
113        unknownContent(xpp);
114      eventType = nextNoWhitespace(xpp);
115    }
116    next(xpp);
117    parseElementClose(res);
118    return res;
119  }
120
121  protected DateTimeType parseDateTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
122    DateTimeType res = new DateTimeType(xpp.getAttributeValue(null, "value"));
123    parseElementAttributes(xpp, res);
124    next(xpp);
125    int eventType = nextNoWhitespace(xpp);
126    while (eventType != XmlPullParser.END_TAG) {
127      if (!parseElementContent(eventType, xpp, res))
128        unknownContent(xpp);
129      eventType = nextNoWhitespace(xpp);
130    }
131    next(xpp);
132    parseElementClose(res);
133    return res;
134  }
135
136  protected UnsignedIntType parseUnsignedInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
137    UnsignedIntType res = new UnsignedIntType(xpp.getAttributeValue(null, "value"));
138    parseElementAttributes(xpp, res);
139    next(xpp);
140    int eventType = nextNoWhitespace(xpp);
141    while (eventType != XmlPullParser.END_TAG) {
142      if (!parseElementContent(eventType, xpp, res))
143        unknownContent(xpp);
144      eventType = nextNoWhitespace(xpp);
145    }
146    next(xpp);
147    parseElementClose(res);
148    return res;
149  }
150
151  protected CodeType parseCode(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
152    CodeType res = new CodeType(xpp.getAttributeValue(null, "value"));
153    parseElementAttributes(xpp, res);
154    next(xpp);
155    int eventType = nextNoWhitespace(xpp);
156    while (eventType != XmlPullParser.END_TAG) {
157      if (!parseElementContent(eventType, xpp, res))
158        unknownContent(xpp);
159      eventType = nextNoWhitespace(xpp);
160    }
161    next(xpp);
162    parseElementClose(res);
163    return res;
164  }
165
166  protected DateType parseDate(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
167    DateType res = new DateType(xpp.getAttributeValue(null, "value"));
168    parseElementAttributes(xpp, res);
169    next(xpp);
170    int eventType = nextNoWhitespace(xpp);
171    while (eventType != XmlPullParser.END_TAG) {
172      if (!parseElementContent(eventType, xpp, res))
173        unknownContent(xpp);
174      eventType = nextNoWhitespace(xpp);
175    }
176    next(xpp);
177    parseElementClose(res);
178    return res;
179  }
180
181  protected DecimalType parseDecimal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
182    DecimalType res = new DecimalType(xpp.getAttributeValue(null, "value"));
183    parseElementAttributes(xpp, res);
184    next(xpp);
185    int eventType = nextNoWhitespace(xpp);
186    while (eventType != XmlPullParser.END_TAG) {
187      if (!parseElementContent(eventType, xpp, res))
188        unknownContent(xpp);
189      eventType = nextNoWhitespace(xpp);
190    }
191    next(xpp);
192    parseElementClose(res);
193    return res;
194  }
195
196  protected UriType parseUri(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
197    UriType res = new UriType(xpp.getAttributeValue(null, "value"));
198    parseElementAttributes(xpp, res);
199    next(xpp);
200    int eventType = nextNoWhitespace(xpp);
201    while (eventType != XmlPullParser.END_TAG) {
202      if (!parseElementContent(eventType, xpp, res))
203        unknownContent(xpp);
204      eventType = nextNoWhitespace(xpp);
205    }
206    next(xpp);
207    parseElementClose(res);
208    return res;
209  }
210
211  protected IdType parseId(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
212    IdType res = new IdType(xpp.getAttributeValue(null, "value"));
213    parseElementAttributes(xpp, res);
214    next(xpp);
215    int eventType = nextNoWhitespace(xpp);
216    while (eventType != XmlPullParser.END_TAG) {
217      if (!parseElementContent(eventType, xpp, res))
218        unknownContent(xpp);
219      eventType = nextNoWhitespace(xpp);
220    }
221    next(xpp);
222    parseElementClose(res);
223    return res;
224  }
225
226  protected Base64BinaryType parseBase64Binary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
227    Base64BinaryType res = new Base64BinaryType(xpp.getAttributeValue(null, "value"));
228    parseElementAttributes(xpp, res);
229    next(xpp);
230    int eventType = nextNoWhitespace(xpp);
231    while (eventType != XmlPullParser.END_TAG) {
232      if (!parseElementContent(eventType, xpp, res))
233        unknownContent(xpp);
234      eventType = nextNoWhitespace(xpp);
235    }
236    next(xpp);
237    parseElementClose(res);
238    return res;
239  }
240
241  protected TimeType parseTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
242    TimeType res = new TimeType(xpp.getAttributeValue(null, "value"));
243    parseElementAttributes(xpp, res);
244    next(xpp);
245    int eventType = nextNoWhitespace(xpp);
246    while (eventType != XmlPullParser.END_TAG) {
247      if (!parseElementContent(eventType, xpp, res))
248        unknownContent(xpp);
249      eventType = nextNoWhitespace(xpp);
250    }
251    next(xpp);
252    parseElementClose(res);
253    return res;
254  }
255
256  protected OidType parseOid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
257    OidType res = new OidType(xpp.getAttributeValue(null, "value"));
258    parseElementAttributes(xpp, res);
259    next(xpp);
260    int eventType = nextNoWhitespace(xpp);
261    while (eventType != XmlPullParser.END_TAG) {
262      if (!parseElementContent(eventType, xpp, res))
263        unknownContent(xpp);
264      eventType = nextNoWhitespace(xpp);
265    }
266    next(xpp);
267    parseElementClose(res);
268    return res;
269  }
270
271  protected PositiveIntType parsePositiveInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
272    PositiveIntType res = new PositiveIntType(xpp.getAttributeValue(null, "value"));
273    parseElementAttributes(xpp, res);
274    next(xpp);
275    int eventType = nextNoWhitespace(xpp);
276    while (eventType != XmlPullParser.END_TAG) {
277      if (!parseElementContent(eventType, xpp, res))
278        unknownContent(xpp);
279      eventType = nextNoWhitespace(xpp);
280    }
281    next(xpp);
282    parseElementClose(res);
283    return res;
284  }
285
286  protected StringType parseString(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
287    StringType res = new StringType(xpp.getAttributeValue(null, "value"));
288    parseElementAttributes(xpp, res);
289    next(xpp);
290    int eventType = nextNoWhitespace(xpp);
291    while (eventType != XmlPullParser.END_TAG) {
292      if (!parseElementContent(eventType, xpp, res))
293        unknownContent(xpp);
294      eventType = nextNoWhitespace(xpp);
295    }
296    next(xpp);
297    parseElementClose(res);
298    return res;
299  }
300
301  protected BooleanType parseBoolean(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
302    BooleanType res = new BooleanType(xpp.getAttributeValue(null, "value"));
303    parseElementAttributes(xpp, res);
304    next(xpp);
305    int eventType = nextNoWhitespace(xpp);
306    while (eventType != XmlPullParser.END_TAG) {
307      if (!parseElementContent(eventType, xpp, res))
308        unknownContent(xpp);
309      eventType = nextNoWhitespace(xpp);
310    }
311    next(xpp);
312    parseElementClose(res);
313    return res;
314  }
315
316  protected UuidType parseUuid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
317    UuidType res = new UuidType(xpp.getAttributeValue(null, "value"));
318    parseElementAttributes(xpp, res);
319    next(xpp);
320    int eventType = nextNoWhitespace(xpp);
321    while (eventType != XmlPullParser.END_TAG) {
322      if (!parseElementContent(eventType, xpp, res))
323        unknownContent(xpp);
324      eventType = nextNoWhitespace(xpp);
325    }
326    next(xpp);
327    parseElementClose(res);
328    return res;
329  }
330
331  protected InstantType parseInstant(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
332    InstantType res = new InstantType(xpp.getAttributeValue(null, "value"));
333    parseElementAttributes(xpp, res);
334    next(xpp);
335    int eventType = nextNoWhitespace(xpp);
336    while (eventType != XmlPullParser.END_TAG) {
337      if (!parseElementContent(eventType, xpp, res))
338        unknownContent(xpp);
339      eventType = nextNoWhitespace(xpp);
340    }
341    next(xpp);
342    parseElementClose(res);
343    return res;
344  }
345
346  protected Extension parseExtension(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
347    Extension res = new Extension();
348    parseElementAttributes(xpp, res);
349    if (xpp.getAttributeValue(null, "url") != null)
350        res.setUrl(xpp.getAttributeValue(null, "url"));
351    next(xpp);
352    int eventType = nextNoWhitespace(xpp);
353    while (eventType != XmlPullParser.END_TAG) {
354      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
355        res.setValue(parseType("value", xpp));
356      } else if (!parseElementContent(eventType, xpp, res))
357        unknownContent(xpp);
358      eventType = nextNoWhitespace(xpp);
359    }
360    next(xpp);
361    parseElementClose(res);
362    return res;
363  }
364
365  protected Narrative parseNarrative(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
366    Narrative res = new Narrative();
367    parseElementAttributes(xpp, res);
368    next(xpp);
369    int eventType = nextNoWhitespace(xpp);
370    while (eventType != XmlPullParser.END_TAG) {
371      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
372        res.setStatusElement(parseEnumeration(xpp, Narrative.NarrativeStatus.NULL, new Narrative.NarrativeStatusEnumFactory()));
373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("div")) {
374        res.setDiv(parseXhtml(xpp));
375      } else if (!parseElementContent(eventType, xpp, res))
376        unknownContent(xpp);
377      eventType = nextNoWhitespace(xpp);
378    }
379    next(xpp);
380    parseElementClose(res);
381    return res;
382  }
383
384  protected Period parsePeriod(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
385    Period res = new Period();
386    parseTypeAttributes(xpp, res);
387    next(xpp);
388    int eventType = nextNoWhitespace(xpp);
389    while (eventType != XmlPullParser.END_TAG) {
390      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
391        res.setStartElement(parseDateTime(xpp));
392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
393        res.setEndElement(parseDateTime(xpp));
394      } else if (!parseElementContent(eventType, xpp, res))
395        unknownContent(xpp);
396      eventType = nextNoWhitespace(xpp);
397    }
398    next(xpp);
399    parseElementClose(res);
400    return res;
401  }
402
403  protected Coding parseCoding(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
404    Coding res = new Coding();
405    parseTypeAttributes(xpp, res);
406    next(xpp);
407    int eventType = nextNoWhitespace(xpp);
408    while (eventType != XmlPullParser.END_TAG) {
409      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
410        res.setSystemElement(parseUri(xpp));
411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
412        res.setVersionElement(parseString(xpp));
413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
414        res.setCodeElement(parseCode(xpp));
415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
416        res.setDisplayElement(parseString(xpp));
417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userSelected")) {
418        res.setUserSelectedElement(parseBoolean(xpp));
419      } else if (!parseElementContent(eventType, xpp, res))
420        unknownContent(xpp);
421      eventType = nextNoWhitespace(xpp);
422    }
423    next(xpp);
424    parseElementClose(res);
425    return res;
426  }
427
428  protected Range parseRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
429    Range res = new Range();
430    parseTypeAttributes(xpp, res);
431    next(xpp);
432    int eventType = nextNoWhitespace(xpp);
433    while (eventType != XmlPullParser.END_TAG) {
434      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
435        res.setLow(parseSimpleQuantity(xpp));
436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
437        res.setHigh(parseSimpleQuantity(xpp));
438      } else if (!parseElementContent(eventType, xpp, res))
439        unknownContent(xpp);
440      eventType = nextNoWhitespace(xpp);
441    }
442    next(xpp);
443    parseElementClose(res);
444    return res;
445  }
446
447  protected Quantity parseQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
448    Quantity res = new Quantity();
449    parseTypeAttributes(xpp, res);
450    next(xpp);
451    int eventType = nextNoWhitespace(xpp);
452    while (eventType != XmlPullParser.END_TAG) {
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        unknownContent(xpp);
465      eventType = nextNoWhitespace(xpp);
466    }
467    next(xpp);
468    parseElementClose(res);
469    return res;
470  }
471
472  protected Attachment parseAttachment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
473    Attachment res = new Attachment();
474    parseTypeAttributes(xpp, res);
475    next(xpp);
476    int eventType = nextNoWhitespace(xpp);
477    while (eventType != XmlPullParser.END_TAG) {
478      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
479        res.setContentTypeElement(parseCode(xpp));
480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
481        res.setLanguageElement(parseCode(xpp));
482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
483        res.setDataElement(parseBase64Binary(xpp));
484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
485        res.setUrlElement(parseUri(xpp));
486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("size")) {
487        res.setSizeElement(parseUnsignedInt(xpp));
488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hash")) {
489        res.setHashElement(parseBase64Binary(xpp));
490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
491        res.setTitleElement(parseString(xpp));
492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("creation")) {
493        res.setCreationElement(parseDateTime(xpp));
494      } else if (!parseElementContent(eventType, xpp, res))
495        unknownContent(xpp);
496      eventType = nextNoWhitespace(xpp);
497    }
498    next(xpp);
499    parseElementClose(res);
500    return res;
501  }
502
503  protected Ratio parseRatio(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
504    Ratio res = new Ratio();
505    parseTypeAttributes(xpp, res);
506    next(xpp);
507    int eventType = nextNoWhitespace(xpp);
508    while (eventType != XmlPullParser.END_TAG) {
509      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numerator")) {
510        res.setNumerator(parseQuantity(xpp));
511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
512        res.setDenominator(parseQuantity(xpp));
513      } else if (!parseElementContent(eventType, xpp, res))
514        unknownContent(xpp);
515      eventType = nextNoWhitespace(xpp);
516    }
517    next(xpp);
518    parseElementClose(res);
519    return res;
520  }
521
522  protected Annotation parseAnnotation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
523    Annotation res = new Annotation();
524    parseTypeAttributes(xpp, res);
525    next(xpp);
526    int eventType = nextNoWhitespace(xpp);
527    while (eventType != XmlPullParser.END_TAG) {
528      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "author")) {
529        res.setAuthor(parseType("author", xpp));
530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
531        res.setTimeElement(parseDateTime(xpp));
532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
533        res.setTextElement(parseString(xpp));
534      } else if (!parseElementContent(eventType, xpp, res))
535        unknownContent(xpp);
536      eventType = nextNoWhitespace(xpp);
537    }
538    next(xpp);
539    parseElementClose(res);
540    return res;
541  }
542
543  protected SampledData parseSampledData(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
544    SampledData res = new SampledData();
545    parseTypeAttributes(xpp, res);
546    next(xpp);
547    int eventType = nextNoWhitespace(xpp);
548    while (eventType != XmlPullParser.END_TAG) {
549      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
550        res.setOrigin(parseSimpleQuantity(xpp));
551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
552        res.setPeriodElement(parseDecimal(xpp));
553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
554        res.setFactorElement(parseDecimal(xpp));
555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowerLimit")) {
556        res.setLowerLimitElement(parseDecimal(xpp));
557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("upperLimit")) {
558        res.setUpperLimitElement(parseDecimal(xpp));
559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dimensions")) {
560        res.setDimensionsElement(parsePositiveInt(xpp));
561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
562        res.setDataElement(parseString(xpp));
563      } else if (!parseElementContent(eventType, xpp, res))
564        unknownContent(xpp);
565      eventType = nextNoWhitespace(xpp);
566    }
567    next(xpp);
568    parseElementClose(res);
569    return res;
570  }
571
572  protected Reference parseReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
573    Reference res = new Reference();
574    parseTypeAttributes(xpp, res);
575    next(xpp);
576    int eventType = nextNoWhitespace(xpp);
577    while (eventType != XmlPullParser.END_TAG) {
578      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
579        res.setReferenceElement(parseString(xpp));
580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
581        res.setDisplayElement(parseString(xpp));
582      } else if (!parseElementContent(eventType, xpp, res))
583        unknownContent(xpp);
584      eventType = nextNoWhitespace(xpp);
585    }
586    next(xpp);
587    parseElementClose(res);
588    return res;
589  }
590
591  protected CodeableConcept parseCodeableConcept(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
592    CodeableConcept res = new CodeableConcept();
593    parseTypeAttributes(xpp, res);
594    next(xpp);
595    int eventType = nextNoWhitespace(xpp);
596    while (eventType != XmlPullParser.END_TAG) {
597      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coding")) {
598        res.getCoding().add(parseCoding(xpp));
599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
600        res.setTextElement(parseString(xpp));
601      } else if (!parseElementContent(eventType, xpp, res))
602        unknownContent(xpp);
603      eventType = nextNoWhitespace(xpp);
604    }
605    next(xpp);
606    parseElementClose(res);
607    return res;
608  }
609
610  protected Identifier parseIdentifier(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
611    Identifier res = new Identifier();
612    parseTypeAttributes(xpp, res);
613    next(xpp);
614    int eventType = nextNoWhitespace(xpp);
615    while (eventType != XmlPullParser.END_TAG) {
616      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
617        res.setUseElement(parseEnumeration(xpp, Identifier.IdentifierUse.NULL, new Identifier.IdentifierUseEnumFactory()));
618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
619        res.setType(parseCodeableConcept(xpp));
620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
621        res.setSystemElement(parseUri(xpp));
622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
623        res.setValueElement(parseString(xpp));
624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
625        res.setPeriod(parsePeriod(xpp));
626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assigner")) {
627        res.setAssigner(parseReference(xpp));
628      } else if (!parseElementContent(eventType, xpp, res))
629        unknownContent(xpp);
630      eventType = nextNoWhitespace(xpp);
631    }
632    next(xpp);
633    parseElementClose(res);
634    return res;
635  }
636
637  protected Signature parseSignature(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
638    Signature res = new Signature();
639    parseTypeAttributes(xpp, res);
640    next(xpp);
641    int eventType = nextNoWhitespace(xpp);
642    while (eventType != XmlPullParser.END_TAG) {
643      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
644        res.getType().add(parseCoding(xpp));
645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
646        res.setWhenElement(parseInstant(xpp));
647      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "who")) {
648        res.setWho(parseType("who", xpp));
649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
650        res.setContentTypeElement(parseCode(xpp));
651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("blob")) {
652        res.setBlobElement(parseBase64Binary(xpp));
653      } else if (!parseElementContent(eventType, xpp, res))
654        unknownContent(xpp);
655      eventType = nextNoWhitespace(xpp);
656    }
657    next(xpp);
658    parseElementClose(res);
659    return res;
660  }
661
662  protected Age parseAge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
663    Age res = new Age();
664    parseElementAttributes(xpp, res);
665    next(xpp);
666    int eventType = nextNoWhitespace(xpp);
667    while (eventType != XmlPullParser.END_TAG) {
668      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
669        res.setValueElement(parseDecimal(xpp));
670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
671        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
673        res.setUnitElement(parseString(xpp));
674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
675        res.setSystemElement(parseUri(xpp));
676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
677        res.setCodeElement(parseCode(xpp));
678      } else if (!parseElementContent(eventType, xpp, res))
679        unknownContent(xpp);
680      eventType = nextNoWhitespace(xpp);
681    }
682    next(xpp);
683    parseElementClose(res);
684    return res;
685  }
686
687  protected Count parseCount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
688    Count res = new Count();
689    parseElementAttributes(xpp, res);
690    next(xpp);
691    int eventType = nextNoWhitespace(xpp);
692    while (eventType != XmlPullParser.END_TAG) {
693      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
694        res.setValueElement(parseDecimal(xpp));
695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
696        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
698        res.setUnitElement(parseString(xpp));
699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
700        res.setSystemElement(parseUri(xpp));
701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
702        res.setCodeElement(parseCode(xpp));
703      } else if (!parseElementContent(eventType, xpp, res))
704        unknownContent(xpp);
705      eventType = nextNoWhitespace(xpp);
706    }
707    next(xpp);
708    parseElementClose(res);
709    return res;
710  }
711
712  protected Money parseMoney(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
713    Money res = new Money();
714    parseElementAttributes(xpp, res);
715    next(xpp);
716    int eventType = nextNoWhitespace(xpp);
717    while (eventType != XmlPullParser.END_TAG) {
718      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
719        res.setValueElement(parseDecimal(xpp));
720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
721        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
723        res.setUnitElement(parseString(xpp));
724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
725        res.setSystemElement(parseUri(xpp));
726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
727        res.setCodeElement(parseCode(xpp));
728      } else if (!parseElementContent(eventType, xpp, res))
729        unknownContent(xpp);
730      eventType = nextNoWhitespace(xpp);
731    }
732    next(xpp);
733    parseElementClose(res);
734    return res;
735  }
736
737  protected Distance parseDistance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
738    Distance res = new Distance();
739    parseElementAttributes(xpp, res);
740    next(xpp);
741    int eventType = nextNoWhitespace(xpp);
742    while (eventType != XmlPullParser.END_TAG) {
743      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
744        res.setValueElement(parseDecimal(xpp));
745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
746        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
748        res.setUnitElement(parseString(xpp));
749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
750        res.setSystemElement(parseUri(xpp));
751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
752        res.setCodeElement(parseCode(xpp));
753      } else if (!parseElementContent(eventType, xpp, res))
754        unknownContent(xpp);
755      eventType = nextNoWhitespace(xpp);
756    }
757    next(xpp);
758    parseElementClose(res);
759    return res;
760  }
761
762  protected Duration parseDuration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
763    Duration res = new Duration();
764    parseElementAttributes(xpp, res);
765    next(xpp);
766    int eventType = nextNoWhitespace(xpp);
767    while (eventType != XmlPullParser.END_TAG) {
768      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
769        res.setValueElement(parseDecimal(xpp));
770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
771        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
773        res.setUnitElement(parseString(xpp));
774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
775        res.setSystemElement(parseUri(xpp));
776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
777        res.setCodeElement(parseCode(xpp));
778      } else if (!parseElementContent(eventType, xpp, res))
779        unknownContent(xpp);
780      eventType = nextNoWhitespace(xpp);
781    }
782    next(xpp);
783    parseElementClose(res);
784    return res;
785  }
786
787  protected SimpleQuantity parseSimpleQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
788    SimpleQuantity res = new SimpleQuantity();
789    parseElementAttributes(xpp, res);
790    next(xpp);
791    int eventType = nextNoWhitespace(xpp);
792    while (eventType != XmlPullParser.END_TAG) {
793      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
794        res.setValueElement(parseDecimal(xpp));
795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
796        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
798        res.setUnitElement(parseString(xpp));
799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
800        res.setSystemElement(parseUri(xpp));
801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
802        res.setCodeElement(parseCode(xpp));
803      } else if (!parseElementContent(eventType, xpp, res))
804        unknownContent(xpp);
805      eventType = nextNoWhitespace(xpp);
806    }
807    next(xpp);
808    parseElementClose(res);
809    return res;
810  }
811
812  protected TriggerDefinition parseTriggerDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
813    TriggerDefinition res = new TriggerDefinition();
814    parseElementAttributes(xpp, res);
815    next(xpp);
816    int eventType = nextNoWhitespace(xpp);
817    while (eventType != XmlPullParser.END_TAG) {
818      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
819        res.setTypeElement(parseEnumeration(xpp, TriggerDefinition.TriggerType.NULL, new TriggerDefinition.TriggerTypeEnumFactory()));
820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventName")) {
821        res.setEventNameElement(parseString(xpp));
822      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "eventTiming")) {
823        res.setEventTiming(parseType("eventTiming", xpp));
824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventData")) {
825        res.setEventData(parseDataRequirement(xpp));
826      } else if (!parseElementContent(eventType, xpp, res))
827        unknownContent(xpp);
828      eventType = nextNoWhitespace(xpp);
829    }
830    next(xpp);
831    parseElementClose(res);
832    return res;
833  }
834
835  protected ElementDefinition parseElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
836    ElementDefinition res = new ElementDefinition();
837    parseElementAttributes(xpp, res);
838    next(xpp);
839    int eventType = nextNoWhitespace(xpp);
840    while (eventType != XmlPullParser.END_TAG) {
841      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
842        res.setPathElement(parseString(xpp));
843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
844        res.getRepresentation().add(parseEnumeration(xpp, ElementDefinition.PropertyRepresentation.NULL, new ElementDefinition.PropertyRepresentationEnumFactory()));
845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
846        res.setNameElement(parseString(xpp));
847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
848        res.setLabelElement(parseString(xpp));
849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
850        res.getCode().add(parseCoding(xpp));
851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slicing")) {
852        res.setSlicing(parseElementDefinitionElementDefinitionSlicingComponent(xpp, res));
853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("short")) {
854        res.setShortElement(parseString(xpp));
855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
856        res.setDefinitionElement(parseMarkdown(xpp));
857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comments")) {
858        res.setCommentsElement(parseMarkdown(xpp));
859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
860        res.setRequirementsElement(parseMarkdown(xpp));
861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
862        res.getAlias().add(parseString(xpp));
863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
864        res.setMinElement(parseInteger(xpp));
865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
866        res.setMaxElement(parseString(xpp));
867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
868        res.setBase(parseElementDefinitionElementDefinitionBaseComponent(xpp, res));
869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentReference")) {
870        res.setContentReferenceElement(parseUri(xpp));
871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
872        res.getType().add(parseElementDefinitionTypeRefComponent(xpp, res));
873      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
874        res.setDefaultValue(parseType("defaultValue", xpp));
875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaningWhenMissing")) {
876        res.setMeaningWhenMissingElement(parseMarkdown(xpp));
877      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fixed")) {
878        res.setFixed(parseType("fixed", xpp));
879      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "pattern")) {
880        res.setPattern(parseType("pattern", xpp));
881      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
882        res.setExample(parseType("example", xpp));
883      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minValue")) {
884        res.setMinValue(parseType("minValue", xpp));
885      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "maxValue")) {
886        res.setMaxValue(parseType("maxValue", xpp));
887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
888        res.setMaxLengthElement(parseInteger(xpp));
889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
890        res.getCondition().add(parseId(xpp));
891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constraint")) {
892        res.getConstraint().add(parseElementDefinitionElementDefinitionConstraintComponent(xpp, res));
893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
894        res.setMustSupportElement(parseBoolean(xpp));
895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifier")) {
896        res.setIsModifierElement(parseBoolean(xpp));
897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSummary")) {
898        res.setIsSummaryElement(parseBoolean(xpp));
899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
900        res.setBinding(parseElementDefinitionElementDefinitionBindingComponent(xpp, res));
901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
902        res.getMapping().add(parseElementDefinitionElementDefinitionMappingComponent(xpp, res));
903      } else if (!parseElementContent(eventType, xpp, res))
904        unknownContent(xpp);
905      eventType = nextNoWhitespace(xpp);
906    }
907    next(xpp);
908    parseElementClose(res);
909    return res;
910  }
911
912  protected ElementDefinition.ElementDefinitionSlicingComponent parseElementDefinitionElementDefinitionSlicingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
913    ElementDefinition.ElementDefinitionSlicingComponent res = new ElementDefinition.ElementDefinitionSlicingComponent();
914    parseElementAttributes(xpp, res);
915    next(xpp);
916    int eventType = nextNoWhitespace(xpp);
917    while (eventType != XmlPullParser.END_TAG) {
918      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("discriminator")) {
919        res.getDiscriminator().add(parseString(xpp));
920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
921        res.setDescriptionElement(parseString(xpp));
922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ordered")) {
923        res.setOrderedElement(parseBoolean(xpp));
924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rules")) {
925        res.setRulesElement(parseEnumeration(xpp, ElementDefinition.SlicingRules.NULL, new ElementDefinition.SlicingRulesEnumFactory()));
926      } else if (!parseElementContent(eventType, xpp, res))
927        unknownContent(xpp);
928      eventType = nextNoWhitespace(xpp);
929    }
930    next(xpp);
931    parseElementClose(res);
932    return res;
933  }
934
935  protected ElementDefinition.ElementDefinitionBaseComponent parseElementDefinitionElementDefinitionBaseComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
936    ElementDefinition.ElementDefinitionBaseComponent res = new ElementDefinition.ElementDefinitionBaseComponent();
937    parseElementAttributes(xpp, res);
938    next(xpp);
939    int eventType = nextNoWhitespace(xpp);
940    while (eventType != XmlPullParser.END_TAG) {
941      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
942        res.setPathElement(parseString(xpp));
943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
944        res.setMinElement(parseInteger(xpp));
945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
946        res.setMaxElement(parseString(xpp));
947      } else if (!parseElementContent(eventType, xpp, res))
948        unknownContent(xpp);
949      eventType = nextNoWhitespace(xpp);
950    }
951    next(xpp);
952    parseElementClose(res);
953    return res;
954  }
955
956  protected ElementDefinition.TypeRefComponent parseElementDefinitionTypeRefComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
957    ElementDefinition.TypeRefComponent res = new ElementDefinition.TypeRefComponent();
958    parseElementAttributes(xpp, res);
959    next(xpp);
960    int eventType = nextNoWhitespace(xpp);
961    while (eventType != XmlPullParser.END_TAG) {
962      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
963        res.setCodeElement(parseCode(xpp));
964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
965        res.getProfile().add(parseUri(xpp));
966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregation")) {
967        res.getAggregation().add(parseEnumeration(xpp, ElementDefinition.AggregationMode.NULL, new ElementDefinition.AggregationModeEnumFactory()));
968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
969        res.setVersioningElement(parseEnumeration(xpp, ElementDefinition.ReferenceVersionRules.NULL, new ElementDefinition.ReferenceVersionRulesEnumFactory()));
970      } else if (!parseElementContent(eventType, xpp, res))
971        unknownContent(xpp);
972      eventType = nextNoWhitespace(xpp);
973    }
974    next(xpp);
975    parseElementClose(res);
976    return res;
977  }
978
979  protected ElementDefinition.ElementDefinitionConstraintComponent parseElementDefinitionElementDefinitionConstraintComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
980    ElementDefinition.ElementDefinitionConstraintComponent res = new ElementDefinition.ElementDefinitionConstraintComponent();
981    parseElementAttributes(xpp, res);
982    next(xpp);
983    int eventType = nextNoWhitespace(xpp);
984    while (eventType != XmlPullParser.END_TAG) {
985      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
986        res.setKeyElement(parseId(xpp));
987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
988        res.setRequirementsElement(parseString(xpp));
989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
990        res.setSeverityElement(parseEnumeration(xpp, ElementDefinition.ConstraintSeverity.NULL, new ElementDefinition.ConstraintSeverityEnumFactory()));
991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("human")) {
992        res.setHumanElement(parseString(xpp));
993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
994        res.setExpressionElement(parseString(xpp));
995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
996        res.setXpathElement(parseString(xpp));
997      } else if (!parseElementContent(eventType, xpp, res))
998        unknownContent(xpp);
999      eventType = nextNoWhitespace(xpp);
1000    }
1001    next(xpp);
1002    parseElementClose(res);
1003    return res;
1004  }
1005
1006  protected ElementDefinition.ElementDefinitionBindingComponent parseElementDefinitionElementDefinitionBindingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1007    ElementDefinition.ElementDefinitionBindingComponent res = new ElementDefinition.ElementDefinitionBindingComponent();
1008    parseElementAttributes(xpp, res);
1009    next(xpp);
1010    int eventType = nextNoWhitespace(xpp);
1011    while (eventType != XmlPullParser.END_TAG) {
1012      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
1013        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
1014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1015        res.setDescriptionElement(parseString(xpp));
1016      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
1017        res.setValueSet(parseType("valueSet", xpp));
1018      } else if (!parseElementContent(eventType, xpp, res))
1019        unknownContent(xpp);
1020      eventType = nextNoWhitespace(xpp);
1021    }
1022    next(xpp);
1023    parseElementClose(res);
1024    return res;
1025  }
1026
1027  protected ElementDefinition.ElementDefinitionMappingComponent parseElementDefinitionElementDefinitionMappingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1028    ElementDefinition.ElementDefinitionMappingComponent res = new ElementDefinition.ElementDefinitionMappingComponent();
1029    parseElementAttributes(xpp, res);
1030    next(xpp);
1031    int eventType = nextNoWhitespace(xpp);
1032    while (eventType != XmlPullParser.END_TAG) {
1033      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
1034        res.setIdentityElement(parseId(xpp));
1035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1036        res.setLanguageElement(parseCode(xpp));
1037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("map")) {
1038        res.setMapElement(parseString(xpp));
1039      } else if (!parseElementContent(eventType, xpp, res))
1040        unknownContent(xpp);
1041      eventType = nextNoWhitespace(xpp);
1042    }
1043    next(xpp);
1044    parseElementClose(res);
1045    return res;
1046  }
1047
1048  protected Timing parseTiming(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1049    Timing res = new Timing();
1050    parseElementAttributes(xpp, res);
1051    next(xpp);
1052    int eventType = nextNoWhitespace(xpp);
1053    while (eventType != XmlPullParser.END_TAG) {
1054      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
1055        res.getEvent().add(parseDateTime(xpp));
1056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
1057        res.setRepeat(parseTimingTimingRepeatComponent(xpp, res));
1058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1059        res.setCode(parseCodeableConcept(xpp));
1060      } else if (!parseElementContent(eventType, xpp, res))
1061        unknownContent(xpp);
1062      eventType = nextNoWhitespace(xpp);
1063    }
1064    next(xpp);
1065    parseElementClose(res);
1066    return res;
1067  }
1068
1069  protected Timing.TimingRepeatComponent parseTimingTimingRepeatComponent(XmlPullParser xpp, Timing owner) throws XmlPullParserException, IOException, FHIRFormatError {
1070    Timing.TimingRepeatComponent res = new Timing.TimingRepeatComponent();
1071    parseElementAttributes(xpp, res);
1072    next(xpp);
1073    int eventType = nextNoWhitespace(xpp);
1074    while (eventType != XmlPullParser.END_TAG) {
1075      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bounds")) {
1076        res.setBounds(parseType("bounds", xpp));
1077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
1078        res.setCountElement(parseInteger(xpp));
1079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countMax")) {
1080        res.setCountMaxElement(parseInteger(xpp));
1081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
1082        res.setDurationElement(parseDecimal(xpp));
1083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationMax")) {
1084        res.setDurationMaxElement(parseDecimal(xpp));
1085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationUnit")) {
1086        res.setDurationUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
1088        res.setFrequencyElement(parseInteger(xpp));
1089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyMax")) {
1090        res.setFrequencyMaxElement(parseInteger(xpp));
1091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1092        res.setPeriodElement(parseDecimal(xpp));
1093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodMax")) {
1094        res.setPeriodMaxElement(parseDecimal(xpp));
1095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodUnit")) {
1096        res.setPeriodUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1098        res.setWhenElement(parseEnumeration(xpp, Timing.EventTiming.NULL, new Timing.EventTimingEnumFactory()));
1099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
1100        res.setOffsetElement(parseUnsignedInt(xpp));
1101      } else if (!parseElementContent(eventType, xpp, res))
1102        unknownContent(xpp);
1103      eventType = nextNoWhitespace(xpp);
1104    }
1105    next(xpp);
1106    parseElementClose(res);
1107    return res;
1108  }
1109
1110  protected ModuleMetadata parseModuleMetadata(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1111    ModuleMetadata res = new ModuleMetadata();
1112    parseElementAttributes(xpp, res);
1113    next(xpp);
1114    int eventType = nextNoWhitespace(xpp);
1115    while (eventType != XmlPullParser.END_TAG) {
1116      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1117        res.setUrlElement(parseUri(xpp));
1118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1119        res.getIdentifier().add(parseIdentifier(xpp));
1120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
1121        res.setVersionElement(parseString(xpp));
1122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1123        res.setNameElement(parseString(xpp));
1124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
1125        res.setTitleElement(parseString(xpp));
1126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1127        res.setTypeElement(parseEnumeration(xpp, ModuleMetadata.ModuleMetadataType.NULL, new ModuleMetadata.ModuleMetadataTypeEnumFactory()));
1128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1129        res.setStatusElement(parseEnumeration(xpp, ModuleMetadata.ModuleMetadataStatus.NULL, new ModuleMetadata.ModuleMetadataStatusEnumFactory()));
1130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
1131        res.setExperimentalElement(parseBoolean(xpp));
1132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1133        res.setDescriptionElement(parseString(xpp));
1134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
1135        res.setPurposeElement(parseString(xpp));
1136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
1137        res.setUsageElement(parseString(xpp));
1138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDate")) {
1139        res.setPublicationDateElement(parseDate(xpp));
1140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
1141        res.setLastReviewDateElement(parseDate(xpp));
1142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
1143        res.setEffectivePeriod(parsePeriod(xpp));
1144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
1145        res.getCoverage().add(parseModuleMetadataModuleMetadataCoverageComponent(xpp, res));
1146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
1147        res.getTopic().add(parseCodeableConcept(xpp));
1148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
1149        res.getContributor().add(parseModuleMetadataModuleMetadataContributorComponent(xpp, res));
1150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
1151        res.setPublisherElement(parseString(xpp));
1152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
1153        res.getContact().add(parseModuleMetadataModuleMetadataContactComponent(xpp, res));
1154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
1155        res.setCopyrightElement(parseString(xpp));
1156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedResource")) {
1157        res.getRelatedResource().add(parseModuleMetadataModuleMetadataRelatedResourceComponent(xpp, res));
1158      } else if (!parseElementContent(eventType, xpp, res))
1159        unknownContent(xpp);
1160      eventType = nextNoWhitespace(xpp);
1161    }
1162    next(xpp);
1163    parseElementClose(res);
1164    return res;
1165  }
1166
1167  protected ModuleMetadata.ModuleMetadataCoverageComponent parseModuleMetadataModuleMetadataCoverageComponent(XmlPullParser xpp, ModuleMetadata owner) throws XmlPullParserException, IOException, FHIRFormatError {
1168    ModuleMetadata.ModuleMetadataCoverageComponent res = new ModuleMetadata.ModuleMetadataCoverageComponent();
1169    parseElementAttributes(xpp, res);
1170    next(xpp);
1171    int eventType = nextNoWhitespace(xpp);
1172    while (eventType != XmlPullParser.END_TAG) {
1173      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
1174        res.setFocus(parseCoding(xpp));
1175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1176        res.setValue(parseCodeableConcept(xpp));
1177      } else if (!parseElementContent(eventType, xpp, res))
1178        unknownContent(xpp);
1179      eventType = nextNoWhitespace(xpp);
1180    }
1181    next(xpp);
1182    parseElementClose(res);
1183    return res;
1184  }
1185
1186  protected ModuleMetadata.ModuleMetadataContributorComponent parseModuleMetadataModuleMetadataContributorComponent(XmlPullParser xpp, ModuleMetadata owner) throws XmlPullParserException, IOException, FHIRFormatError {
1187    ModuleMetadata.ModuleMetadataContributorComponent res = new ModuleMetadata.ModuleMetadataContributorComponent();
1188    parseElementAttributes(xpp, res);
1189    next(xpp);
1190    int eventType = nextNoWhitespace(xpp);
1191    while (eventType != XmlPullParser.END_TAG) {
1192      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1193        res.setTypeElement(parseEnumeration(xpp, ModuleMetadata.ModuleMetadataContributorType.NULL, new ModuleMetadata.ModuleMetadataContributorTypeEnumFactory()));
1194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1195        res.setNameElement(parseString(xpp));
1196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
1197        res.getContact().add(parseModuleMetadataModuleMetadataContributorContactComponent(xpp, owner));
1198      } else if (!parseElementContent(eventType, xpp, res))
1199        unknownContent(xpp);
1200      eventType = nextNoWhitespace(xpp);
1201    }
1202    next(xpp);
1203    parseElementClose(res);
1204    return res;
1205  }
1206
1207  protected ModuleMetadata.ModuleMetadataContributorContactComponent parseModuleMetadataModuleMetadataContributorContactComponent(XmlPullParser xpp, ModuleMetadata owner) throws XmlPullParserException, IOException, FHIRFormatError {
1208    ModuleMetadata.ModuleMetadataContributorContactComponent res = new ModuleMetadata.ModuleMetadataContributorContactComponent();
1209    parseElementAttributes(xpp, res);
1210    next(xpp);
1211    int eventType = nextNoWhitespace(xpp);
1212    while (eventType != XmlPullParser.END_TAG) {
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        unknownContent(xpp);
1219      eventType = nextNoWhitespace(xpp);
1220    }
1221    next(xpp);
1222    parseElementClose(res);
1223    return res;
1224  }
1225
1226  protected ModuleMetadata.ModuleMetadataContactComponent parseModuleMetadataModuleMetadataContactComponent(XmlPullParser xpp, ModuleMetadata owner) throws XmlPullParserException, IOException, FHIRFormatError {
1227    ModuleMetadata.ModuleMetadataContactComponent res = new ModuleMetadata.ModuleMetadataContactComponent();
1228    parseElementAttributes(xpp, res);
1229    next(xpp);
1230    int eventType = nextNoWhitespace(xpp);
1231    while (eventType != XmlPullParser.END_TAG) {
1232      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1233        res.setNameElement(parseString(xpp));
1234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
1235        res.getTelecom().add(parseContactPoint(xpp));
1236      } else if (!parseElementContent(eventType, xpp, res))
1237        unknownContent(xpp);
1238      eventType = nextNoWhitespace(xpp);
1239    }
1240    next(xpp);
1241    parseElementClose(res);
1242    return res;
1243  }
1244
1245  protected ModuleMetadata.ModuleMetadataRelatedResourceComponent parseModuleMetadataModuleMetadataRelatedResourceComponent(XmlPullParser xpp, ModuleMetadata owner) throws XmlPullParserException, IOException, FHIRFormatError {
1246    ModuleMetadata.ModuleMetadataRelatedResourceComponent res = new ModuleMetadata.ModuleMetadataRelatedResourceComponent();
1247    parseElementAttributes(xpp, res);
1248    next(xpp);
1249    int eventType = nextNoWhitespace(xpp);
1250    while (eventType != XmlPullParser.END_TAG) {
1251      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1252        res.setTypeElement(parseEnumeration(xpp, ModuleMetadata.ModuleMetadataResourceType.NULL, new ModuleMetadata.ModuleMetadataResourceTypeEnumFactory()));
1253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
1254        res.setDocument(parseAttachment(xpp));
1255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1256        res.setResource(parseReference(xpp));
1257      } else if (!parseElementContent(eventType, xpp, res))
1258        unknownContent(xpp);
1259      eventType = nextNoWhitespace(xpp);
1260    }
1261    next(xpp);
1262    parseElementClose(res);
1263    return res;
1264  }
1265
1266  protected ActionDefinition parseActionDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1267    ActionDefinition res = new ActionDefinition();
1268    parseElementAttributes(xpp, res);
1269    next(xpp);
1270    int eventType = nextNoWhitespace(xpp);
1271    while (eventType != XmlPullParser.END_TAG) {
1272      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionIdentifier")) {
1273        res.setActionIdentifier(parseIdentifier(xpp));
1274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1275        res.setLabelElement(parseString(xpp));
1276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
1277        res.setTitleElement(parseString(xpp));
1278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1279        res.setDescriptionElement(parseString(xpp));
1280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
1281        res.setTextEquivalentElement(parseString(xpp));
1282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
1283        res.getConcept().add(parseCodeableConcept(xpp));
1284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingEvidence")) {
1285        res.getSupportingEvidence().add(parseAttachment(xpp));
1286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
1287        res.getDocumentation().add(parseAttachment(xpp));
1288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
1289        res.setRelatedAction(parseActionDefinitionActionDefinitionRelatedActionComponent(xpp, res));
1290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantType")) {
1291        res.getParticipantType().add(parseEnumeration(xpp, ActionDefinition.ParticipantType.NULL, new ActionDefinition.ParticipantTypeEnumFactory()));
1292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1293        res.setTypeElement(parseEnumeration(xpp, ActionDefinition.ActionType.NULL, new ActionDefinition.ActionTypeEnumFactory()));
1294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("behavior")) {
1295        res.getBehavior().add(parseActionDefinitionActionDefinitionBehaviorComponent(xpp, res));
1296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1297        res.setResource(parseReference(xpp));
1298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("customization")) {
1299        res.getCustomization().add(parseActionDefinitionActionDefinitionCustomizationComponent(xpp, res));
1300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
1301        res.getAction().add(parseActionDefinition(xpp));
1302      } else if (!parseElementContent(eventType, xpp, res))
1303        unknownContent(xpp);
1304      eventType = nextNoWhitespace(xpp);
1305    }
1306    next(xpp);
1307    parseElementClose(res);
1308    return res;
1309  }
1310
1311  protected ActionDefinition.ActionDefinitionRelatedActionComponent parseActionDefinitionActionDefinitionRelatedActionComponent(XmlPullParser xpp, ActionDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1312    ActionDefinition.ActionDefinitionRelatedActionComponent res = new ActionDefinition.ActionDefinitionRelatedActionComponent();
1313    parseElementAttributes(xpp, res);
1314    next(xpp);
1315    int eventType = nextNoWhitespace(xpp);
1316    while (eventType != XmlPullParser.END_TAG) {
1317      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionIdentifier")) {
1318        res.setActionIdentifier(parseIdentifier(xpp));
1319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
1320        res.setRelationshipElement(parseEnumeration(xpp, ActionDefinition.ActionRelationshipType.NULL, new ActionDefinition.ActionRelationshipTypeEnumFactory()));
1321      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
1322        res.setOffset(parseType("offset", xpp));
1323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("anchor")) {
1324        res.setAnchorElement(parseEnumeration(xpp, ActionDefinition.ActionRelationshipAnchor.NULL, new ActionDefinition.ActionRelationshipAnchorEnumFactory()));
1325      } else if (!parseElementContent(eventType, xpp, res))
1326        unknownContent(xpp);
1327      eventType = nextNoWhitespace(xpp);
1328    }
1329    next(xpp);
1330    parseElementClose(res);
1331    return res;
1332  }
1333
1334  protected ActionDefinition.ActionDefinitionBehaviorComponent parseActionDefinitionActionDefinitionBehaviorComponent(XmlPullParser xpp, ActionDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1335    ActionDefinition.ActionDefinitionBehaviorComponent res = new ActionDefinition.ActionDefinitionBehaviorComponent();
1336    parseElementAttributes(xpp, res);
1337    next(xpp);
1338    int eventType = nextNoWhitespace(xpp);
1339    while (eventType != XmlPullParser.END_TAG) {
1340      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1341        res.setType(parseCoding(xpp));
1342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1343        res.setValue(parseCoding(xpp));
1344      } else if (!parseElementContent(eventType, xpp, res))
1345        unknownContent(xpp);
1346      eventType = nextNoWhitespace(xpp);
1347    }
1348    next(xpp);
1349    parseElementClose(res);
1350    return res;
1351  }
1352
1353  protected ActionDefinition.ActionDefinitionCustomizationComponent parseActionDefinitionActionDefinitionCustomizationComponent(XmlPullParser xpp, ActionDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1354    ActionDefinition.ActionDefinitionCustomizationComponent res = new ActionDefinition.ActionDefinitionCustomizationComponent();
1355    parseElementAttributes(xpp, res);
1356    next(xpp);
1357    int eventType = nextNoWhitespace(xpp);
1358    while (eventType != XmlPullParser.END_TAG) {
1359      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1360        res.setPathElement(parseString(xpp));
1361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1362        res.setExpressionElement(parseString(xpp));
1363      } else if (!parseElementContent(eventType, xpp, res))
1364        unknownContent(xpp);
1365      eventType = nextNoWhitespace(xpp);
1366    }
1367    next(xpp);
1368    parseElementClose(res);
1369    return res;
1370  }
1371
1372  protected Address parseAddress(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1373    Address res = new Address();
1374    parseElementAttributes(xpp, res);
1375    next(xpp);
1376    int eventType = nextNoWhitespace(xpp);
1377    while (eventType != XmlPullParser.END_TAG) {
1378      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1379        res.setUseElement(parseEnumeration(xpp, Address.AddressUse.NULL, new Address.AddressUseEnumFactory()));
1380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1381        res.setTypeElement(parseEnumeration(xpp, Address.AddressType.NULL, new Address.AddressTypeEnumFactory()));
1382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1383        res.setTextElement(parseString(xpp));
1384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("line")) {
1385        res.getLine().add(parseString(xpp));
1386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("city")) {
1387        res.setCityElement(parseString(xpp));
1388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("district")) {
1389        res.setDistrictElement(parseString(xpp));
1390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
1391        res.setStateElement(parseString(xpp));
1392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postalCode")) {
1393        res.setPostalCodeElement(parseString(xpp));
1394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
1395        res.setCountryElement(parseString(xpp));
1396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1397        res.setPeriod(parsePeriod(xpp));
1398      } else if (!parseElementContent(eventType, xpp, res))
1399        unknownContent(xpp);
1400      eventType = nextNoWhitespace(xpp);
1401    }
1402    next(xpp);
1403    parseElementClose(res);
1404    return res;
1405  }
1406
1407  protected HumanName parseHumanName(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1408    HumanName res = new HumanName();
1409    parseElementAttributes(xpp, res);
1410    next(xpp);
1411    int eventType = nextNoWhitespace(xpp);
1412    while (eventType != XmlPullParser.END_TAG) {
1413      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1414        res.setUseElement(parseEnumeration(xpp, HumanName.NameUse.NULL, new HumanName.NameUseEnumFactory()));
1415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1416        res.setTextElement(parseString(xpp));
1417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
1418        res.getFamily().add(parseString(xpp));
1419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("given")) {
1420        res.getGiven().add(parseString(xpp));
1421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
1422        res.getPrefix().add(parseString(xpp));
1423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suffix")) {
1424        res.getSuffix().add(parseString(xpp));
1425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1426        res.setPeriod(parsePeriod(xpp));
1427      } else if (!parseElementContent(eventType, xpp, res))
1428        unknownContent(xpp);
1429      eventType = nextNoWhitespace(xpp);
1430    }
1431    next(xpp);
1432    parseElementClose(res);
1433    return res;
1434  }
1435
1436  protected DataRequirement parseDataRequirement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1437    DataRequirement res = new DataRequirement();
1438    parseElementAttributes(xpp, res);
1439    next(xpp);
1440    int eventType = nextNoWhitespace(xpp);
1441    while (eventType != XmlPullParser.END_TAG) {
1442      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1443        res.setTypeElement(parseCode(xpp));
1444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1445        res.setProfile(parseReference(xpp));
1446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1447        res.getMustSupport().add(parseString(xpp));
1448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeFilter")) {
1449        res.getCodeFilter().add(parseDataRequirementDataRequirementCodeFilterComponent(xpp, res));
1450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateFilter")) {
1451        res.getDateFilter().add(parseDataRequirementDataRequirementDateFilterComponent(xpp, res));
1452      } else if (!parseElementContent(eventType, xpp, res))
1453        unknownContent(xpp);
1454      eventType = nextNoWhitespace(xpp);
1455    }
1456    next(xpp);
1457    parseElementClose(res);
1458    return res;
1459  }
1460
1461  protected DataRequirement.DataRequirementCodeFilterComponent parseDataRequirementDataRequirementCodeFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
1462    DataRequirement.DataRequirementCodeFilterComponent res = new DataRequirement.DataRequirementCodeFilterComponent();
1463    parseElementAttributes(xpp, res);
1464    next(xpp);
1465    int eventType = nextNoWhitespace(xpp);
1466    while (eventType != XmlPullParser.END_TAG) {
1467      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1468        res.setPathElement(parseString(xpp));
1469      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
1470        res.setValueSet(parseType("valueSet", xpp));
1471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
1472        res.getValueCode().add(parseCode(xpp));
1473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCoding")) {
1474        res.getValueCoding().add(parseCoding(xpp));
1475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCodeableConcept")) {
1476        res.getValueCodeableConcept().add(parseCodeableConcept(xpp));
1477      } else if (!parseElementContent(eventType, xpp, res))
1478        unknownContent(xpp);
1479      eventType = nextNoWhitespace(xpp);
1480    }
1481    next(xpp);
1482    parseElementClose(res);
1483    return res;
1484  }
1485
1486  protected DataRequirement.DataRequirementDateFilterComponent parseDataRequirementDataRequirementDateFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
1487    DataRequirement.DataRequirementDateFilterComponent res = new DataRequirement.DataRequirementDateFilterComponent();
1488    parseElementAttributes(xpp, res);
1489    next(xpp);
1490    int eventType = nextNoWhitespace(xpp);
1491    while (eventType != XmlPullParser.END_TAG) {
1492      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1493        res.setPathElement(parseString(xpp));
1494      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1495        res.setValue(parseType("value", xpp));
1496      } else if (!parseElementContent(eventType, xpp, res))
1497        unknownContent(xpp);
1498      eventType = nextNoWhitespace(xpp);
1499    }
1500    next(xpp);
1501    parseElementClose(res);
1502    return res;
1503  }
1504
1505  protected Meta parseMeta(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1506    Meta res = new Meta();
1507    parseElementAttributes(xpp, res);
1508    next(xpp);
1509    int eventType = nextNoWhitespace(xpp);
1510    while (eventType != XmlPullParser.END_TAG) {
1511      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
1512        res.setVersionIdElement(parseId(xpp));
1513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
1514        res.setLastUpdatedElement(parseInstant(xpp));
1515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1516        res.getProfile().add(parseUri(xpp));
1517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
1518        res.getSecurity().add(parseCoding(xpp));
1519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
1520        res.getTag().add(parseCoding(xpp));
1521      } else if (!parseElementContent(eventType, xpp, res))
1522        unknownContent(xpp);
1523      eventType = nextNoWhitespace(xpp);
1524    }
1525    next(xpp);
1526    parseElementClose(res);
1527    return res;
1528  }
1529
1530  protected ParameterDefinition parseParameterDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1531    ParameterDefinition res = new ParameterDefinition();
1532    parseElementAttributes(xpp, res);
1533    next(xpp);
1534    int eventType = nextNoWhitespace(xpp);
1535    while (eventType != XmlPullParser.END_TAG) {
1536      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1537        res.setNameElement(parseCode(xpp));
1538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1539        res.setUseElement(parseCode(xpp));
1540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1541        res.setMinElement(parseInteger(xpp));
1542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1543        res.setMaxElement(parseString(xpp));
1544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
1545        res.setDocumentationElement(parseString(xpp));
1546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1547        res.setTypeElement(parseCode(xpp));
1548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1549        res.setProfile(parseReference(xpp));
1550      } else if (!parseElementContent(eventType, xpp, res))
1551        unknownContent(xpp);
1552      eventType = nextNoWhitespace(xpp);
1553    }
1554    next(xpp);
1555    parseElementClose(res);
1556    return res;
1557  }
1558
1559  protected ContactPoint parseContactPoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1560    ContactPoint res = new ContactPoint();
1561    parseElementAttributes(xpp, res);
1562    next(xpp);
1563    int eventType = nextNoWhitespace(xpp);
1564    while (eventType != XmlPullParser.END_TAG) {
1565      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1566        res.setSystemElement(parseEnumeration(xpp, ContactPoint.ContactPointSystem.NULL, new ContactPoint.ContactPointSystemEnumFactory()));
1567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1568        res.setValueElement(parseString(xpp));
1569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1570        res.setUseElement(parseEnumeration(xpp, ContactPoint.ContactPointUse.NULL, new ContactPoint.ContactPointUseEnumFactory()));
1571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
1572        res.setRankElement(parsePositiveInt(xpp));
1573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1574        res.setPeriod(parsePeriod(xpp));
1575      } else if (!parseElementContent(eventType, xpp, res))
1576        unknownContent(xpp);
1577      eventType = nextNoWhitespace(xpp);
1578    }
1579    next(xpp);
1580    parseElementClose(res);
1581    return res;
1582  }
1583
1584  protected Parameters parseParameters(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1585    Parameters res = new Parameters();
1586    parseResourceAttributes(xpp, res);
1587    next(xpp);
1588    int eventType = nextNoWhitespace(xpp);
1589    while (eventType != XmlPullParser.END_TAG) {
1590      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
1591        res.getParameter().add(parseParametersParametersParameterComponent(xpp, res));
1592      } else if (!parseResourceContent(eventType, xpp, res))
1593        unknownContent(xpp);
1594      eventType = nextNoWhitespace(xpp);
1595    }
1596    next(xpp);
1597    parseElementClose(res);
1598    return res;
1599  }
1600
1601  protected Parameters.ParametersParameterComponent parseParametersParametersParameterComponent(XmlPullParser xpp, Parameters owner) throws XmlPullParserException, IOException, FHIRFormatError {
1602    Parameters.ParametersParameterComponent res = new Parameters.ParametersParameterComponent();
1603    parseBackboneAttributes(xpp, res);
1604    next(xpp);
1605    int eventType = nextNoWhitespace(xpp);
1606    while (eventType != XmlPullParser.END_TAG) {
1607      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1608        res.setNameElement(parseString(xpp));
1609      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1610        res.setValue(parseType("value", xpp));
1611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1612        res.setResource(parseResourceContained(xpp));
1613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
1614        res.getPart().add(parseParametersParametersParameterComponent(xpp, owner));
1615      } else if (!parseBackboneContent(eventType, xpp, res))
1616        unknownContent(xpp);
1617      eventType = nextNoWhitespace(xpp);
1618    }
1619    next(xpp);
1620    parseElementClose(res);
1621    return res;
1622  }
1623
1624  protected void parseResourceAttributes(XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
1625    if (!comments.isEmpty()) {
1626      res.getFormatCommentsPre().addAll(comments);
1627      comments.clear();
1628     }
1629  }
1630
1631  protected boolean parseResourceContent(int eventType, XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
1632      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("id")) {
1633        res.setIdElement(parseId(xpp));
1634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meta")) {
1635        res.setMeta(parseMeta(xpp));
1636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicitRules")) {
1637        res.setImplicitRulesElement(parseUri(xpp));
1638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1639        res.setLanguageElement(parseCode(xpp));
1640    } else
1641        return false;
1642    return true;
1643  }
1644
1645  protected void parseDomainResourceAttributes(XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
1646    parseResourceAttributes(xpp, res);
1647  }
1648
1649  protected boolean parseDomainResourceContent(int eventType, XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
1650      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1651        res.setText(parseNarrative(xpp));
1652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contained")) {
1653        res.getContained().add(parseResourceContained(xpp));
1654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
1655        res.getExtension().add(parseExtension(xpp));
1656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
1657        res.getModifierExtension().add(parseExtension(xpp));
1658    } else
1659    return parseResourceContent(eventType, xpp, res);
1660    return true;
1661  }
1662
1663  protected Account parseAccount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1664    Account res = new Account();
1665    parseDomainResourceAttributes(xpp, res);
1666    next(xpp);
1667    int eventType = nextNoWhitespace(xpp);
1668    while (eventType != XmlPullParser.END_TAG) {
1669      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1670        res.getIdentifier().add(parseIdentifier(xpp));
1671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1672        res.setNameElement(parseString(xpp));
1673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1674        res.setType(parseCodeableConcept(xpp));
1675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1676        res.setStatusElement(parseEnumeration(xpp, Account.AccountStatus.NULL, new Account.AccountStatusEnumFactory()));
1677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activePeriod")) {
1678        res.setActivePeriod(parsePeriod(xpp));
1679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currency")) {
1680        res.setCurrency(parseCoding(xpp));
1681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("balance")) {
1682        res.setBalance(parseMoney(xpp));
1683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coveragePeriod")) {
1684        res.setCoveragePeriod(parsePeriod(xpp));
1685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
1686        res.setSubject(parseReference(xpp));
1687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
1688        res.setOwner(parseReference(xpp));
1689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1690        res.setDescriptionElement(parseString(xpp));
1691      } else if (!parseDomainResourceContent(eventType, xpp, res))
1692        unknownContent(xpp);
1693      eventType = nextNoWhitespace(xpp);
1694    }
1695    next(xpp);
1696    parseElementClose(res);
1697    return res;
1698  }
1699
1700  protected AllergyIntolerance parseAllergyIntolerance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1701    AllergyIntolerance res = new AllergyIntolerance();
1702    parseDomainResourceAttributes(xpp, res);
1703    next(xpp);
1704    int eventType = nextNoWhitespace(xpp);
1705    while (eventType != XmlPullParser.END_TAG) {
1706      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1707        res.getIdentifier().add(parseIdentifier(xpp));
1708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1709        res.setStatusElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceStatus.NULL, new AllergyIntolerance.AllergyIntoleranceStatusEnumFactory()));
1710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1711        res.setTypeElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceType.NULL, new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory()));
1712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
1713        res.setCategoryElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCategory.NULL, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory()));
1714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticality")) {
1715        res.setCriticalityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCriticality.NULL, new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory()));
1716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
1717        res.setSubstance(parseCodeableConcept(xpp));
1718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
1719        res.setPatient(parseReference(xpp));
1720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
1721        res.setRecordedDateElement(parseDateTime(xpp));
1722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
1723        res.setRecorder(parseReference(xpp));
1724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reporter")) {
1725        res.setReporter(parseReference(xpp));
1726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
1727        res.setOnsetElement(parseDateTime(xpp));
1728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastOccurence")) {
1729        res.setLastOccurenceElement(parseDateTime(xpp));
1730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
1731        res.getNote().add(parseAnnotation(xpp));
1732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
1733        res.getReaction().add(parseAllergyIntoleranceAllergyIntoleranceReactionComponent(xpp, res));
1734      } else if (!parseDomainResourceContent(eventType, xpp, res))
1735        unknownContent(xpp);
1736      eventType = nextNoWhitespace(xpp);
1737    }
1738    next(xpp);
1739    parseElementClose(res);
1740    return res;
1741  }
1742
1743  protected AllergyIntolerance.AllergyIntoleranceReactionComponent parseAllergyIntoleranceAllergyIntoleranceReactionComponent(XmlPullParser xpp, AllergyIntolerance owner) throws XmlPullParserException, IOException, FHIRFormatError {
1744    AllergyIntolerance.AllergyIntoleranceReactionComponent res = new AllergyIntolerance.AllergyIntoleranceReactionComponent();
1745    parseBackboneAttributes(xpp, res);
1746    next(xpp);
1747    int eventType = nextNoWhitespace(xpp);
1748    while (eventType != XmlPullParser.END_TAG) {
1749      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
1750        res.setSubstance(parseCodeableConcept(xpp));
1751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certainty")) {
1752        res.setCertaintyElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCertainty.NULL, new AllergyIntolerance.AllergyIntoleranceCertaintyEnumFactory()));
1753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifestation")) {
1754        res.getManifestation().add(parseCodeableConcept(xpp));
1755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1756        res.setDescriptionElement(parseString(xpp));
1757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
1758        res.setOnsetElement(parseDateTime(xpp));
1759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1760        res.setSeverityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceSeverity.NULL, new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory()));
1761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureRoute")) {
1762        res.setExposureRoute(parseCodeableConcept(xpp));
1763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
1764        res.getNote().add(parseAnnotation(xpp));
1765      } else if (!parseBackboneContent(eventType, xpp, res))
1766        unknownContent(xpp);
1767      eventType = nextNoWhitespace(xpp);
1768    }
1769    next(xpp);
1770    parseElementClose(res);
1771    return res;
1772  }
1773
1774  protected Appointment parseAppointment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1775    Appointment res = new Appointment();
1776    parseDomainResourceAttributes(xpp, res);
1777    next(xpp);
1778    int eventType = nextNoWhitespace(xpp);
1779    while (eventType != XmlPullParser.END_TAG) {
1780      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1781        res.getIdentifier().add(parseIdentifier(xpp));
1782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1783        res.setStatusElement(parseEnumeration(xpp, Appointment.AppointmentStatus.NULL, new Appointment.AppointmentStatusEnumFactory()));
1784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
1785        res.setServiceCategory(parseCodeableConcept(xpp));
1786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
1787        res.getServiceType().add(parseCodeableConcept(xpp));
1788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
1789        res.getSpecialty().add(parseCodeableConcept(xpp));
1790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
1791        res.setAppointmentType(parseCodeableConcept(xpp));
1792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
1793        res.setReason(parseCodeableConcept(xpp));
1794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
1795        res.setPriorityElement(parseUnsignedInt(xpp));
1796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1797        res.setDescriptionElement(parseString(xpp));
1798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
1799        res.setStartElement(parseInstant(xpp));
1800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
1801        res.setEndElement(parseInstant(xpp));
1802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minutesDuration")) {
1803        res.setMinutesDurationElement(parsePositiveInt(xpp));
1804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slot")) {
1805        res.getSlot().add(parseReference(xpp));
1806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
1807        res.setCreatedElement(parseDateTime(xpp));
1808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1809        res.setCommentElement(parseString(xpp));
1810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
1811        res.getParticipant().add(parseAppointmentAppointmentParticipantComponent(xpp, res));
1812      } else if (!parseDomainResourceContent(eventType, xpp, res))
1813        unknownContent(xpp);
1814      eventType = nextNoWhitespace(xpp);
1815    }
1816    next(xpp);
1817    parseElementClose(res);
1818    return res;
1819  }
1820
1821  protected Appointment.AppointmentParticipantComponent parseAppointmentAppointmentParticipantComponent(XmlPullParser xpp, Appointment owner) throws XmlPullParserException, IOException, FHIRFormatError {
1822    Appointment.AppointmentParticipantComponent res = new Appointment.AppointmentParticipantComponent();
1823    parseBackboneAttributes(xpp, res);
1824    next(xpp);
1825    int eventType = nextNoWhitespace(xpp);
1826    while (eventType != XmlPullParser.END_TAG) {
1827      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1828        res.getType().add(parseCodeableConcept(xpp));
1829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
1830        res.setActor(parseReference(xpp));
1831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
1832        res.setRequiredElement(parseEnumeration(xpp, Appointment.ParticipantRequired.NULL, new Appointment.ParticipantRequiredEnumFactory()));
1833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1834        res.setStatusElement(parseEnumeration(xpp, Appointment.ParticipationStatus.NULL, new Appointment.ParticipationStatusEnumFactory()));
1835      } else if (!parseBackboneContent(eventType, xpp, res))
1836        unknownContent(xpp);
1837      eventType = nextNoWhitespace(xpp);
1838    }
1839    next(xpp);
1840    parseElementClose(res);
1841    return res;
1842  }
1843
1844  protected AppointmentResponse parseAppointmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1845    AppointmentResponse res = new AppointmentResponse();
1846    parseDomainResourceAttributes(xpp, res);
1847    next(xpp);
1848    int eventType = nextNoWhitespace(xpp);
1849    while (eventType != XmlPullParser.END_TAG) {
1850      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1851        res.getIdentifier().add(parseIdentifier(xpp));
1852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
1853        res.setAppointment(parseReference(xpp));
1854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
1855        res.setStartElement(parseInstant(xpp));
1856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
1857        res.setEndElement(parseInstant(xpp));
1858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantType")) {
1859        res.getParticipantType().add(parseCodeableConcept(xpp));
1860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
1861        res.setActor(parseReference(xpp));
1862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantStatus")) {
1863        res.setParticipantStatusElement(parseCode(xpp));
1864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1865        res.setCommentElement(parseString(xpp));
1866      } else if (!parseDomainResourceContent(eventType, xpp, res))
1867        unknownContent(xpp);
1868      eventType = nextNoWhitespace(xpp);
1869    }
1870    next(xpp);
1871    parseElementClose(res);
1872    return res;
1873  }
1874
1875  protected AuditEvent parseAuditEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1876    AuditEvent res = new AuditEvent();
1877    parseDomainResourceAttributes(xpp, res);
1878    next(xpp);
1879    int eventType = nextNoWhitespace(xpp);
1880    while (eventType != XmlPullParser.END_TAG) {
1881      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1882        res.setType(parseCoding(xpp));
1883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
1884        res.getSubtype().add(parseCoding(xpp));
1885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
1886        res.setActionElement(parseEnumeration(xpp, AuditEvent.AuditEventAction.NULL, new AuditEvent.AuditEventActionEnumFactory()));
1887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
1888        res.setRecordedElement(parseInstant(xpp));
1889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
1890        res.setOutcomeElement(parseEnumeration(xpp, AuditEvent.AuditEventOutcome.NULL, new AuditEvent.AuditEventOutcomeEnumFactory()));
1891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeDesc")) {
1892        res.setOutcomeDescElement(parseString(xpp));
1893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfEvent")) {
1894        res.getPurposeOfEvent().add(parseCoding(xpp));
1895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
1896        res.getAgent().add(parseAuditEventAuditEventAgentComponent(xpp, res));
1897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1898        res.setSource(parseAuditEventAuditEventSourceComponent(xpp, res));
1899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
1900        res.getEntity().add(parseAuditEventAuditEventEntityComponent(xpp, res));
1901      } else if (!parseDomainResourceContent(eventType, xpp, res))
1902        unknownContent(xpp);
1903      eventType = nextNoWhitespace(xpp);
1904    }
1905    next(xpp);
1906    parseElementClose(res);
1907    return res;
1908  }
1909
1910  protected AuditEvent.AuditEventAgentComponent parseAuditEventAuditEventAgentComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1911    AuditEvent.AuditEventAgentComponent res = new AuditEvent.AuditEventAgentComponent();
1912    parseBackboneAttributes(xpp, res);
1913    next(xpp);
1914    int eventType = nextNoWhitespace(xpp);
1915    while (eventType != XmlPullParser.END_TAG) {
1916      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
1917        res.getRole().add(parseCodeableConcept(xpp));
1918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1919        res.setReference(parseReference(xpp));
1920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userId")) {
1921        res.setUserId(parseIdentifier(xpp));
1922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altId")) {
1923        res.setAltIdElement(parseString(xpp));
1924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1925        res.setNameElement(parseString(xpp));
1926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
1927        res.setRequestorElement(parseBoolean(xpp));
1928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
1929        res.setLocation(parseReference(xpp));
1930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
1931        res.getPolicy().add(parseUri(xpp));
1932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
1933        res.setMedia(parseCoding(xpp));
1934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
1935        res.setNetwork(parseAuditEventAuditEventAgentNetworkComponent(xpp, owner));
1936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfUse")) {
1937        res.getPurposeOfUse().add(parseCoding(xpp));
1938      } else if (!parseBackboneContent(eventType, xpp, res))
1939        unknownContent(xpp);
1940      eventType = nextNoWhitespace(xpp);
1941    }
1942    next(xpp);
1943    parseElementClose(res);
1944    return res;
1945  }
1946
1947  protected AuditEvent.AuditEventAgentNetworkComponent parseAuditEventAuditEventAgentNetworkComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1948    AuditEvent.AuditEventAgentNetworkComponent res = new AuditEvent.AuditEventAgentNetworkComponent();
1949    parseBackboneAttributes(xpp, res);
1950    next(xpp);
1951    int eventType = nextNoWhitespace(xpp);
1952    while (eventType != XmlPullParser.END_TAG) {
1953      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
1954        res.setAddressElement(parseString(xpp));
1955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1956        res.setTypeElement(parseEnumeration(xpp, AuditEvent.AuditEventParticipantNetworkType.NULL, new AuditEvent.AuditEventParticipantNetworkTypeEnumFactory()));
1957      } else if (!parseBackboneContent(eventType, xpp, res))
1958        unknownContent(xpp);
1959      eventType = nextNoWhitespace(xpp);
1960    }
1961    next(xpp);
1962    parseElementClose(res);
1963    return res;
1964  }
1965
1966  protected AuditEvent.AuditEventSourceComponent parseAuditEventAuditEventSourceComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1967    AuditEvent.AuditEventSourceComponent res = new AuditEvent.AuditEventSourceComponent();
1968    parseBackboneAttributes(xpp, res);
1969    next(xpp);
1970    int eventType = nextNoWhitespace(xpp);
1971    while (eventType != XmlPullParser.END_TAG) {
1972      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
1973        res.setSiteElement(parseString(xpp));
1974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1975        res.setIdentifier(parseIdentifier(xpp));
1976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1977        res.getType().add(parseCoding(xpp));
1978      } else if (!parseBackboneContent(eventType, xpp, res))
1979        unknownContent(xpp);
1980      eventType = nextNoWhitespace(xpp);
1981    }
1982    next(xpp);
1983    parseElementClose(res);
1984    return res;
1985  }
1986
1987  protected AuditEvent.AuditEventEntityComponent parseAuditEventAuditEventEntityComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1988    AuditEvent.AuditEventEntityComponent res = new AuditEvent.AuditEventEntityComponent();
1989    parseBackboneAttributes(xpp, res);
1990    next(xpp);
1991    int eventType = nextNoWhitespace(xpp);
1992    while (eventType != XmlPullParser.END_TAG) {
1993      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1994        res.setIdentifier(parseIdentifier(xpp));
1995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1996        res.setReference(parseReference(xpp));
1997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1998        res.setType(parseCoding(xpp));
1999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2000        res.setRole(parseCoding(xpp));
2001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycle")) {
2002        res.setLifecycle(parseCoding(xpp));
2003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
2004        res.getSecurityLabel().add(parseCoding(xpp));
2005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2006        res.setNameElement(parseString(xpp));
2007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2008        res.setDescriptionElement(parseString(xpp));
2009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("query")) {
2010        res.setQueryElement(parseBase64Binary(xpp));
2011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2012        res.getDetail().add(parseAuditEventAuditEventEntityDetailComponent(xpp, owner));
2013      } else if (!parseBackboneContent(eventType, xpp, res))
2014        unknownContent(xpp);
2015      eventType = nextNoWhitespace(xpp);
2016    }
2017    next(xpp);
2018    parseElementClose(res);
2019    return res;
2020  }
2021
2022  protected AuditEvent.AuditEventEntityDetailComponent parseAuditEventAuditEventEntityDetailComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2023    AuditEvent.AuditEventEntityDetailComponent res = new AuditEvent.AuditEventEntityDetailComponent();
2024    parseBackboneAttributes(xpp, res);
2025    next(xpp);
2026    int eventType = nextNoWhitespace(xpp);
2027    while (eventType != XmlPullParser.END_TAG) {
2028      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2029        res.setTypeElement(parseString(xpp));
2030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2031        res.setValueElement(parseBase64Binary(xpp));
2032      } else if (!parseBackboneContent(eventType, xpp, res))
2033        unknownContent(xpp);
2034      eventType = nextNoWhitespace(xpp);
2035    }
2036    next(xpp);
2037    parseElementClose(res);
2038    return res;
2039  }
2040
2041  protected Basic parseBasic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2042    Basic res = new Basic();
2043    parseDomainResourceAttributes(xpp, res);
2044    next(xpp);
2045    int eventType = nextNoWhitespace(xpp);
2046    while (eventType != XmlPullParser.END_TAG) {
2047      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2048        res.getIdentifier().add(parseIdentifier(xpp));
2049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2050        res.setCode(parseCodeableConcept(xpp));
2051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2052        res.setSubject(parseReference(xpp));
2053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2054        res.setCreatedElement(parseDate(xpp));
2055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2056        res.setAuthor(parseReference(xpp));
2057      } else if (!parseDomainResourceContent(eventType, xpp, res))
2058        unknownContent(xpp);
2059      eventType = nextNoWhitespace(xpp);
2060    }
2061    next(xpp);
2062    parseElementClose(res);
2063    return res;
2064  }
2065
2066  protected Binary parseBinary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2067    Binary res = new Binary();
2068    parseResourceAttributes(xpp, res);
2069    next(xpp);
2070    int eventType = nextNoWhitespace(xpp);
2071    while (eventType != XmlPullParser.END_TAG) {
2072      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
2073        res.setContentTypeElement(parseCode(xpp));
2074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
2075        res.setContentElement(parseBase64Binary(xpp));
2076      } else if (!parseResourceContent(eventType, xpp, res))
2077        unknownContent(xpp);
2078      eventType = nextNoWhitespace(xpp);
2079    }
2080    next(xpp);
2081    parseElementClose(res);
2082    return res;
2083  }
2084
2085  protected BodySite parseBodySite(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2086    BodySite res = new BodySite();
2087    parseDomainResourceAttributes(xpp, res);
2088    next(xpp);
2089    int eventType = nextNoWhitespace(xpp);
2090    while (eventType != XmlPullParser.END_TAG) {
2091      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2092        res.setPatient(parseReference(xpp));
2093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2094        res.getIdentifier().add(parseIdentifier(xpp));
2095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2096        res.setCode(parseCodeableConcept(xpp));
2097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
2098        res.getModifier().add(parseCodeableConcept(xpp));
2099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2100        res.setDescriptionElement(parseString(xpp));
2101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
2102        res.getImage().add(parseAttachment(xpp));
2103      } else if (!parseDomainResourceContent(eventType, xpp, res))
2104        unknownContent(xpp);
2105      eventType = nextNoWhitespace(xpp);
2106    }
2107    next(xpp);
2108    parseElementClose(res);
2109    return res;
2110  }
2111
2112  protected Bundle parseBundle(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2113    Bundle res = new Bundle();
2114    parseResourceAttributes(xpp, res);
2115    next(xpp);
2116    int eventType = nextNoWhitespace(xpp);
2117    while (eventType != XmlPullParser.END_TAG) {
2118      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2119        res.setTypeElement(parseEnumeration(xpp, Bundle.BundleType.NULL, new Bundle.BundleTypeEnumFactory()));
2120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
2121        res.setTotalElement(parseUnsignedInt(xpp));
2122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
2123        res.getLink().add(parseBundleBundleLinkComponent(xpp, res));
2124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
2125        res.getEntry().add(parseBundleBundleEntryComponent(xpp, res));
2126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
2127        res.setSignature(parseSignature(xpp));
2128      } else if (!parseResourceContent(eventType, xpp, res))
2129        unknownContent(xpp);
2130      eventType = nextNoWhitespace(xpp);
2131    }
2132    next(xpp);
2133    parseElementClose(res);
2134    return res;
2135  }
2136
2137  protected Bundle.BundleLinkComponent parseBundleBundleLinkComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2138    Bundle.BundleLinkComponent res = new Bundle.BundleLinkComponent();
2139    parseBackboneAttributes(xpp, res);
2140    next(xpp);
2141    int eventType = nextNoWhitespace(xpp);
2142    while (eventType != XmlPullParser.END_TAG) {
2143      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relation")) {
2144        res.setRelationElement(parseString(xpp));
2145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2146        res.setUrlElement(parseUri(xpp));
2147      } else if (!parseBackboneContent(eventType, xpp, res))
2148        unknownContent(xpp);
2149      eventType = nextNoWhitespace(xpp);
2150    }
2151    next(xpp);
2152    parseElementClose(res);
2153    return res;
2154  }
2155
2156  protected Bundle.BundleEntryComponent parseBundleBundleEntryComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2157    Bundle.BundleEntryComponent res = new Bundle.BundleEntryComponent();
2158    parseBackboneAttributes(xpp, res);
2159    next(xpp);
2160    int eventType = nextNoWhitespace(xpp);
2161    while (eventType != XmlPullParser.END_TAG) {
2162      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
2163        res.getLink().add(parseBundleBundleLinkComponent(xpp, owner));
2164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fullUrl")) {
2165        res.setFullUrlElement(parseUri(xpp));
2166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
2167        res.setResource(parseResourceContained(xpp));
2168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
2169        res.setSearch(parseBundleBundleEntrySearchComponent(xpp, owner));
2170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
2171        res.setRequest(parseBundleBundleEntryRequestComponent(xpp, owner));
2172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
2173        res.setResponse(parseBundleBundleEntryResponseComponent(xpp, owner));
2174      } else if (!parseBackboneContent(eventType, xpp, res))
2175        unknownContent(xpp);
2176      eventType = nextNoWhitespace(xpp);
2177    }
2178    next(xpp);
2179    parseElementClose(res);
2180    return res;
2181  }
2182
2183  protected Bundle.BundleEntrySearchComponent parseBundleBundleEntrySearchComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2184    Bundle.BundleEntrySearchComponent res = new Bundle.BundleEntrySearchComponent();
2185    parseBackboneAttributes(xpp, res);
2186    next(xpp);
2187    int eventType = nextNoWhitespace(xpp);
2188    while (eventType != XmlPullParser.END_TAG) {
2189      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
2190        res.setModeElement(parseEnumeration(xpp, Bundle.SearchEntryMode.NULL, new Bundle.SearchEntryModeEnumFactory()));
2191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
2192        res.setScoreElement(parseDecimal(xpp));
2193      } else if (!parseBackboneContent(eventType, xpp, res))
2194        unknownContent(xpp);
2195      eventType = nextNoWhitespace(xpp);
2196    }
2197    next(xpp);
2198    parseElementClose(res);
2199    return res;
2200  }
2201
2202  protected Bundle.BundleEntryRequestComponent parseBundleBundleEntryRequestComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2203    Bundle.BundleEntryRequestComponent res = new Bundle.BundleEntryRequestComponent();
2204    parseBackboneAttributes(xpp, res);
2205    next(xpp);
2206    int eventType = nextNoWhitespace(xpp);
2207    while (eventType != XmlPullParser.END_TAG) {
2208      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
2209        res.setMethodElement(parseEnumeration(xpp, Bundle.HTTPVerb.NULL, new Bundle.HTTPVerbEnumFactory()));
2210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2211        res.setUrlElement(parseUri(xpp));
2212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneMatch")) {
2213        res.setIfNoneMatchElement(parseString(xpp));
2214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifModifiedSince")) {
2215        res.setIfModifiedSinceElement(parseInstant(xpp));
2216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifMatch")) {
2217        res.setIfMatchElement(parseString(xpp));
2218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneExist")) {
2219        res.setIfNoneExistElement(parseString(xpp));
2220      } else if (!parseBackboneContent(eventType, xpp, res))
2221        unknownContent(xpp);
2222      eventType = nextNoWhitespace(xpp);
2223    }
2224    next(xpp);
2225    parseElementClose(res);
2226    return res;
2227  }
2228
2229  protected Bundle.BundleEntryResponseComponent parseBundleBundleEntryResponseComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2230    Bundle.BundleEntryResponseComponent res = new Bundle.BundleEntryResponseComponent();
2231    parseBackboneAttributes(xpp, res);
2232    next(xpp);
2233    int eventType = nextNoWhitespace(xpp);
2234    while (eventType != XmlPullParser.END_TAG) {
2235      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2236        res.setStatusElement(parseString(xpp));
2237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2238        res.setLocationElement(parseUri(xpp));
2239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("etag")) {
2240        res.setEtagElement(parseString(xpp));
2241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
2242        res.setLastModifiedElement(parseInstant(xpp));
2243      } else if (!parseBackboneContent(eventType, xpp, res))
2244        unknownContent(xpp);
2245      eventType = nextNoWhitespace(xpp);
2246    }
2247    next(xpp);
2248    parseElementClose(res);
2249    return res;
2250  }
2251
2252  protected CarePlan parseCarePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2253    CarePlan res = new CarePlan();
2254    parseDomainResourceAttributes(xpp, res);
2255    next(xpp);
2256    int eventType = nextNoWhitespace(xpp);
2257    while (eventType != XmlPullParser.END_TAG) {
2258      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2259        res.getIdentifier().add(parseIdentifier(xpp));
2260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2261        res.setSubject(parseReference(xpp));
2262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2263        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanStatus.NULL, new CarePlan.CarePlanStatusEnumFactory()));
2264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
2265        res.setContext(parseReference(xpp));
2266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2267        res.setPeriod(parsePeriod(xpp));
2268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2269        res.getAuthor().add(parseReference(xpp));
2270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modified")) {
2271        res.setModifiedElement(parseDateTime(xpp));
2272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2273        res.getCategory().add(parseCodeableConcept(xpp));
2274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2275        res.setDescriptionElement(parseString(xpp));
2276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
2277        res.getAddresses().add(parseReference(xpp));
2278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("support")) {
2279        res.getSupport().add(parseReference(xpp));
2280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedPlan")) {
2281        res.getRelatedPlan().add(parseCarePlanCarePlanRelatedPlanComponent(xpp, res));
2282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2283        res.getParticipant().add(parseCarePlanCarePlanParticipantComponent(xpp, res));
2284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
2285        res.getGoal().add(parseReference(xpp));
2286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
2287        res.getActivity().add(parseCarePlanCarePlanActivityComponent(xpp, res));
2288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2289        res.setNote(parseAnnotation(xpp));
2290      } else if (!parseDomainResourceContent(eventType, xpp, res))
2291        unknownContent(xpp);
2292      eventType = nextNoWhitespace(xpp);
2293    }
2294    next(xpp);
2295    parseElementClose(res);
2296    return res;
2297  }
2298
2299  protected CarePlan.CarePlanRelatedPlanComponent parseCarePlanCarePlanRelatedPlanComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
2300    CarePlan.CarePlanRelatedPlanComponent res = new CarePlan.CarePlanRelatedPlanComponent();
2301    parseBackboneAttributes(xpp, res);
2302    next(xpp);
2303    int eventType = nextNoWhitespace(xpp);
2304    while (eventType != XmlPullParser.END_TAG) {
2305      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2306        res.setCodeElement(parseEnumeration(xpp, CarePlan.CarePlanRelationship.NULL, new CarePlan.CarePlanRelationshipEnumFactory()));
2307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
2308        res.setPlan(parseReference(xpp));
2309      } else if (!parseBackboneContent(eventType, xpp, res))
2310        unknownContent(xpp);
2311      eventType = nextNoWhitespace(xpp);
2312    }
2313    next(xpp);
2314    parseElementClose(res);
2315    return res;
2316  }
2317
2318  protected CarePlan.CarePlanParticipantComponent parseCarePlanCarePlanParticipantComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
2319    CarePlan.CarePlanParticipantComponent res = new CarePlan.CarePlanParticipantComponent();
2320    parseBackboneAttributes(xpp, res);
2321    next(xpp);
2322    int eventType = nextNoWhitespace(xpp);
2323    while (eventType != XmlPullParser.END_TAG) {
2324      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2325        res.setRole(parseCodeableConcept(xpp));
2326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
2327        res.setMember(parseReference(xpp));
2328      } else if (!parseBackboneContent(eventType, xpp, res))
2329        unknownContent(xpp);
2330      eventType = nextNoWhitespace(xpp);
2331    }
2332    next(xpp);
2333    parseElementClose(res);
2334    return res;
2335  }
2336
2337  protected CarePlan.CarePlanActivityComponent parseCarePlanCarePlanActivityComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
2338    CarePlan.CarePlanActivityComponent res = new CarePlan.CarePlanActivityComponent();
2339    parseBackboneAttributes(xpp, res);
2340    next(xpp);
2341    int eventType = nextNoWhitespace(xpp);
2342    while (eventType != XmlPullParser.END_TAG) {
2343      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionResulting")) {
2344        res.getActionResulting().add(parseReference(xpp));
2345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progress")) {
2346        res.getProgress().add(parseAnnotation(xpp));
2347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
2348        res.setReference(parseReference(xpp));
2349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2350        res.setDetail(parseCarePlanCarePlanActivityDetailComponent(xpp, owner));
2351      } else if (!parseBackboneContent(eventType, xpp, res))
2352        unknownContent(xpp);
2353      eventType = nextNoWhitespace(xpp);
2354    }
2355    next(xpp);
2356    parseElementClose(res);
2357    return res;
2358  }
2359
2360  protected CarePlan.CarePlanActivityDetailComponent parseCarePlanCarePlanActivityDetailComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
2361    CarePlan.CarePlanActivityDetailComponent res = new CarePlan.CarePlanActivityDetailComponent();
2362    parseBackboneAttributes(xpp, res);
2363    next(xpp);
2364    int eventType = nextNoWhitespace(xpp);
2365    while (eventType != XmlPullParser.END_TAG) {
2366      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2367        res.setCategory(parseCodeableConcept(xpp));
2368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2369        res.setCode(parseCodeableConcept(xpp));
2370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
2371        res.getReasonCode().add(parseCodeableConcept(xpp));
2372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
2373        res.getReasonReference().add(parseReference(xpp));
2374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
2375        res.getGoal().add(parseReference(xpp));
2376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2377        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanActivityStatus.NULL, new CarePlan.CarePlanActivityStatusEnumFactory()));
2378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
2379        res.setStatusReason(parseCodeableConcept(xpp));
2380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prohibited")) {
2381        res.setProhibitedElement(parseBoolean(xpp));
2382      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
2383        res.setScheduled(parseType("scheduled", xpp));
2384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2385        res.setLocation(parseReference(xpp));
2386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
2387        res.getPerformer().add(parseReference(xpp));
2388      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
2389        res.setProduct(parseType("product", xpp));
2390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dailyAmount")) {
2391        res.setDailyAmount(parseSimpleQuantity(xpp));
2392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2393        res.setQuantity(parseSimpleQuantity(xpp));
2394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2395        res.setDescriptionElement(parseString(xpp));
2396      } else if (!parseBackboneContent(eventType, xpp, res))
2397        unknownContent(xpp);
2398      eventType = nextNoWhitespace(xpp);
2399    }
2400    next(xpp);
2401    parseElementClose(res);
2402    return res;
2403  }
2404
2405  protected CareTeam parseCareTeam(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2406    CareTeam res = new CareTeam();
2407    parseDomainResourceAttributes(xpp, res);
2408    next(xpp);
2409    int eventType = nextNoWhitespace(xpp);
2410    while (eventType != XmlPullParser.END_TAG) {
2411      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2412        res.getIdentifier().add(parseIdentifier(xpp));
2413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2414        res.setStatus(parseCodeableConcept(xpp));
2415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2416        res.getType().add(parseCodeableConcept(xpp));
2417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2418        res.setNameElement(parseString(xpp));
2419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2420        res.setSubject(parseReference(xpp));
2421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2422        res.setPeriod(parsePeriod(xpp));
2423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2424        res.getParticipant().add(parseCareTeamCareTeamParticipantComponent(xpp, res));
2425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
2426        res.setManagingOrganization(parseReference(xpp));
2427      } else if (!parseDomainResourceContent(eventType, xpp, res))
2428        unknownContent(xpp);
2429      eventType = nextNoWhitespace(xpp);
2430    }
2431    next(xpp);
2432    parseElementClose(res);
2433    return res;
2434  }
2435
2436  protected CareTeam.CareTeamParticipantComponent parseCareTeamCareTeamParticipantComponent(XmlPullParser xpp, CareTeam owner) throws XmlPullParserException, IOException, FHIRFormatError {
2437    CareTeam.CareTeamParticipantComponent res = new CareTeam.CareTeamParticipantComponent();
2438    parseBackboneAttributes(xpp, res);
2439    next(xpp);
2440    int eventType = nextNoWhitespace(xpp);
2441    while (eventType != XmlPullParser.END_TAG) {
2442      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2443        res.setRole(parseCodeableConcept(xpp));
2444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
2445        res.setMember(parseReference(xpp));
2446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2447        res.setPeriod(parsePeriod(xpp));
2448      } else if (!parseBackboneContent(eventType, xpp, res))
2449        unknownContent(xpp);
2450      eventType = nextNoWhitespace(xpp);
2451    }
2452    next(xpp);
2453    parseElementClose(res);
2454    return res;
2455  }
2456
2457  protected Claim parseClaim(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2458    Claim res = new Claim();
2459    parseDomainResourceAttributes(xpp, res);
2460    next(xpp);
2461    int eventType = nextNoWhitespace(xpp);
2462    while (eventType != XmlPullParser.END_TAG) {
2463      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2464        res.setTypeElement(parseEnumeration(xpp, Claim.ClaimType.NULL, new Claim.ClaimTypeEnumFactory()));
2465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
2466        res.getSubType().add(parseCoding(xpp));
2467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2468        res.getIdentifier().add(parseIdentifier(xpp));
2469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
2470        res.setRuleset(parseCoding(xpp));
2471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
2472        res.setOriginalRuleset(parseCoding(xpp));
2473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2474        res.setCreatedElement(parseDateTime(xpp));
2475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
2476        res.setBillablePeriod(parsePeriod(xpp));
2477      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
2478        res.setTarget(parseType("target", xpp));
2479      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "provider")) {
2480        res.setProvider(parseType("provider", xpp));
2481      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "organization")) {
2482        res.setOrganization(parseType("organization", xpp));
2483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
2484        res.setUseElement(parseEnumeration(xpp, Claim.Use.NULL, new Claim.UseEnumFactory()));
2485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2486        res.setPriority(parseCoding(xpp));
2487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
2488        res.setFundsReserve(parseCoding(xpp));
2489      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "enterer")) {
2490        res.setEnterer(parseType("enterer", xpp));
2491      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "facility")) {
2492        res.setFacility(parseType("facility", xpp));
2493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
2494        res.getRelated().add(parseClaimRelatedClaimsComponent(xpp, res));
2495      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "prescription")) {
2496        res.setPrescription(parseType("prescription", xpp));
2497      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "originalPrescription")) {
2498        res.setOriginalPrescription(parseType("originalPrescription", xpp));
2499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
2500        res.setPayee(parseClaimPayeeComponent(xpp, res));
2501      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "referral")) {
2502        res.setReferral(parseType("referral", xpp));
2503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceCode")) {
2504        res.getOccurrenceCode().add(parseCoding(xpp));
2505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurenceSpanCode")) {
2506        res.getOccurenceSpanCode().add(parseCoding(xpp));
2507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
2508        res.getValueCode().add(parseCoding(xpp));
2509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
2510        res.getDiagnosis().add(parseClaimDiagnosisComponent(xpp, res));
2511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
2512        res.getProcedure().add(parseClaimProcedureComponent(xpp, res));
2513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCondition")) {
2514        res.getSpecialCondition().add(parseCoding(xpp));
2515      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "patient")) {
2516        res.setPatient(parseType("patient", xpp));
2517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2518        res.getCoverage().add(parseClaimCoverageComponent(xpp, res));
2519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accidentDate")) {
2520        res.setAccidentDateElement(parseDate(xpp));
2521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accidentType")) {
2522        res.setAccidentType(parseCoding(xpp));
2523      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "accidentLocation")) {
2524        res.setAccidentLocation(parseType("accidentLocation", xpp));
2525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interventionException")) {
2526        res.getInterventionException().add(parseCoding(xpp));
2527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
2528        res.getOnset().add(parseClaimOnsetComponent(xpp, res));
2529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("employmentImpacted")) {
2530        res.setEmploymentImpacted(parsePeriod(xpp));
2531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
2532        res.setHospitalization(parsePeriod(xpp));
2533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
2534        res.getItem().add(parseClaimItemsComponent(xpp, res));
2535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
2536        res.setTotal(parseMoney(xpp));
2537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalMaterial")) {
2538        res.getAdditionalMaterial().add(parseCoding(xpp));
2539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("missingTeeth")) {
2540        res.getMissingTeeth().add(parseClaimMissingTeethComponent(xpp, res));
2541      } else if (!parseDomainResourceContent(eventType, xpp, res))
2542        unknownContent(xpp);
2543      eventType = nextNoWhitespace(xpp);
2544    }
2545    next(xpp);
2546    parseElementClose(res);
2547    return res;
2548  }
2549
2550  protected Claim.RelatedClaimsComponent parseClaimRelatedClaimsComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2551    Claim.RelatedClaimsComponent res = new Claim.RelatedClaimsComponent();
2552    parseBackboneAttributes(xpp, res);
2553    next(xpp);
2554    int eventType = nextNoWhitespace(xpp);
2555    while (eventType != XmlPullParser.END_TAG) {
2556      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "claim")) {
2557        res.setClaim(parseType("claim", xpp));
2558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
2559        res.setRelationship(parseCoding(xpp));
2560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
2561        res.setReference(parseIdentifier(xpp));
2562      } else if (!parseBackboneContent(eventType, xpp, res))
2563        unknownContent(xpp);
2564      eventType = nextNoWhitespace(xpp);
2565    }
2566    next(xpp);
2567    parseElementClose(res);
2568    return res;
2569  }
2570
2571  protected Claim.PayeeComponent parseClaimPayeeComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2572    Claim.PayeeComponent res = new Claim.PayeeComponent();
2573    parseBackboneAttributes(xpp, res);
2574    next(xpp);
2575    int eventType = nextNoWhitespace(xpp);
2576    while (eventType != XmlPullParser.END_TAG) {
2577      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2578        res.setType(parseCoding(xpp));
2579      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "party")) {
2580        res.setParty(parseType("party", xpp));
2581      } else if (!parseBackboneContent(eventType, xpp, res))
2582        unknownContent(xpp);
2583      eventType = nextNoWhitespace(xpp);
2584    }
2585    next(xpp);
2586    parseElementClose(res);
2587    return res;
2588  }
2589
2590  protected Claim.DiagnosisComponent parseClaimDiagnosisComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2591    Claim.DiagnosisComponent res = new Claim.DiagnosisComponent();
2592    parseBackboneAttributes(xpp, res);
2593    next(xpp);
2594    int eventType = nextNoWhitespace(xpp);
2595    while (eventType != XmlPullParser.END_TAG) {
2596      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2597        res.setSequenceElement(parsePositiveInt(xpp));
2598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
2599        res.setDiagnosis(parseCoding(xpp));
2600      } else if (!parseBackboneContent(eventType, xpp, res))
2601        unknownContent(xpp);
2602      eventType = nextNoWhitespace(xpp);
2603    }
2604    next(xpp);
2605    parseElementClose(res);
2606    return res;
2607  }
2608
2609  protected Claim.ProcedureComponent parseClaimProcedureComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2610    Claim.ProcedureComponent res = new Claim.ProcedureComponent();
2611    parseBackboneAttributes(xpp, res);
2612    next(xpp);
2613    int eventType = nextNoWhitespace(xpp);
2614    while (eventType != XmlPullParser.END_TAG) {
2615      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2616        res.setSequenceElement(parsePositiveInt(xpp));
2617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2618        res.setDateElement(parseDateTime(xpp));
2619      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
2620        res.setProcedure(parseType("procedure", xpp));
2621      } else if (!parseBackboneContent(eventType, xpp, res))
2622        unknownContent(xpp);
2623      eventType = nextNoWhitespace(xpp);
2624    }
2625    next(xpp);
2626    parseElementClose(res);
2627    return res;
2628  }
2629
2630  protected Claim.CoverageComponent parseClaimCoverageComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2631    Claim.CoverageComponent res = new Claim.CoverageComponent();
2632    parseBackboneAttributes(xpp, res);
2633    next(xpp);
2634    int eventType = nextNoWhitespace(xpp);
2635    while (eventType != XmlPullParser.END_TAG) {
2636      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2637        res.setSequenceElement(parsePositiveInt(xpp));
2638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
2639        res.setFocalElement(parseBoolean(xpp));
2640      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "coverage")) {
2641        res.setCoverage(parseType("coverage", xpp));
2642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
2643        res.setBusinessArrangementElement(parseString(xpp));
2644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
2645        res.getPreAuthRef().add(parseString(xpp));
2646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
2647        res.setClaimResponse(parseReference(xpp));
2648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
2649        res.setOriginalRuleset(parseCoding(xpp));
2650      } else if (!parseBackboneContent(eventType, xpp, res))
2651        unknownContent(xpp);
2652      eventType = nextNoWhitespace(xpp);
2653    }
2654    next(xpp);
2655    parseElementClose(res);
2656    return res;
2657  }
2658
2659  protected Claim.OnsetComponent parseClaimOnsetComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2660    Claim.OnsetComponent res = new Claim.OnsetComponent();
2661    parseBackboneAttributes(xpp, res);
2662    next(xpp);
2663    int eventType = nextNoWhitespace(xpp);
2664    while (eventType != XmlPullParser.END_TAG) {
2665      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
2666        res.setTime(parseType("time", xpp));
2667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2668        res.setType(parseCoding(xpp));
2669      } else if (!parseBackboneContent(eventType, xpp, res))
2670        unknownContent(xpp);
2671      eventType = nextNoWhitespace(xpp);
2672    }
2673    next(xpp);
2674    parseElementClose(res);
2675    return res;
2676  }
2677
2678  protected Claim.ItemsComponent parseClaimItemsComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2679    Claim.ItemsComponent res = new Claim.ItemsComponent();
2680    parseBackboneAttributes(xpp, res);
2681    next(xpp);
2682    int eventType = nextNoWhitespace(xpp);
2683    while (eventType != XmlPullParser.END_TAG) {
2684      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2685        res.setSequenceElement(parsePositiveInt(xpp));
2686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2687        res.setType(parseCoding(xpp));
2688      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "provider")) {
2689        res.setProvider(parseType("provider", xpp));
2690      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "supervisor")) {
2691        res.setSupervisor(parseType("supervisor", xpp));
2692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providerQualification")) {
2693        res.setProviderQualification(parseCoding(xpp));
2694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisLinkId")) {
2695        res.getDiagnosisLinkId().add(parsePositiveInt(xpp));
2696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
2697        res.setService(parseCoding(xpp));
2698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceModifier")) {
2699        res.getServiceModifier().add(parseCoding(xpp));
2700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
2701        res.getModifier().add(parseCoding(xpp));
2702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
2703        res.getProgramCode().add(parseCoding(xpp));
2704      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
2705        res.setServiced(parseType("serviced", xpp));
2706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("place")) {
2707        res.setPlace(parseCoding(xpp));
2708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2709        res.setQuantity(parseSimpleQuantity(xpp));
2710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
2711        res.setUnitPrice(parseMoney(xpp));
2712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
2713        res.setFactorElement(parseDecimal(xpp));
2714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
2715        res.setPointsElement(parseDecimal(xpp));
2716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
2717        res.setNet(parseMoney(xpp));
2718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
2719        res.getUdi().add(parseReference(xpp));
2720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
2721        res.setBodySite(parseCoding(xpp));
2722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
2723        res.getSubSite().add(parseCoding(xpp));
2724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2725        res.getDetail().add(parseClaimDetailComponent(xpp, owner));
2726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prosthesis")) {
2727        res.setProsthesis(parseClaimProsthesisComponent(xpp, owner));
2728      } else if (!parseBackboneContent(eventType, xpp, res))
2729        unknownContent(xpp);
2730      eventType = nextNoWhitespace(xpp);
2731    }
2732    next(xpp);
2733    parseElementClose(res);
2734    return res;
2735  }
2736
2737  protected Claim.DetailComponent parseClaimDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2738    Claim.DetailComponent res = new Claim.DetailComponent();
2739    parseBackboneAttributes(xpp, res);
2740    next(xpp);
2741    int eventType = nextNoWhitespace(xpp);
2742    while (eventType != XmlPullParser.END_TAG) {
2743      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2744        res.setSequenceElement(parsePositiveInt(xpp));
2745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2746        res.setType(parseCoding(xpp));
2747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
2748        res.setService(parseCoding(xpp));
2749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
2750        res.getProgramCode().add(parseCoding(xpp));
2751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2752        res.setQuantity(parseSimpleQuantity(xpp));
2753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
2754        res.setUnitPrice(parseMoney(xpp));
2755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
2756        res.setFactorElement(parseDecimal(xpp));
2757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
2758        res.setPointsElement(parseDecimal(xpp));
2759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
2760        res.setNet(parseMoney(xpp));
2761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
2762        res.getUdi().add(parseReference(xpp));
2763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
2764        res.getSubDetail().add(parseClaimSubDetailComponent(xpp, owner));
2765      } else if (!parseBackboneContent(eventType, xpp, res))
2766        unknownContent(xpp);
2767      eventType = nextNoWhitespace(xpp);
2768    }
2769    next(xpp);
2770    parseElementClose(res);
2771    return res;
2772  }
2773
2774  protected Claim.SubDetailComponent parseClaimSubDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2775    Claim.SubDetailComponent res = new Claim.SubDetailComponent();
2776    parseBackboneAttributes(xpp, res);
2777    next(xpp);
2778    int eventType = nextNoWhitespace(xpp);
2779    while (eventType != XmlPullParser.END_TAG) {
2780      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2781        res.setSequenceElement(parsePositiveInt(xpp));
2782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2783        res.setType(parseCoding(xpp));
2784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
2785        res.setService(parseCoding(xpp));
2786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
2787        res.getProgramCode().add(parseCoding(xpp));
2788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2789        res.setQuantity(parseSimpleQuantity(xpp));
2790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
2791        res.setUnitPrice(parseMoney(xpp));
2792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
2793        res.setFactorElement(parseDecimal(xpp));
2794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
2795        res.setPointsElement(parseDecimal(xpp));
2796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
2797        res.setNet(parseMoney(xpp));
2798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
2799        res.getUdi().add(parseReference(xpp));
2800      } else if (!parseBackboneContent(eventType, xpp, res))
2801        unknownContent(xpp);
2802      eventType = nextNoWhitespace(xpp);
2803    }
2804    next(xpp);
2805    parseElementClose(res);
2806    return res;
2807  }
2808
2809  protected Claim.ProsthesisComponent parseClaimProsthesisComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2810    Claim.ProsthesisComponent res = new Claim.ProsthesisComponent();
2811    parseBackboneAttributes(xpp, res);
2812    next(xpp);
2813    int eventType = nextNoWhitespace(xpp);
2814    while (eventType != XmlPullParser.END_TAG) {
2815      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initial")) {
2816        res.setInitialElement(parseBoolean(xpp));
2817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorDate")) {
2818        res.setPriorDateElement(parseDate(xpp));
2819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorMaterial")) {
2820        res.setPriorMaterial(parseCoding(xpp));
2821      } else if (!parseBackboneContent(eventType, xpp, res))
2822        unknownContent(xpp);
2823      eventType = nextNoWhitespace(xpp);
2824    }
2825    next(xpp);
2826    parseElementClose(res);
2827    return res;
2828  }
2829
2830  protected Claim.MissingTeethComponent parseClaimMissingTeethComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
2831    Claim.MissingTeethComponent res = new Claim.MissingTeethComponent();
2832    parseBackboneAttributes(xpp, res);
2833    next(xpp);
2834    int eventType = nextNoWhitespace(xpp);
2835    while (eventType != XmlPullParser.END_TAG) {
2836      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tooth")) {
2837        res.setTooth(parseCoding(xpp));
2838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2839        res.setReason(parseCoding(xpp));
2840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extractionDate")) {
2841        res.setExtractionDateElement(parseDate(xpp));
2842      } else if (!parseBackboneContent(eventType, xpp, res))
2843        unknownContent(xpp);
2844      eventType = nextNoWhitespace(xpp);
2845    }
2846    next(xpp);
2847    parseElementClose(res);
2848    return res;
2849  }
2850
2851  protected ClaimResponse parseClaimResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2852    ClaimResponse res = new ClaimResponse();
2853    parseDomainResourceAttributes(xpp, res);
2854    next(xpp);
2855    int eventType = nextNoWhitespace(xpp);
2856    while (eventType != XmlPullParser.END_TAG) {
2857      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2858        res.getIdentifier().add(parseIdentifier(xpp));
2859      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "request")) {
2860        res.setRequest(parseType("request", xpp));
2861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
2862        res.setRuleset(parseCoding(xpp));
2863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
2864        res.setOriginalRuleset(parseCoding(xpp));
2865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2866        res.setCreatedElement(parseDateTime(xpp));
2867      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "organization")) {
2868        res.setOrganization(parseType("organization", xpp));
2869      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "requestProvider")) {
2870        res.setRequestProvider(parseType("requestProvider", xpp));
2871      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "requestOrganization")) {
2872        res.setRequestOrganization(parseType("requestOrganization", xpp));
2873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2874        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
2875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
2876        res.setDispositionElement(parseString(xpp));
2877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payeeType")) {
2878        res.setPayeeType(parseCoding(xpp));
2879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
2880        res.getItem().add(parseClaimResponseItemsComponent(xpp, res));
2881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
2882        res.getAddItem().add(parseClaimResponseAddedItemComponent(xpp, res));
2883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
2884        res.getError().add(parseClaimResponseErrorsComponent(xpp, res));
2885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalCost")) {
2886        res.setTotalCost(parseMoney(xpp));
2887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unallocDeductable")) {
2888        res.setUnallocDeductable(parseMoney(xpp));
2889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalBenefit")) {
2890        res.setTotalBenefit(parseMoney(xpp));
2891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAdjustment")) {
2892        res.setPaymentAdjustment(parseMoney(xpp));
2893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAdjustmentReason")) {
2894        res.setPaymentAdjustmentReason(parseCoding(xpp));
2895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
2896        res.setPaymentDateElement(parseDate(xpp));
2897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAmount")) {
2898        res.setPaymentAmount(parseMoney(xpp));
2899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentRef")) {
2900        res.setPaymentRef(parseIdentifier(xpp));
2901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reserved")) {
2902        res.setReserved(parseCoding(xpp));
2903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
2904        res.setForm(parseCoding(xpp));
2905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2906        res.getNote().add(parseClaimResponseNotesComponent(xpp, res));
2907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2908        res.getCoverage().add(parseClaimResponseCoverageComponent(xpp, res));
2909      } else if (!parseDomainResourceContent(eventType, xpp, res))
2910        unknownContent(xpp);
2911      eventType = nextNoWhitespace(xpp);
2912    }
2913    next(xpp);
2914    parseElementClose(res);
2915    return res;
2916  }
2917
2918  protected ClaimResponse.ItemsComponent parseClaimResponseItemsComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2919    ClaimResponse.ItemsComponent res = new ClaimResponse.ItemsComponent();
2920    parseBackboneAttributes(xpp, res);
2921    next(xpp);
2922    int eventType = nextNoWhitespace(xpp);
2923    while (eventType != XmlPullParser.END_TAG) {
2924      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
2925        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
2926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
2927        res.getNoteNumber().add(parsePositiveInt(xpp));
2928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
2929        res.getAdjudication().add(parseClaimResponseItemAdjudicationComponent(xpp, owner));
2930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2931        res.getDetail().add(parseClaimResponseItemDetailComponent(xpp, owner));
2932      } else if (!parseBackboneContent(eventType, xpp, res))
2933        unknownContent(xpp);
2934      eventType = nextNoWhitespace(xpp);
2935    }
2936    next(xpp);
2937    parseElementClose(res);
2938    return res;
2939  }
2940
2941  protected ClaimResponse.ItemAdjudicationComponent parseClaimResponseItemAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2942    ClaimResponse.ItemAdjudicationComponent res = new ClaimResponse.ItemAdjudicationComponent();
2943    parseBackboneAttributes(xpp, res);
2944    next(xpp);
2945    int eventType = nextNoWhitespace(xpp);
2946    while (eventType != XmlPullParser.END_TAG) {
2947      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2948        res.setCategory(parseCoding(xpp));
2949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2950        res.setReason(parseCoding(xpp));
2951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
2952        res.setAmount(parseMoney(xpp));
2953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2954        res.setValueElement(parseDecimal(xpp));
2955      } else if (!parseBackboneContent(eventType, xpp, res))
2956        unknownContent(xpp);
2957      eventType = nextNoWhitespace(xpp);
2958    }
2959    next(xpp);
2960    parseElementClose(res);
2961    return res;
2962  }
2963
2964  protected ClaimResponse.ItemDetailComponent parseClaimResponseItemDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2965    ClaimResponse.ItemDetailComponent res = new ClaimResponse.ItemDetailComponent();
2966    parseBackboneAttributes(xpp, res);
2967    next(xpp);
2968    int eventType = nextNoWhitespace(xpp);
2969    while (eventType != XmlPullParser.END_TAG) {
2970      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
2971        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
2972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
2973        res.getAdjudication().add(parseClaimResponseDetailAdjudicationComponent(xpp, owner));
2974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
2975        res.getSubDetail().add(parseClaimResponseSubDetailComponent(xpp, owner));
2976      } else if (!parseBackboneContent(eventType, xpp, res))
2977        unknownContent(xpp);
2978      eventType = nextNoWhitespace(xpp);
2979    }
2980    next(xpp);
2981    parseElementClose(res);
2982    return res;
2983  }
2984
2985  protected ClaimResponse.DetailAdjudicationComponent parseClaimResponseDetailAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2986    ClaimResponse.DetailAdjudicationComponent res = new ClaimResponse.DetailAdjudicationComponent();
2987    parseBackboneAttributes(xpp, res);
2988    next(xpp);
2989    int eventType = nextNoWhitespace(xpp);
2990    while (eventType != XmlPullParser.END_TAG) {
2991      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2992        res.setCategory(parseCoding(xpp));
2993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2994        res.setReason(parseCoding(xpp));
2995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
2996        res.setAmount(parseMoney(xpp));
2997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2998        res.setValueElement(parseDecimal(xpp));
2999      } else if (!parseBackboneContent(eventType, xpp, res))
3000        unknownContent(xpp);
3001      eventType = nextNoWhitespace(xpp);
3002    }
3003    next(xpp);
3004    parseElementClose(res);
3005    return res;
3006  }
3007
3008  protected ClaimResponse.SubDetailComponent parseClaimResponseSubDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
3009    ClaimResponse.SubDetailComponent res = new ClaimResponse.SubDetailComponent();
3010    parseBackboneAttributes(xpp, res);
3011    next(xpp);
3012    int eventType = nextNoWhitespace(xpp);
3013    while (eventType != XmlPullParser.END_TAG) {
3014      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
3015        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
3016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
3017        res.getAdjudication().add(parseClaimResponseSubdetailAdjudicationComponent(xpp, owner));
3018      } else if (!parseBackboneContent(eventType, xpp, res))
3019        unknownContent(xpp);
3020      eventType = nextNoWhitespace(xpp);
3021    }
3022    next(xpp);
3023    parseElementClose(res);
3024    return res;
3025  }
3026
3027  protected ClaimResponse.SubdetailAdjudicationComponent parseClaimResponseSubdetailAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
3028    ClaimResponse.SubdetailAdjudicationComponent res = new ClaimResponse.SubdetailAdjudicationComponent();
3029    parseBackboneAttributes(xpp, res);
3030    next(xpp);
3031    int eventType = nextNoWhitespace(xpp);
3032    while (eventType != XmlPullParser.END_TAG) {
3033      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3034        res.setCategory(parseCoding(xpp));
3035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
3036        res.setReason(parseCoding(xpp));
3037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
3038        res.setAmount(parseMoney(xpp));
3039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
3040        res.setValueElement(parseDecimal(xpp));
3041      } else if (!parseBackboneContent(eventType, xpp, res))
3042        unknownContent(xpp);
3043      eventType = nextNoWhitespace(xpp);
3044    }
3045    next(xpp);
3046    parseElementClose(res);
3047    return res;
3048  }
3049
3050  protected ClaimResponse.AddedItemComponent parseClaimResponseAddedItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
3051    ClaimResponse.AddedItemComponent res = new ClaimResponse.AddedItemComponent();
3052    parseBackboneAttributes(xpp, res);
3053    next(xpp);
3054    int eventType = nextNoWhitespace(xpp);
3055    while (eventType != XmlPullParser.END_TAG) {
3056      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
3057        res.getSequenceLinkId().add(parsePositiveInt(xpp));
3058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3059        res.setService(parseCoding(xpp));
3060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
3061        res.setFee(parseMoney(xpp));
3062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumberLinkId")) {
3063        res.getNoteNumberLinkId().add(parsePositiveInt(xpp));
3064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
3065        res.getAdjudication().add(parseClaimResponseAddedItemAdjudicationComponent(xpp, owner));
3066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3067        res.getDetail().add(parseClaimResponseAddedItemsDetailComponent(xpp, owner));
3068      } else if (!parseBackboneContent(eventType, xpp, res))
3069        unknownContent(xpp);
3070      eventType = nextNoWhitespace(xpp);
3071    }
3072    next(xpp);
3073    parseElementClose(res);
3074    return res;
3075  }
3076
3077  protected ClaimResponse.AddedItemAdjudicationComponent parseClaimResponseAddedItemAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
3078    ClaimResponse.AddedItemAdjudicationComponent res = new ClaimResponse.AddedItemAdjudicationComponent();
3079    parseBackboneAttributes(xpp, res);
3080    next(xpp);
3081    int eventType = nextNoWhitespace(xpp);
3082    while (eventType != XmlPullParser.END_TAG) {
3083      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3084        res.setCategory(parseCoding(xpp));
3085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
3086        res.setReason(parseCoding(xpp));
3087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
3088        res.setAmount(parseMoney(xpp));
3089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
3090        res.setValueElement(parseDecimal(xpp));
3091      } else if (!parseBackboneContent(eventType, xpp, res))
3092        unknownContent(xpp);
3093      eventType = nextNoWhitespace(xpp);
3094    }
3095    next(xpp);
3096    parseElementClose(res);
3097    return res;
3098  }
3099
3100  protected ClaimResponse.AddedItemsDetailComponent parseClaimResponseAddedItemsDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
3101    ClaimResponse.AddedItemsDetailComponent res = new ClaimResponse.AddedItemsDetailComponent();
3102    parseBackboneAttributes(xpp, res);
3103    next(xpp);
3104    int eventType = nextNoWhitespace(xpp);
3105    while (eventType != XmlPullParser.END_TAG) {
3106      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3107        res.setService(parseCoding(xpp));
3108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
3109        res.setFee(parseMoney(xpp));
3110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
3111        res.getAdjudication().add(parseClaimResponseAddedItemDetailAdjudicationComponent(xpp, owner));
3112      } else if (!parseBackboneContent(eventType, xpp, res))
3113        unknownContent(xpp);
3114      eventType = nextNoWhitespace(xpp);
3115    }
3116    next(xpp);
3117    parseElementClose(res);
3118    return res;
3119  }
3120
3121  protected ClaimResponse.AddedItemDetailAdjudicationComponent parseClaimResponseAddedItemDetailAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
3122    ClaimResponse.AddedItemDetailAdjudicationComponent res = new ClaimResponse.AddedItemDetailAdjudicationComponent();
3123    parseBackboneAttributes(xpp, res);
3124    next(xpp);
3125    int eventType = nextNoWhitespace(xpp);
3126    while (eventType != XmlPullParser.END_TAG) {
3127      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3128        res.setCategory(parseCoding(xpp));
3129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
3130        res.setReason(parseCoding(xpp));
3131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
3132        res.setAmount(parseMoney(xpp));
3133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
3134        res.setValueElement(parseDecimal(xpp));
3135      } else if (!parseBackboneContent(eventType, xpp, res))
3136        unknownContent(xpp);
3137      eventType = nextNoWhitespace(xpp);
3138    }
3139    next(xpp);
3140    parseElementClose(res);
3141    return res;
3142  }
3143
3144  protected ClaimResponse.ErrorsComponent parseClaimResponseErrorsComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
3145    ClaimResponse.ErrorsComponent res = new ClaimResponse.ErrorsComponent();
3146    parseBackboneAttributes(xpp, res);
3147    next(xpp);
3148    int eventType = nextNoWhitespace(xpp);
3149    while (eventType != XmlPullParser.END_TAG) {
3150      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
3151        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
3152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequenceLinkId")) {
3153        res.setDetailSequenceLinkIdElement(parsePositiveInt(xpp));
3154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subdetailSequenceLinkId")) {
3155        res.setSubdetailSequenceLinkIdElement(parsePositiveInt(xpp));
3156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3157        res.setCode(parseCoding(xpp));
3158      } else if (!parseBackboneContent(eventType, xpp, res))
3159        unknownContent(xpp);
3160      eventType = nextNoWhitespace(xpp);
3161    }
3162    next(xpp);
3163    parseElementClose(res);
3164    return res;
3165  }
3166
3167  protected ClaimResponse.NotesComponent parseClaimResponseNotesComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
3168    ClaimResponse.NotesComponent res = new ClaimResponse.NotesComponent();
3169    parseBackboneAttributes(xpp, res);
3170    next(xpp);
3171    int eventType = nextNoWhitespace(xpp);
3172    while (eventType != XmlPullParser.END_TAG) {
3173      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
3174        res.setNumberElement(parsePositiveInt(xpp));
3175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3176        res.setType(parseCoding(xpp));
3177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
3178        res.setTextElement(parseString(xpp));
3179      } else if (!parseBackboneContent(eventType, xpp, res))
3180        unknownContent(xpp);
3181      eventType = nextNoWhitespace(xpp);
3182    }
3183    next(xpp);
3184    parseElementClose(res);
3185    return res;
3186  }
3187
3188  protected ClaimResponse.CoverageComponent parseClaimResponseCoverageComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
3189    ClaimResponse.CoverageComponent res = new ClaimResponse.CoverageComponent();
3190    parseBackboneAttributes(xpp, res);
3191    next(xpp);
3192    int eventType = nextNoWhitespace(xpp);
3193    while (eventType != XmlPullParser.END_TAG) {
3194      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3195        res.setSequenceElement(parsePositiveInt(xpp));
3196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
3197        res.setFocalElement(parseBoolean(xpp));
3198      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "coverage")) {
3199        res.setCoverage(parseType("coverage", xpp));
3200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
3201        res.setBusinessArrangementElement(parseString(xpp));
3202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
3203        res.getPreAuthRef().add(parseString(xpp));
3204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
3205        res.setClaimResponse(parseReference(xpp));
3206      } else if (!parseBackboneContent(eventType, xpp, res))
3207        unknownContent(xpp);
3208      eventType = nextNoWhitespace(xpp);
3209    }
3210    next(xpp);
3211    parseElementClose(res);
3212    return res;
3213  }
3214
3215  protected ClinicalImpression parseClinicalImpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3216    ClinicalImpression res = new ClinicalImpression();
3217    parseDomainResourceAttributes(xpp, res);
3218    next(xpp);
3219    int eventType = nextNoWhitespace(xpp);
3220    while (eventType != XmlPullParser.END_TAG) {
3221      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3222        res.setPatient(parseReference(xpp));
3223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessor")) {
3224        res.setAssessor(parseReference(xpp));
3225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3226        res.setStatusElement(parseEnumeration(xpp, ClinicalImpression.ClinicalImpressionStatus.NULL, new ClinicalImpression.ClinicalImpressionStatusEnumFactory()));
3227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3228        res.setDateElement(parseDateTime(xpp));
3229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3230        res.setDescriptionElement(parseString(xpp));
3231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
3232        res.setPrevious(parseReference(xpp));
3233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("problem")) {
3234        res.getProblem().add(parseReference(xpp));
3235      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "trigger")) {
3236        res.setTrigger(parseType("trigger", xpp));
3237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("investigations")) {
3238        res.getInvestigations().add(parseClinicalImpressionClinicalImpressionInvestigationsComponent(xpp, res));
3239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
3240        res.setProtocolElement(parseUri(xpp));
3241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
3242        res.setSummaryElement(parseString(xpp));
3243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("finding")) {
3244        res.getFinding().add(parseClinicalImpressionClinicalImpressionFindingComponent(xpp, res));
3245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resolved")) {
3246        res.getResolved().add(parseCodeableConcept(xpp));
3247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruledOut")) {
3248        res.getRuledOut().add(parseClinicalImpressionClinicalImpressionRuledOutComponent(xpp, res));
3249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosis")) {
3250        res.setPrognosisElement(parseString(xpp));
3251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
3252        res.getPlan().add(parseReference(xpp));
3253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
3254        res.getAction().add(parseReference(xpp));
3255      } else if (!parseDomainResourceContent(eventType, xpp, res))
3256        unknownContent(xpp);
3257      eventType = nextNoWhitespace(xpp);
3258    }
3259    next(xpp);
3260    parseElementClose(res);
3261    return res;
3262  }
3263
3264  protected ClinicalImpression.ClinicalImpressionInvestigationsComponent parseClinicalImpressionClinicalImpressionInvestigationsComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
3265    ClinicalImpression.ClinicalImpressionInvestigationsComponent res = new ClinicalImpression.ClinicalImpressionInvestigationsComponent();
3266    parseBackboneAttributes(xpp, res);
3267    next(xpp);
3268    int eventType = nextNoWhitespace(xpp);
3269    while (eventType != XmlPullParser.END_TAG) {
3270      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3271        res.setCode(parseCodeableConcept(xpp));
3272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
3273        res.getItem().add(parseReference(xpp));
3274      } else if (!parseBackboneContent(eventType, xpp, res))
3275        unknownContent(xpp);
3276      eventType = nextNoWhitespace(xpp);
3277    }
3278    next(xpp);
3279    parseElementClose(res);
3280    return res;
3281  }
3282
3283  protected ClinicalImpression.ClinicalImpressionFindingComponent parseClinicalImpressionClinicalImpressionFindingComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
3284    ClinicalImpression.ClinicalImpressionFindingComponent res = new ClinicalImpression.ClinicalImpressionFindingComponent();
3285    parseBackboneAttributes(xpp, res);
3286    next(xpp);
3287    int eventType = nextNoWhitespace(xpp);
3288    while (eventType != XmlPullParser.END_TAG) {
3289      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
3290        res.setItem(parseCodeableConcept(xpp));
3291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cause")) {
3292        res.setCauseElement(parseString(xpp));
3293      } else if (!parseBackboneContent(eventType, xpp, res))
3294        unknownContent(xpp);
3295      eventType = nextNoWhitespace(xpp);
3296    }
3297    next(xpp);
3298    parseElementClose(res);
3299    return res;
3300  }
3301
3302  protected ClinicalImpression.ClinicalImpressionRuledOutComponent parseClinicalImpressionClinicalImpressionRuledOutComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
3303    ClinicalImpression.ClinicalImpressionRuledOutComponent res = new ClinicalImpression.ClinicalImpressionRuledOutComponent();
3304    parseBackboneAttributes(xpp, res);
3305    next(xpp);
3306    int eventType = nextNoWhitespace(xpp);
3307    while (eventType != XmlPullParser.END_TAG) {
3308      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
3309        res.setItem(parseCodeableConcept(xpp));
3310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
3311        res.setReasonElement(parseString(xpp));
3312      } else if (!parseBackboneContent(eventType, xpp, res))
3313        unknownContent(xpp);
3314      eventType = nextNoWhitespace(xpp);
3315    }
3316    next(xpp);
3317    parseElementClose(res);
3318    return res;
3319  }
3320
3321  protected CodeSystem parseCodeSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3322    CodeSystem res = new CodeSystem();
3323    parseDomainResourceAttributes(xpp, res);
3324    next(xpp);
3325    int eventType = nextNoWhitespace(xpp);
3326    while (eventType != XmlPullParser.END_TAG) {
3327      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3328        res.setUrlElement(parseUri(xpp));
3329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3330        res.setIdentifier(parseIdentifier(xpp));
3331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3332        res.setVersionElement(parseString(xpp));
3333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3334        res.setNameElement(parseString(xpp));
3335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3336        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
3337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
3338        res.setExperimentalElement(parseBoolean(xpp));
3339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
3340        res.setPublisherElement(parseString(xpp));
3341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
3342        res.getContact().add(parseCodeSystemCodeSystemContactComponent(xpp, res));
3343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3344        res.setDateElement(parseDateTime(xpp));
3345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3346        res.setDescriptionElement(parseString(xpp));
3347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
3348        res.getUseContext().add(parseCodeableConcept(xpp));
3349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
3350        res.setRequirementsElement(parseString(xpp));
3351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
3352        res.setCopyrightElement(parseString(xpp));
3353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caseSensitive")) {
3354        res.setCaseSensitiveElement(parseBoolean(xpp));
3355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
3356        res.setValueSetElement(parseUri(xpp));
3357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
3358        res.setCompositionalElement(parseBoolean(xpp));
3359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionNeeded")) {
3360        res.setVersionNeededElement(parseBoolean(xpp));
3361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
3362        res.setContentElement(parseEnumeration(xpp, CodeSystem.CodeSystemContentMode.NULL, new CodeSystem.CodeSystemContentModeEnumFactory()));
3363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
3364        res.setCountElement(parseUnsignedInt(xpp));
3365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
3366        res.getFilter().add(parseCodeSystemCodeSystemFilterComponent(xpp, res));
3367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
3368        res.getProperty().add(parseCodeSystemCodeSystemPropertyComponent(xpp, res));
3369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
3370        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, res));
3371      } else if (!parseDomainResourceContent(eventType, xpp, res))
3372        unknownContent(xpp);
3373      eventType = nextNoWhitespace(xpp);
3374    }
3375    next(xpp);
3376    parseElementClose(res);
3377    return res;
3378  }
3379
3380  protected CodeSystem.CodeSystemContactComponent parseCodeSystemCodeSystemContactComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
3381    CodeSystem.CodeSystemContactComponent res = new CodeSystem.CodeSystemContactComponent();
3382    parseBackboneAttributes(xpp, res);
3383    next(xpp);
3384    int eventType = nextNoWhitespace(xpp);
3385    while (eventType != XmlPullParser.END_TAG) {
3386      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3387        res.setNameElement(parseString(xpp));
3388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
3389        res.getTelecom().add(parseContactPoint(xpp));
3390      } else if (!parseBackboneContent(eventType, xpp, res))
3391        unknownContent(xpp);
3392      eventType = nextNoWhitespace(xpp);
3393    }
3394    next(xpp);
3395    parseElementClose(res);
3396    return res;
3397  }
3398
3399  protected CodeSystem.CodeSystemFilterComponent parseCodeSystemCodeSystemFilterComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
3400    CodeSystem.CodeSystemFilterComponent res = new CodeSystem.CodeSystemFilterComponent();
3401    parseBackboneAttributes(xpp, res);
3402    next(xpp);
3403    int eventType = nextNoWhitespace(xpp);
3404    while (eventType != XmlPullParser.END_TAG) {
3405      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3406        res.setCodeElement(parseCode(xpp));
3407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3408        res.setDescriptionElement(parseString(xpp));
3409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
3410        res.getOperator().add(parseCode(xpp));
3411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
3412        res.setValueElement(parseString(xpp));
3413      } else if (!parseBackboneContent(eventType, xpp, res))
3414        unknownContent(xpp);
3415      eventType = nextNoWhitespace(xpp);
3416    }
3417    next(xpp);
3418    parseElementClose(res);
3419    return res;
3420  }
3421
3422  protected CodeSystem.CodeSystemPropertyComponent parseCodeSystemCodeSystemPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
3423    CodeSystem.CodeSystemPropertyComponent res = new CodeSystem.CodeSystemPropertyComponent();
3424    parseBackboneAttributes(xpp, res);
3425    next(xpp);
3426    int eventType = nextNoWhitespace(xpp);
3427    while (eventType != XmlPullParser.END_TAG) {
3428      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3429        res.setCodeElement(parseCode(xpp));
3430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3431        res.setDescriptionElement(parseString(xpp));
3432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3433        res.setTypeElement(parseEnumeration(xpp, CodeSystem.PropertyType.NULL, new CodeSystem.PropertyTypeEnumFactory()));
3434      } else if (!parseBackboneContent(eventType, xpp, res))
3435        unknownContent(xpp);
3436      eventType = nextNoWhitespace(xpp);
3437    }
3438    next(xpp);
3439    parseElementClose(res);
3440    return res;
3441  }
3442
3443  protected CodeSystem.ConceptDefinitionComponent parseCodeSystemConceptDefinitionComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
3444    CodeSystem.ConceptDefinitionComponent res = new CodeSystem.ConceptDefinitionComponent();
3445    parseBackboneAttributes(xpp, res);
3446    next(xpp);
3447    int eventType = nextNoWhitespace(xpp);
3448    while (eventType != XmlPullParser.END_TAG) {
3449      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3450        res.setCodeElement(parseCode(xpp));
3451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
3452        res.setDisplayElement(parseString(xpp));
3453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3454        res.setDefinitionElement(parseString(xpp));
3455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
3456        res.getDesignation().add(parseCodeSystemConceptDefinitionDesignationComponent(xpp, owner));
3457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
3458        res.getProperty().add(parseCodeSystemConceptDefinitionPropertyComponent(xpp, owner));
3459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
3460        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, owner));
3461      } else if (!parseBackboneContent(eventType, xpp, res))
3462        unknownContent(xpp);
3463      eventType = nextNoWhitespace(xpp);
3464    }
3465    next(xpp);
3466    parseElementClose(res);
3467    return res;
3468  }
3469
3470  protected CodeSystem.ConceptDefinitionDesignationComponent parseCodeSystemConceptDefinitionDesignationComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
3471    CodeSystem.ConceptDefinitionDesignationComponent res = new CodeSystem.ConceptDefinitionDesignationComponent();
3472    parseBackboneAttributes(xpp, res);
3473    next(xpp);
3474    int eventType = nextNoWhitespace(xpp);
3475    while (eventType != XmlPullParser.END_TAG) {
3476      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
3477        res.setLanguageElement(parseCode(xpp));
3478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
3479        res.setUse(parseCoding(xpp));
3480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
3481        res.setValueElement(parseString(xpp));
3482      } else if (!parseBackboneContent(eventType, xpp, res))
3483        unknownContent(xpp);
3484      eventType = nextNoWhitespace(xpp);
3485    }
3486    next(xpp);
3487    parseElementClose(res);
3488    return res;
3489  }
3490
3491  protected CodeSystem.ConceptDefinitionPropertyComponent parseCodeSystemConceptDefinitionPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
3492    CodeSystem.ConceptDefinitionPropertyComponent res = new CodeSystem.ConceptDefinitionPropertyComponent();
3493    parseBackboneAttributes(xpp, res);
3494    next(xpp);
3495    int eventType = nextNoWhitespace(xpp);
3496    while (eventType != XmlPullParser.END_TAG) {
3497      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3498        res.setCodeElement(parseCode(xpp));
3499      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
3500        res.setValue(parseType("value", xpp));
3501      } else if (!parseBackboneContent(eventType, xpp, res))
3502        unknownContent(xpp);
3503      eventType = nextNoWhitespace(xpp);
3504    }
3505    next(xpp);
3506    parseElementClose(res);
3507    return res;
3508  }
3509
3510  protected Communication parseCommunication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3511    Communication res = new Communication();
3512    parseDomainResourceAttributes(xpp, res);
3513    next(xpp);
3514    int eventType = nextNoWhitespace(xpp);
3515    while (eventType != XmlPullParser.END_TAG) {
3516      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3517        res.getIdentifier().add(parseIdentifier(xpp));
3518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3519        res.setCategory(parseCodeableConcept(xpp));
3520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
3521        res.setSender(parseReference(xpp));
3522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
3523        res.getRecipient().add(parseReference(xpp));
3524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
3525        res.getPayload().add(parseCommunicationCommunicationPayloadComponent(xpp, res));
3526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
3527        res.getMedium().add(parseCodeableConcept(xpp));
3528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3529        res.setStatusElement(parseEnumeration(xpp, Communication.CommunicationStatus.NULL, new Communication.CommunicationStatusEnumFactory()));
3530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3531        res.setEncounter(parseReference(xpp));
3532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sent")) {
3533        res.setSentElement(parseDateTime(xpp));
3534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("received")) {
3535        res.setReceivedElement(parseDateTime(xpp));
3536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
3537        res.getReason().add(parseCodeableConcept(xpp));
3538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3539        res.setSubject(parseReference(xpp));
3540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestDetail")) {
3541        res.setRequestDetail(parseReference(xpp));
3542      } else if (!parseDomainResourceContent(eventType, xpp, res))
3543        unknownContent(xpp);
3544      eventType = nextNoWhitespace(xpp);
3545    }
3546    next(xpp);
3547    parseElementClose(res);
3548    return res;
3549  }
3550
3551  protected Communication.CommunicationPayloadComponent parseCommunicationCommunicationPayloadComponent(XmlPullParser xpp, Communication owner) throws XmlPullParserException, IOException, FHIRFormatError {
3552    Communication.CommunicationPayloadComponent res = new Communication.CommunicationPayloadComponent();
3553    parseBackboneAttributes(xpp, res);
3554    next(xpp);
3555    int eventType = nextNoWhitespace(xpp);
3556    while (eventType != XmlPullParser.END_TAG) {
3557      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
3558        res.setContent(parseType("content", xpp));
3559      } else if (!parseBackboneContent(eventType, xpp, res))
3560        unknownContent(xpp);
3561      eventType = nextNoWhitespace(xpp);
3562    }
3563    next(xpp);
3564    parseElementClose(res);
3565    return res;
3566  }
3567
3568  protected CommunicationRequest parseCommunicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3569    CommunicationRequest res = new CommunicationRequest();
3570    parseDomainResourceAttributes(xpp, res);
3571    next(xpp);
3572    int eventType = nextNoWhitespace(xpp);
3573    while (eventType != XmlPullParser.END_TAG) {
3574      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3575        res.getIdentifier().add(parseIdentifier(xpp));
3576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3577        res.setCategory(parseCodeableConcept(xpp));
3578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
3579        res.setSender(parseReference(xpp));
3580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
3581        res.getRecipient().add(parseReference(xpp));
3582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
3583        res.getPayload().add(parseCommunicationRequestCommunicationRequestPayloadComponent(xpp, res));
3584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
3585        res.getMedium().add(parseCodeableConcept(xpp));
3586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
3587        res.setRequester(parseReference(xpp));
3588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3589        res.setStatusElement(parseEnumeration(xpp, CommunicationRequest.CommunicationRequestStatus.NULL, new CommunicationRequest.CommunicationRequestStatusEnumFactory()));
3590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3591        res.setEncounter(parseReference(xpp));
3592      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
3593        res.setScheduled(parseType("scheduled", xpp));
3594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
3595        res.getReason().add(parseCodeableConcept(xpp));
3596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedOn")) {
3597        res.setRequestedOnElement(parseDateTime(xpp));
3598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3599        res.setSubject(parseReference(xpp));
3600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
3601        res.setPriority(parseCodeableConcept(xpp));
3602      } else if (!parseDomainResourceContent(eventType, xpp, res))
3603        unknownContent(xpp);
3604      eventType = nextNoWhitespace(xpp);
3605    }
3606    next(xpp);
3607    parseElementClose(res);
3608    return res;
3609  }
3610
3611  protected CommunicationRequest.CommunicationRequestPayloadComponent parseCommunicationRequestCommunicationRequestPayloadComponent(XmlPullParser xpp, CommunicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
3612    CommunicationRequest.CommunicationRequestPayloadComponent res = new CommunicationRequest.CommunicationRequestPayloadComponent();
3613    parseBackboneAttributes(xpp, res);
3614    next(xpp);
3615    int eventType = nextNoWhitespace(xpp);
3616    while (eventType != XmlPullParser.END_TAG) {
3617      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
3618        res.setContent(parseType("content", xpp));
3619      } else if (!parseBackboneContent(eventType, xpp, res))
3620        unknownContent(xpp);
3621      eventType = nextNoWhitespace(xpp);
3622    }
3623    next(xpp);
3624    parseElementClose(res);
3625    return res;
3626  }
3627
3628  protected CompartmentDefinition parseCompartmentDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3629    CompartmentDefinition res = new CompartmentDefinition();
3630    parseDomainResourceAttributes(xpp, res);
3631    next(xpp);
3632    int eventType = nextNoWhitespace(xpp);
3633    while (eventType != XmlPullParser.END_TAG) {
3634      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3635        res.setUrlElement(parseUri(xpp));
3636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3637        res.setNameElement(parseString(xpp));
3638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3639        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
3640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
3641        res.setExperimentalElement(parseBoolean(xpp));
3642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
3643        res.setPublisherElement(parseString(xpp));
3644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
3645        res.getContact().add(parseCompartmentDefinitionCompartmentDefinitionContactComponent(xpp, res));
3646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3647        res.setDateElement(parseDateTime(xpp));
3648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3649        res.setDescriptionElement(parseString(xpp));
3650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
3651        res.setRequirementsElement(parseString(xpp));
3652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3653        res.setCodeElement(parseEnumeration(xpp, CompartmentDefinition.CompartmentType.NULL, new CompartmentDefinition.CompartmentTypeEnumFactory()));
3654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
3655        res.setSearchElement(parseBoolean(xpp));
3656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3657        res.getResource().add(parseCompartmentDefinitionCompartmentDefinitionResourceComponent(xpp, res));
3658      } else if (!parseDomainResourceContent(eventType, xpp, res))
3659        unknownContent(xpp);
3660      eventType = nextNoWhitespace(xpp);
3661    }
3662    next(xpp);
3663    parseElementClose(res);
3664    return res;
3665  }
3666
3667  protected CompartmentDefinition.CompartmentDefinitionContactComponent parseCompartmentDefinitionCompartmentDefinitionContactComponent(XmlPullParser xpp, CompartmentDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
3668    CompartmentDefinition.CompartmentDefinitionContactComponent res = new CompartmentDefinition.CompartmentDefinitionContactComponent();
3669    parseBackboneAttributes(xpp, res);
3670    next(xpp);
3671    int eventType = nextNoWhitespace(xpp);
3672    while (eventType != XmlPullParser.END_TAG) {
3673      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3674        res.setNameElement(parseString(xpp));
3675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
3676        res.getTelecom().add(parseContactPoint(xpp));
3677      } else if (!parseBackboneContent(eventType, xpp, res))
3678        unknownContent(xpp);
3679      eventType = nextNoWhitespace(xpp);
3680    }
3681    next(xpp);
3682    parseElementClose(res);
3683    return res;
3684  }
3685
3686  protected CompartmentDefinition.CompartmentDefinitionResourceComponent parseCompartmentDefinitionCompartmentDefinitionResourceComponent(XmlPullParser xpp, CompartmentDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
3687    CompartmentDefinition.CompartmentDefinitionResourceComponent res = new CompartmentDefinition.CompartmentDefinitionResourceComponent();
3688    parseBackboneAttributes(xpp, res);
3689    next(xpp);
3690    int eventType = nextNoWhitespace(xpp);
3691    while (eventType != XmlPullParser.END_TAG) {
3692      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3693        res.setCodeElement(parseCode(xpp));
3694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
3695        res.getParam().add(parseString(xpp));
3696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3697        res.setDocumentationElement(parseString(xpp));
3698      } else if (!parseBackboneContent(eventType, xpp, res))
3699        unknownContent(xpp);
3700      eventType = nextNoWhitespace(xpp);
3701    }
3702    next(xpp);
3703    parseElementClose(res);
3704    return res;
3705  }
3706
3707  protected Composition parseComposition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3708    Composition res = new Composition();
3709    parseDomainResourceAttributes(xpp, res);
3710    next(xpp);
3711    int eventType = nextNoWhitespace(xpp);
3712    while (eventType != XmlPullParser.END_TAG) {
3713      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3714        res.setIdentifier(parseIdentifier(xpp));
3715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3716        res.setDateElement(parseDateTime(xpp));
3717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3718        res.setType(parseCodeableConcept(xpp));
3719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
3720        res.setClass_(parseCodeableConcept(xpp));
3721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3722        res.setTitleElement(parseString(xpp));
3723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3724        res.setStatusElement(parseEnumeration(xpp, Composition.CompositionStatus.NULL, new Composition.CompositionStatusEnumFactory()));
3725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
3726        res.setConfidentialityElement(parseCode(xpp));
3727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3728        res.setSubject(parseReference(xpp));
3729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
3730        res.getAuthor().add(parseReference(xpp));
3731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attester")) {
3732        res.getAttester().add(parseCompositionCompositionAttesterComponent(xpp, res));
3733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
3734        res.setCustodian(parseReference(xpp));
3735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
3736        res.getEvent().add(parseCompositionCompositionEventComponent(xpp, res));
3737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3738        res.setEncounter(parseReference(xpp));
3739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
3740        res.getSection().add(parseCompositionSectionComponent(xpp, res));
3741      } else if (!parseDomainResourceContent(eventType, xpp, res))
3742        unknownContent(xpp);
3743      eventType = nextNoWhitespace(xpp);
3744    }
3745    next(xpp);
3746    parseElementClose(res);
3747    return res;
3748  }
3749
3750  protected Composition.CompositionAttesterComponent parseCompositionCompositionAttesterComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
3751    Composition.CompositionAttesterComponent res = new Composition.CompositionAttesterComponent();
3752    parseBackboneAttributes(xpp, res);
3753    next(xpp);
3754    int eventType = nextNoWhitespace(xpp);
3755    while (eventType != XmlPullParser.END_TAG) {
3756      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3757        res.getMode().add(parseEnumeration(xpp, Composition.CompositionAttestationMode.NULL, new Composition.CompositionAttestationModeEnumFactory()));
3758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
3759        res.setTimeElement(parseDateTime(xpp));
3760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
3761        res.setParty(parseReference(xpp));
3762      } else if (!parseBackboneContent(eventType, xpp, res))
3763        unknownContent(xpp);
3764      eventType = nextNoWhitespace(xpp);
3765    }
3766    next(xpp);
3767    parseElementClose(res);
3768    return res;
3769  }
3770
3771  protected Composition.CompositionEventComponent parseCompositionCompositionEventComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
3772    Composition.CompositionEventComponent res = new Composition.CompositionEventComponent();
3773    parseBackboneAttributes(xpp, res);
3774    next(xpp);
3775    int eventType = nextNoWhitespace(xpp);
3776    while (eventType != XmlPullParser.END_TAG) {
3777      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3778        res.getCode().add(parseCodeableConcept(xpp));
3779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3780        res.setPeriod(parsePeriod(xpp));
3781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3782        res.getDetail().add(parseReference(xpp));
3783      } else if (!parseBackboneContent(eventType, xpp, res))
3784        unknownContent(xpp);
3785      eventType = nextNoWhitespace(xpp);
3786    }
3787    next(xpp);
3788    parseElementClose(res);
3789    return res;
3790  }
3791
3792  protected Composition.SectionComponent parseCompositionSectionComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
3793    Composition.SectionComponent res = new Composition.SectionComponent();
3794    parseBackboneAttributes(xpp, res);
3795    next(xpp);
3796    int eventType = nextNoWhitespace(xpp);
3797    while (eventType != XmlPullParser.END_TAG) {
3798      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3799        res.setTitleElement(parseString(xpp));
3800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3801        res.setCode(parseCodeableConcept(xpp));
3802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
3803        res.setText(parseNarrative(xpp));
3804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3805        res.setModeElement(parseCode(xpp));
3806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
3807        res.setOrderedBy(parseCodeableConcept(xpp));
3808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
3809        res.getEntry().add(parseReference(xpp));
3810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
3811        res.setEmptyReason(parseCodeableConcept(xpp));
3812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
3813        res.getSection().add(parseCompositionSectionComponent(xpp, owner));
3814      } else if (!parseBackboneContent(eventType, xpp, res))
3815        unknownContent(xpp);
3816      eventType = nextNoWhitespace(xpp);
3817    }
3818    next(xpp);
3819    parseElementClose(res);
3820    return res;
3821  }
3822
3823  protected ConceptMap parseConceptMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3824    ConceptMap res = new ConceptMap();
3825    parseDomainResourceAttributes(xpp, res);
3826    next(xpp);
3827    int eventType = nextNoWhitespace(xpp);
3828    while (eventType != XmlPullParser.END_TAG) {
3829      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3830        res.setUrlElement(parseUri(xpp));
3831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3832        res.setIdentifier(parseIdentifier(xpp));
3833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3834        res.setVersionElement(parseString(xpp));
3835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3836        res.setNameElement(parseString(xpp));
3837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3838        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
3839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
3840        res.setExperimentalElement(parseBoolean(xpp));
3841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
3842        res.setPublisherElement(parseString(xpp));
3843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
3844        res.getContact().add(parseConceptMapConceptMapContactComponent(xpp, res));
3845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3846        res.setDateElement(parseDateTime(xpp));
3847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3848        res.setDescriptionElement(parseString(xpp));
3849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
3850        res.getUseContext().add(parseCodeableConcept(xpp));
3851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
3852        res.setRequirementsElement(parseString(xpp));
3853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
3854        res.setCopyrightElement(parseString(xpp));
3855      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
3856        res.setSource(parseType("source", xpp));
3857      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
3858        res.setTarget(parseType("target", xpp));
3859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
3860        res.getElement().add(parseConceptMapSourceElementComponent(xpp, res));
3861      } else if (!parseDomainResourceContent(eventType, xpp, res))
3862        unknownContent(xpp);
3863      eventType = nextNoWhitespace(xpp);
3864    }
3865    next(xpp);
3866    parseElementClose(res);
3867    return res;
3868  }
3869
3870  protected ConceptMap.ConceptMapContactComponent parseConceptMapConceptMapContactComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
3871    ConceptMap.ConceptMapContactComponent res = new ConceptMap.ConceptMapContactComponent();
3872    parseBackboneAttributes(xpp, res);
3873    next(xpp);
3874    int eventType = nextNoWhitespace(xpp);
3875    while (eventType != XmlPullParser.END_TAG) {
3876      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3877        res.setNameElement(parseString(xpp));
3878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
3879        res.getTelecom().add(parseContactPoint(xpp));
3880      } else if (!parseBackboneContent(eventType, xpp, res))
3881        unknownContent(xpp);
3882      eventType = nextNoWhitespace(xpp);
3883    }
3884    next(xpp);
3885    parseElementClose(res);
3886    return res;
3887  }
3888
3889  protected ConceptMap.SourceElementComponent parseConceptMapSourceElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
3890    ConceptMap.SourceElementComponent res = new ConceptMap.SourceElementComponent();
3891    parseBackboneAttributes(xpp, res);
3892    next(xpp);
3893    int eventType = nextNoWhitespace(xpp);
3894    while (eventType != XmlPullParser.END_TAG) {
3895      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
3896        res.setSystemElement(parseUri(xpp));
3897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3898        res.setVersionElement(parseString(xpp));
3899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3900        res.setCodeElement(parseCode(xpp));
3901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
3902        res.getTarget().add(parseConceptMapTargetElementComponent(xpp, owner));
3903      } else if (!parseBackboneContent(eventType, xpp, res))
3904        unknownContent(xpp);
3905      eventType = nextNoWhitespace(xpp);
3906    }
3907    next(xpp);
3908    parseElementClose(res);
3909    return res;
3910  }
3911
3912  protected ConceptMap.TargetElementComponent parseConceptMapTargetElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
3913    ConceptMap.TargetElementComponent res = new ConceptMap.TargetElementComponent();
3914    parseBackboneAttributes(xpp, res);
3915    next(xpp);
3916    int eventType = nextNoWhitespace(xpp);
3917    while (eventType != XmlPullParser.END_TAG) {
3918      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
3919        res.setSystemElement(parseUri(xpp));
3920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3921        res.setVersionElement(parseString(xpp));
3922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3923        res.setCodeElement(parseCode(xpp));
3924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("equivalence")) {
3925        res.setEquivalenceElement(parseEnumeration(xpp, Enumerations.ConceptMapEquivalence.NULL, new Enumerations.ConceptMapEquivalenceEnumFactory()));
3926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comments")) {
3927        res.setCommentsElement(parseString(xpp));
3928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
3929        res.getDependsOn().add(parseConceptMapOtherElementComponent(xpp, owner));
3930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
3931        res.getProduct().add(parseConceptMapOtherElementComponent(xpp, owner));
3932      } else if (!parseBackboneContent(eventType, xpp, res))
3933        unknownContent(xpp);
3934      eventType = nextNoWhitespace(xpp);
3935    }
3936    next(xpp);
3937    parseElementClose(res);
3938    return res;
3939  }
3940
3941  protected ConceptMap.OtherElementComponent parseConceptMapOtherElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
3942    ConceptMap.OtherElementComponent res = new ConceptMap.OtherElementComponent();
3943    parseBackboneAttributes(xpp, res);
3944    next(xpp);
3945    int eventType = nextNoWhitespace(xpp);
3946    while (eventType != XmlPullParser.END_TAG) {
3947      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
3948        res.setElementElement(parseUri(xpp));
3949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
3950        res.setSystemElement(parseUri(xpp));
3951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3952        res.setCodeElement(parseString(xpp));
3953      } else if (!parseBackboneContent(eventType, xpp, res))
3954        unknownContent(xpp);
3955      eventType = nextNoWhitespace(xpp);
3956    }
3957    next(xpp);
3958    parseElementClose(res);
3959    return res;
3960  }
3961
3962  protected Condition parseCondition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3963    Condition res = new Condition();
3964    parseDomainResourceAttributes(xpp, res);
3965    next(xpp);
3966    int eventType = nextNoWhitespace(xpp);
3967    while (eventType != XmlPullParser.END_TAG) {
3968      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3969        res.getIdentifier().add(parseIdentifier(xpp));
3970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3971        res.setPatient(parseReference(xpp));
3972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3973        res.setEncounter(parseReference(xpp));
3974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
3975        res.setAsserter(parseReference(xpp));
3976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateRecorded")) {
3977        res.setDateRecordedElement(parseDate(xpp));
3978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3979        res.setCode(parseCodeableConcept(xpp));
3980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3981        res.setCategory(parseCodeableConcept(xpp));
3982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
3983        res.setClinicalStatusElement(parseCode(xpp));
3984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
3985        res.setVerificationStatusElement(parseEnumeration(xpp, Condition.ConditionVerificationStatus.NULL, new Condition.ConditionVerificationStatusEnumFactory()));
3986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
3987        res.setSeverity(parseCodeableConcept(xpp));
3988      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
3989        res.setOnset(parseType("onset", xpp));
3990      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "abatement")) {
3991        res.setAbatement(parseType("abatement", xpp));
3992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stage")) {
3993        res.setStage(parseConditionConditionStageComponent(xpp, res));
3994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
3995        res.getEvidence().add(parseConditionConditionEvidenceComponent(xpp, res));
3996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
3997        res.getBodySite().add(parseCodeableConcept(xpp));
3998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
3999        res.setNotesElement(parseString(xpp));
4000      } else if (!parseDomainResourceContent(eventType, xpp, res))
4001        unknownContent(xpp);
4002      eventType = nextNoWhitespace(xpp);
4003    }
4004    next(xpp);
4005    parseElementClose(res);
4006    return res;
4007  }
4008
4009  protected Condition.ConditionStageComponent parseConditionConditionStageComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
4010    Condition.ConditionStageComponent res = new Condition.ConditionStageComponent();
4011    parseBackboneAttributes(xpp, res);
4012    next(xpp);
4013    int eventType = nextNoWhitespace(xpp);
4014    while (eventType != XmlPullParser.END_TAG) {
4015      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
4016        res.setSummary(parseCodeableConcept(xpp));
4017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
4018        res.getAssessment().add(parseReference(xpp));
4019      } else if (!parseBackboneContent(eventType, xpp, res))
4020        unknownContent(xpp);
4021      eventType = nextNoWhitespace(xpp);
4022    }
4023    next(xpp);
4024    parseElementClose(res);
4025    return res;
4026  }
4027
4028  protected Condition.ConditionEvidenceComponent parseConditionConditionEvidenceComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
4029    Condition.ConditionEvidenceComponent res = new Condition.ConditionEvidenceComponent();
4030    parseBackboneAttributes(xpp, res);
4031    next(xpp);
4032    int eventType = nextNoWhitespace(xpp);
4033    while (eventType != XmlPullParser.END_TAG) {
4034      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4035        res.setCode(parseCodeableConcept(xpp));
4036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4037        res.getDetail().add(parseReference(xpp));
4038      } else if (!parseBackboneContent(eventType, xpp, res))
4039        unknownContent(xpp);
4040      eventType = nextNoWhitespace(xpp);
4041    }
4042    next(xpp);
4043    parseElementClose(res);
4044    return res;
4045  }
4046
4047  protected Conformance parseConformance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4048    Conformance res = new Conformance();
4049    parseDomainResourceAttributes(xpp, res);
4050    next(xpp);
4051    int eventType = nextNoWhitespace(xpp);
4052    while (eventType != XmlPullParser.END_TAG) {
4053      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4054        res.setUrlElement(parseUri(xpp));
4055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4056        res.setVersionElement(parseString(xpp));
4057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4058        res.setNameElement(parseString(xpp));
4059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4060        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
4061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
4062        res.setExperimentalElement(parseBoolean(xpp));
4063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4064        res.setDateElement(parseDateTime(xpp));
4065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
4066        res.setPublisherElement(parseString(xpp));
4067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4068        res.getContact().add(parseConformanceConformanceContactComponent(xpp, res));
4069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4070        res.setDescriptionElement(parseString(xpp));
4071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
4072        res.getUseContext().add(parseCodeableConcept(xpp));
4073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
4074        res.setRequirementsElement(parseString(xpp));
4075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4076        res.setCopyrightElement(parseString(xpp));
4077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
4078        res.setKindElement(parseEnumeration(xpp, Conformance.ConformanceStatementKind.NULL, new Conformance.ConformanceStatementKindEnumFactory()));
4079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
4080        res.setSoftware(parseConformanceConformanceSoftwareComponent(xpp, res));
4081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
4082        res.setImplementation(parseConformanceConformanceImplementationComponent(xpp, res));
4083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
4084        res.setFhirVersionElement(parseId(xpp));
4085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("acceptUnknown")) {
4086        res.setAcceptUnknownElement(parseEnumeration(xpp, Conformance.UnknownContentCode.NULL, new Conformance.UnknownContentCodeEnumFactory()));
4087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
4088        res.getFormat().add(parseCode(xpp));
4089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
4090        res.getProfile().add(parseReference(xpp));
4091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rest")) {
4092        res.getRest().add(parseConformanceConformanceRestComponent(xpp, res));
4093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("messaging")) {
4094        res.getMessaging().add(parseConformanceConformanceMessagingComponent(xpp, res));
4095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
4096        res.getDocument().add(parseConformanceConformanceDocumentComponent(xpp, res));
4097      } else if (!parseDomainResourceContent(eventType, xpp, res))
4098        unknownContent(xpp);
4099      eventType = nextNoWhitespace(xpp);
4100    }
4101    next(xpp);
4102    parseElementClose(res);
4103    return res;
4104  }
4105
4106  protected Conformance.ConformanceContactComponent parseConformanceConformanceContactComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4107    Conformance.ConformanceContactComponent res = new Conformance.ConformanceContactComponent();
4108    parseBackboneAttributes(xpp, res);
4109    next(xpp);
4110    int eventType = nextNoWhitespace(xpp);
4111    while (eventType != XmlPullParser.END_TAG) {
4112      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4113        res.setNameElement(parseString(xpp));
4114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
4115        res.getTelecom().add(parseContactPoint(xpp));
4116      } else if (!parseBackboneContent(eventType, xpp, res))
4117        unknownContent(xpp);
4118      eventType = nextNoWhitespace(xpp);
4119    }
4120    next(xpp);
4121    parseElementClose(res);
4122    return res;
4123  }
4124
4125  protected Conformance.ConformanceSoftwareComponent parseConformanceConformanceSoftwareComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4126    Conformance.ConformanceSoftwareComponent res = new Conformance.ConformanceSoftwareComponent();
4127    parseBackboneAttributes(xpp, res);
4128    next(xpp);
4129    int eventType = nextNoWhitespace(xpp);
4130    while (eventType != XmlPullParser.END_TAG) {
4131      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4132        res.setNameElement(parseString(xpp));
4133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4134        res.setVersionElement(parseString(xpp));
4135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("releaseDate")) {
4136        res.setReleaseDateElement(parseDateTime(xpp));
4137      } else if (!parseBackboneContent(eventType, xpp, res))
4138        unknownContent(xpp);
4139      eventType = nextNoWhitespace(xpp);
4140    }
4141    next(xpp);
4142    parseElementClose(res);
4143    return res;
4144  }
4145
4146  protected Conformance.ConformanceImplementationComponent parseConformanceConformanceImplementationComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4147    Conformance.ConformanceImplementationComponent res = new Conformance.ConformanceImplementationComponent();
4148    parseBackboneAttributes(xpp, res);
4149    next(xpp);
4150    int eventType = nextNoWhitespace(xpp);
4151    while (eventType != XmlPullParser.END_TAG) {
4152      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4153        res.setDescriptionElement(parseString(xpp));
4154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4155        res.setUrlElement(parseUri(xpp));
4156      } else if (!parseBackboneContent(eventType, xpp, res))
4157        unknownContent(xpp);
4158      eventType = nextNoWhitespace(xpp);
4159    }
4160    next(xpp);
4161    parseElementClose(res);
4162    return res;
4163  }
4164
4165  protected Conformance.ConformanceRestComponent parseConformanceConformanceRestComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4166    Conformance.ConformanceRestComponent res = new Conformance.ConformanceRestComponent();
4167    parseBackboneAttributes(xpp, res);
4168    next(xpp);
4169    int eventType = nextNoWhitespace(xpp);
4170    while (eventType != XmlPullParser.END_TAG) {
4171      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
4172        res.setModeElement(parseEnumeration(xpp, Conformance.RestfulConformanceMode.NULL, new Conformance.RestfulConformanceModeEnumFactory()));
4173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4174        res.setDocumentationElement(parseString(xpp));
4175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
4176        res.setSecurity(parseConformanceConformanceRestSecurityComponent(xpp, owner));
4177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
4178        res.getResource().add(parseConformanceConformanceRestResourceComponent(xpp, owner));
4179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
4180        res.getInteraction().add(parseConformanceSystemInteractionComponent(xpp, owner));
4181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transactionMode")) {
4182        res.setTransactionModeElement(parseEnumeration(xpp, Conformance.TransactionMode.NULL, new Conformance.TransactionModeEnumFactory()));
4183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
4184        res.getSearchParam().add(parseConformanceConformanceRestResourceSearchParamComponent(xpp, owner));
4185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
4186        res.getOperation().add(parseConformanceConformanceRestOperationComponent(xpp, owner));
4187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
4188        res.getCompartment().add(parseUri(xpp));
4189      } else if (!parseBackboneContent(eventType, xpp, res))
4190        unknownContent(xpp);
4191      eventType = nextNoWhitespace(xpp);
4192    }
4193    next(xpp);
4194    parseElementClose(res);
4195    return res;
4196  }
4197
4198  protected Conformance.ConformanceRestSecurityComponent parseConformanceConformanceRestSecurityComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4199    Conformance.ConformanceRestSecurityComponent res = new Conformance.ConformanceRestSecurityComponent();
4200    parseBackboneAttributes(xpp, res);
4201    next(xpp);
4202    int eventType = nextNoWhitespace(xpp);
4203    while (eventType != XmlPullParser.END_TAG) {
4204      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cors")) {
4205        res.setCorsElement(parseBoolean(xpp));
4206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4207        res.getService().add(parseCodeableConcept(xpp));
4208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4209        res.setDescriptionElement(parseString(xpp));
4210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certificate")) {
4211        res.getCertificate().add(parseConformanceConformanceRestSecurityCertificateComponent(xpp, owner));
4212      } else if (!parseBackboneContent(eventType, xpp, res))
4213        unknownContent(xpp);
4214      eventType = nextNoWhitespace(xpp);
4215    }
4216    next(xpp);
4217    parseElementClose(res);
4218    return res;
4219  }
4220
4221  protected Conformance.ConformanceRestSecurityCertificateComponent parseConformanceConformanceRestSecurityCertificateComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4222    Conformance.ConformanceRestSecurityCertificateComponent res = new Conformance.ConformanceRestSecurityCertificateComponent();
4223    parseBackboneAttributes(xpp, res);
4224    next(xpp);
4225    int eventType = nextNoWhitespace(xpp);
4226    while (eventType != XmlPullParser.END_TAG) {
4227      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4228        res.setTypeElement(parseCode(xpp));
4229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("blob")) {
4230        res.setBlobElement(parseBase64Binary(xpp));
4231      } else if (!parseBackboneContent(eventType, xpp, res))
4232        unknownContent(xpp);
4233      eventType = nextNoWhitespace(xpp);
4234    }
4235    next(xpp);
4236    parseElementClose(res);
4237    return res;
4238  }
4239
4240  protected Conformance.ConformanceRestResourceComponent parseConformanceConformanceRestResourceComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4241    Conformance.ConformanceRestResourceComponent res = new Conformance.ConformanceRestResourceComponent();
4242    parseBackboneAttributes(xpp, res);
4243    next(xpp);
4244    int eventType = nextNoWhitespace(xpp);
4245    while (eventType != XmlPullParser.END_TAG) {
4246      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4247        res.setTypeElement(parseCode(xpp));
4248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
4249        res.setProfile(parseReference(xpp));
4250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
4251        res.getInteraction().add(parseConformanceResourceInteractionComponent(xpp, owner));
4252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
4253        res.setVersioningElement(parseEnumeration(xpp, Conformance.ResourceVersionPolicy.NULL, new Conformance.ResourceVersionPolicyEnumFactory()));
4254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readHistory")) {
4255        res.setReadHistoryElement(parseBoolean(xpp));
4256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("updateCreate")) {
4257        res.setUpdateCreateElement(parseBoolean(xpp));
4258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalCreate")) {
4259        res.setConditionalCreateElement(parseBoolean(xpp));
4260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalUpdate")) {
4261        res.setConditionalUpdateElement(parseBoolean(xpp));
4262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalDelete")) {
4263        res.setConditionalDeleteElement(parseEnumeration(xpp, Conformance.ConditionalDeleteStatus.NULL, new Conformance.ConditionalDeleteStatusEnumFactory()));
4264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchInclude")) {
4265        res.getSearchInclude().add(parseString(xpp));
4266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchRevInclude")) {
4267        res.getSearchRevInclude().add(parseString(xpp));
4268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
4269        res.getSearchParam().add(parseConformanceConformanceRestResourceSearchParamComponent(xpp, owner));
4270      } else if (!parseBackboneContent(eventType, xpp, res))
4271        unknownContent(xpp);
4272      eventType = nextNoWhitespace(xpp);
4273    }
4274    next(xpp);
4275    parseElementClose(res);
4276    return res;
4277  }
4278
4279  protected Conformance.ResourceInteractionComponent parseConformanceResourceInteractionComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4280    Conformance.ResourceInteractionComponent res = new Conformance.ResourceInteractionComponent();
4281    parseBackboneAttributes(xpp, res);
4282    next(xpp);
4283    int eventType = nextNoWhitespace(xpp);
4284    while (eventType != XmlPullParser.END_TAG) {
4285      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4286        res.setCodeElement(parseEnumeration(xpp, Conformance.TypeRestfulInteraction.NULL, new Conformance.TypeRestfulInteractionEnumFactory()));
4287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4288        res.setDocumentationElement(parseString(xpp));
4289      } else if (!parseBackboneContent(eventType, xpp, res))
4290        unknownContent(xpp);
4291      eventType = nextNoWhitespace(xpp);
4292    }
4293    next(xpp);
4294    parseElementClose(res);
4295    return res;
4296  }
4297
4298  protected Conformance.ConformanceRestResourceSearchParamComponent parseConformanceConformanceRestResourceSearchParamComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4299    Conformance.ConformanceRestResourceSearchParamComponent res = new Conformance.ConformanceRestResourceSearchParamComponent();
4300    parseBackboneAttributes(xpp, res);
4301    next(xpp);
4302    int eventType = nextNoWhitespace(xpp);
4303    while (eventType != XmlPullParser.END_TAG) {
4304      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4305        res.setNameElement(parseString(xpp));
4306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
4307        res.setDefinitionElement(parseUri(xpp));
4308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4309        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
4310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4311        res.setDocumentationElement(parseString(xpp));
4312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
4313        res.getTarget().add(parseCode(xpp));
4314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4315        res.getModifier().add(parseEnumeration(xpp, Conformance.SearchModifierCode.NULL, new Conformance.SearchModifierCodeEnumFactory()));
4316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chain")) {
4317        res.getChain().add(parseString(xpp));
4318      } else if (!parseBackboneContent(eventType, xpp, res))
4319        unknownContent(xpp);
4320      eventType = nextNoWhitespace(xpp);
4321    }
4322    next(xpp);
4323    parseElementClose(res);
4324    return res;
4325  }
4326
4327  protected Conformance.SystemInteractionComponent parseConformanceSystemInteractionComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4328    Conformance.SystemInteractionComponent res = new Conformance.SystemInteractionComponent();
4329    parseBackboneAttributes(xpp, res);
4330    next(xpp);
4331    int eventType = nextNoWhitespace(xpp);
4332    while (eventType != XmlPullParser.END_TAG) {
4333      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4334        res.setCodeElement(parseEnumeration(xpp, Conformance.SystemRestfulInteraction.NULL, new Conformance.SystemRestfulInteractionEnumFactory()));
4335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4336        res.setDocumentationElement(parseString(xpp));
4337      } else if (!parseBackboneContent(eventType, xpp, res))
4338        unknownContent(xpp);
4339      eventType = nextNoWhitespace(xpp);
4340    }
4341    next(xpp);
4342    parseElementClose(res);
4343    return res;
4344  }
4345
4346  protected Conformance.ConformanceRestOperationComponent parseConformanceConformanceRestOperationComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4347    Conformance.ConformanceRestOperationComponent res = new Conformance.ConformanceRestOperationComponent();
4348    parseBackboneAttributes(xpp, res);
4349    next(xpp);
4350    int eventType = nextNoWhitespace(xpp);
4351    while (eventType != XmlPullParser.END_TAG) {
4352      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4353        res.setNameElement(parseString(xpp));
4354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
4355        res.setDefinition(parseReference(xpp));
4356      } else if (!parseBackboneContent(eventType, xpp, res))
4357        unknownContent(xpp);
4358      eventType = nextNoWhitespace(xpp);
4359    }
4360    next(xpp);
4361    parseElementClose(res);
4362    return res;
4363  }
4364
4365  protected Conformance.ConformanceMessagingComponent parseConformanceConformanceMessagingComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4366    Conformance.ConformanceMessagingComponent res = new Conformance.ConformanceMessagingComponent();
4367    parseBackboneAttributes(xpp, res);
4368    next(xpp);
4369    int eventType = nextNoWhitespace(xpp);
4370    while (eventType != XmlPullParser.END_TAG) {
4371      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
4372        res.getEndpoint().add(parseConformanceConformanceMessagingEndpointComponent(xpp, owner));
4373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reliableCache")) {
4374        res.setReliableCacheElement(parseUnsignedInt(xpp));
4375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4376        res.setDocumentationElement(parseString(xpp));
4377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
4378        res.getEvent().add(parseConformanceConformanceMessagingEventComponent(xpp, owner));
4379      } else if (!parseBackboneContent(eventType, xpp, res))
4380        unknownContent(xpp);
4381      eventType = nextNoWhitespace(xpp);
4382    }
4383    next(xpp);
4384    parseElementClose(res);
4385    return res;
4386  }
4387
4388  protected Conformance.ConformanceMessagingEndpointComponent parseConformanceConformanceMessagingEndpointComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4389    Conformance.ConformanceMessagingEndpointComponent res = new Conformance.ConformanceMessagingEndpointComponent();
4390    parseBackboneAttributes(xpp, res);
4391    next(xpp);
4392    int eventType = nextNoWhitespace(xpp);
4393    while (eventType != XmlPullParser.END_TAG) {
4394      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
4395        res.setProtocol(parseCoding(xpp));
4396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
4397        res.setAddressElement(parseUri(xpp));
4398      } else if (!parseBackboneContent(eventType, xpp, res))
4399        unknownContent(xpp);
4400      eventType = nextNoWhitespace(xpp);
4401    }
4402    next(xpp);
4403    parseElementClose(res);
4404    return res;
4405  }
4406
4407  protected Conformance.ConformanceMessagingEventComponent parseConformanceConformanceMessagingEventComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4408    Conformance.ConformanceMessagingEventComponent res = new Conformance.ConformanceMessagingEventComponent();
4409    parseBackboneAttributes(xpp, res);
4410    next(xpp);
4411    int eventType = nextNoWhitespace(xpp);
4412    while (eventType != XmlPullParser.END_TAG) {
4413      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4414        res.setCode(parseCoding(xpp));
4415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4416        res.setCategoryElement(parseEnumeration(xpp, Conformance.MessageSignificanceCategory.NULL, new Conformance.MessageSignificanceCategoryEnumFactory()));
4417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
4418        res.setModeElement(parseEnumeration(xpp, Conformance.ConformanceEventMode.NULL, new Conformance.ConformanceEventModeEnumFactory()));
4419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
4420        res.setFocusElement(parseCode(xpp));
4421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4422        res.setRequest(parseReference(xpp));
4423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
4424        res.setResponse(parseReference(xpp));
4425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4426        res.setDocumentationElement(parseString(xpp));
4427      } else if (!parseBackboneContent(eventType, xpp, res))
4428        unknownContent(xpp);
4429      eventType = nextNoWhitespace(xpp);
4430    }
4431    next(xpp);
4432    parseElementClose(res);
4433    return res;
4434  }
4435
4436  protected Conformance.ConformanceDocumentComponent parseConformanceConformanceDocumentComponent(XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
4437    Conformance.ConformanceDocumentComponent res = new Conformance.ConformanceDocumentComponent();
4438    parseBackboneAttributes(xpp, res);
4439    next(xpp);
4440    int eventType = nextNoWhitespace(xpp);
4441    while (eventType != XmlPullParser.END_TAG) {
4442      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
4443        res.setModeElement(parseEnumeration(xpp, Conformance.DocumentMode.NULL, new Conformance.DocumentModeEnumFactory()));
4444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4445        res.setDocumentationElement(parseString(xpp));
4446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
4447        res.setProfile(parseReference(xpp));
4448      } else if (!parseBackboneContent(eventType, xpp, res))
4449        unknownContent(xpp);
4450      eventType = nextNoWhitespace(xpp);
4451    }
4452    next(xpp);
4453    parseElementClose(res);
4454    return res;
4455  }
4456
4457  protected Contract parseContract(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4458    Contract res = new Contract();
4459    parseDomainResourceAttributes(xpp, res);
4460    next(xpp);
4461    int eventType = nextNoWhitespace(xpp);
4462    while (eventType != XmlPullParser.END_TAG) {
4463      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4464        res.setIdentifier(parseIdentifier(xpp));
4465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
4466        res.setIssuedElement(parseDateTime(xpp));
4467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
4468        res.setApplies(parsePeriod(xpp));
4469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4470        res.getSubject().add(parseReference(xpp));
4471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
4472        res.getTopic().add(parseReference(xpp));
4473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
4474        res.getAuthority().add(parseReference(xpp));
4475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
4476        res.getDomain().add(parseReference(xpp));
4477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4478        res.setType(parseCodeableConcept(xpp));
4479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
4480        res.getSubType().add(parseCodeableConcept(xpp));
4481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
4482        res.getAction().add(parseCodeableConcept(xpp));
4483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionReason")) {
4484        res.getActionReason().add(parseCodeableConcept(xpp));
4485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
4486        res.getAgent().add(parseContractAgentComponent(xpp, res));
4487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signer")) {
4488        res.getSigner().add(parseContractSignatoryComponent(xpp, res));
4489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
4490        res.getValuedItem().add(parseContractValuedItemComponent(xpp, res));
4491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
4492        res.getTerm().add(parseContractTermComponent(xpp, res));
4493      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "binding")) {
4494        res.setBinding(parseType("binding", xpp));
4495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("friendly")) {
4496        res.getFriendly().add(parseContractFriendlyLanguageComponent(xpp, res));
4497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legal")) {
4498        res.getLegal().add(parseContractLegalLanguageComponent(xpp, res));
4499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
4500        res.getRule().add(parseContractComputableLanguageComponent(xpp, res));
4501      } else if (!parseDomainResourceContent(eventType, xpp, res))
4502        unknownContent(xpp);
4503      eventType = nextNoWhitespace(xpp);
4504    }
4505    next(xpp);
4506    parseElementClose(res);
4507    return res;
4508  }
4509
4510  protected Contract.AgentComponent parseContractAgentComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
4511    Contract.AgentComponent res = new Contract.AgentComponent();
4512    parseBackboneAttributes(xpp, res);
4513    next(xpp);
4514    int eventType = nextNoWhitespace(xpp);
4515    while (eventType != XmlPullParser.END_TAG) {
4516      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
4517        res.setActor(parseReference(xpp));
4518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
4519        res.getRole().add(parseCodeableConcept(xpp));
4520      } else if (!parseBackboneContent(eventType, xpp, res))
4521        unknownContent(xpp);
4522      eventType = nextNoWhitespace(xpp);
4523    }
4524    next(xpp);
4525    parseElementClose(res);
4526    return res;
4527  }
4528
4529  protected Contract.SignatoryComponent parseContractSignatoryComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
4530    Contract.SignatoryComponent res = new Contract.SignatoryComponent();
4531    parseBackboneAttributes(xpp, res);
4532    next(xpp);
4533    int eventType = nextNoWhitespace(xpp);
4534    while (eventType != XmlPullParser.END_TAG) {
4535      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4536        res.setType(parseCoding(xpp));
4537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
4538        res.setParty(parseReference(xpp));
4539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
4540        res.getSignature().add(parseSignature(xpp));
4541      } else if (!parseBackboneContent(eventType, xpp, res))
4542        unknownContent(xpp);
4543      eventType = nextNoWhitespace(xpp);
4544    }
4545    next(xpp);
4546    parseElementClose(res);
4547    return res;
4548  }
4549
4550  protected Contract.ValuedItemComponent parseContractValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
4551    Contract.ValuedItemComponent res = new Contract.ValuedItemComponent();
4552    parseBackboneAttributes(xpp, res);
4553    next(xpp);
4554    int eventType = nextNoWhitespace(xpp);
4555    while (eventType != XmlPullParser.END_TAG) {
4556      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
4557        res.setEntity(parseType("entity", xpp));
4558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4559        res.setIdentifier(parseIdentifier(xpp));
4560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
4561        res.setEffectiveTimeElement(parseDateTime(xpp));
4562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4563        res.setQuantity(parseSimpleQuantity(xpp));
4564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4565        res.setUnitPrice(parseMoney(xpp));
4566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4567        res.setFactorElement(parseDecimal(xpp));
4568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
4569        res.setPointsElement(parseDecimal(xpp));
4570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4571        res.setNet(parseMoney(xpp));
4572      } else if (!parseBackboneContent(eventType, xpp, res))
4573        unknownContent(xpp);
4574      eventType = nextNoWhitespace(xpp);
4575    }
4576    next(xpp);
4577    parseElementClose(res);
4578    return res;
4579  }
4580
4581  protected Contract.TermComponent parseContractTermComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
4582    Contract.TermComponent res = new Contract.TermComponent();
4583    parseBackboneAttributes(xpp, res);
4584    next(xpp);
4585    int eventType = nextNoWhitespace(xpp);
4586    while (eventType != XmlPullParser.END_TAG) {
4587      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4588        res.setIdentifier(parseIdentifier(xpp));
4589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
4590        res.setIssuedElement(parseDateTime(xpp));
4591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
4592        res.setApplies(parsePeriod(xpp));
4593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4594        res.setType(parseCodeableConcept(xpp));
4595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
4596        res.setSubType(parseCodeableConcept(xpp));
4597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
4598        res.getTopic().add(parseReference(xpp));
4599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
4600        res.getAction().add(parseCodeableConcept(xpp));
4601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionReason")) {
4602        res.getActionReason().add(parseCodeableConcept(xpp));
4603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
4604        res.getAgent().add(parseContractTermAgentComponent(xpp, owner));
4605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
4606        res.setTextElement(parseString(xpp));
4607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
4608        res.getValuedItem().add(parseContractTermValuedItemComponent(xpp, owner));
4609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
4610        res.getGroup().add(parseContractTermComponent(xpp, owner));
4611      } else if (!parseBackboneContent(eventType, xpp, res))
4612        unknownContent(xpp);
4613      eventType = nextNoWhitespace(xpp);
4614    }
4615    next(xpp);
4616    parseElementClose(res);
4617    return res;
4618  }
4619
4620  protected Contract.TermAgentComponent parseContractTermAgentComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
4621    Contract.TermAgentComponent res = new Contract.TermAgentComponent();
4622    parseBackboneAttributes(xpp, res);
4623    next(xpp);
4624    int eventType = nextNoWhitespace(xpp);
4625    while (eventType != XmlPullParser.END_TAG) {
4626      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
4627        res.setActor(parseReference(xpp));
4628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
4629        res.getRole().add(parseCodeableConcept(xpp));
4630      } else if (!parseBackboneContent(eventType, xpp, res))
4631        unknownContent(xpp);
4632      eventType = nextNoWhitespace(xpp);
4633    }
4634    next(xpp);
4635    parseElementClose(res);
4636    return res;
4637  }
4638
4639  protected Contract.TermValuedItemComponent parseContractTermValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
4640    Contract.TermValuedItemComponent res = new Contract.TermValuedItemComponent();
4641    parseBackboneAttributes(xpp, res);
4642    next(xpp);
4643    int eventType = nextNoWhitespace(xpp);
4644    while (eventType != XmlPullParser.END_TAG) {
4645      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
4646        res.setEntity(parseType("entity", xpp));
4647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4648        res.setIdentifier(parseIdentifier(xpp));
4649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
4650        res.setEffectiveTimeElement(parseDateTime(xpp));
4651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4652        res.setQuantity(parseSimpleQuantity(xpp));
4653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4654        res.setUnitPrice(parseMoney(xpp));
4655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4656        res.setFactorElement(parseDecimal(xpp));
4657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
4658        res.setPointsElement(parseDecimal(xpp));
4659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4660        res.setNet(parseMoney(xpp));
4661      } else if (!parseBackboneContent(eventType, xpp, res))
4662        unknownContent(xpp);
4663      eventType = nextNoWhitespace(xpp);
4664    }
4665    next(xpp);
4666    parseElementClose(res);
4667    return res;
4668  }
4669
4670  protected Contract.FriendlyLanguageComponent parseContractFriendlyLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
4671    Contract.FriendlyLanguageComponent res = new Contract.FriendlyLanguageComponent();
4672    parseBackboneAttributes(xpp, res);
4673    next(xpp);
4674    int eventType = nextNoWhitespace(xpp);
4675    while (eventType != XmlPullParser.END_TAG) {
4676      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
4677        res.setContent(parseType("content", xpp));
4678      } else if (!parseBackboneContent(eventType, xpp, res))
4679        unknownContent(xpp);
4680      eventType = nextNoWhitespace(xpp);
4681    }
4682    next(xpp);
4683    parseElementClose(res);
4684    return res;
4685  }
4686
4687  protected Contract.LegalLanguageComponent parseContractLegalLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
4688    Contract.LegalLanguageComponent res = new Contract.LegalLanguageComponent();
4689    parseBackboneAttributes(xpp, res);
4690    next(xpp);
4691    int eventType = nextNoWhitespace(xpp);
4692    while (eventType != XmlPullParser.END_TAG) {
4693      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
4694        res.setContent(parseType("content", xpp));
4695      } else if (!parseBackboneContent(eventType, xpp, res))
4696        unknownContent(xpp);
4697      eventType = nextNoWhitespace(xpp);
4698    }
4699    next(xpp);
4700    parseElementClose(res);
4701    return res;
4702  }
4703
4704  protected Contract.ComputableLanguageComponent parseContractComputableLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
4705    Contract.ComputableLanguageComponent res = new Contract.ComputableLanguageComponent();
4706    parseBackboneAttributes(xpp, res);
4707    next(xpp);
4708    int eventType = nextNoWhitespace(xpp);
4709    while (eventType != XmlPullParser.END_TAG) {
4710      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
4711        res.setContent(parseType("content", xpp));
4712      } else if (!parseBackboneContent(eventType, xpp, res))
4713        unknownContent(xpp);
4714      eventType = nextNoWhitespace(xpp);
4715    }
4716    next(xpp);
4717    parseElementClose(res);
4718    return res;
4719  }
4720
4721  protected Coverage parseCoverage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4722    Coverage res = new Coverage();
4723    parseDomainResourceAttributes(xpp, res);
4724    next(xpp);
4725    int eventType = nextNoWhitespace(xpp);
4726    while (eventType != XmlPullParser.END_TAG) {
4727      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "issuer")) {
4728        res.setIssuer(parseType("issuer", xpp));
4729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bin")) {
4730        res.setBinElement(parseString(xpp));
4731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4732        res.setPeriod(parsePeriod(xpp));
4733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4734        res.setType(parseCoding(xpp));
4735      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "planholder")) {
4736        res.setPlanholder(parseType("planholder", xpp));
4737      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "beneficiary")) {
4738        res.setBeneficiary(parseType("beneficiary", xpp));
4739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
4740        res.setRelationship(parseCoding(xpp));
4741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4742        res.getIdentifier().add(parseIdentifier(xpp));
4743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
4744        res.setGroupElement(parseString(xpp));
4745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
4746        res.setPlanElement(parseString(xpp));
4747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subPlan")) {
4748        res.setSubPlanElement(parseString(xpp));
4749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
4750        res.setDependentElement(parsePositiveInt(xpp));
4751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4752        res.setSequenceElement(parsePositiveInt(xpp));
4753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exception")) {
4754        res.getException().add(parseCoding(xpp));
4755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("school")) {
4756        res.setSchoolElement(parseString(xpp));
4757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
4758        res.setNetworkElement(parseString(xpp));
4759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
4760        res.getContract().add(parseReference(xpp));
4761      } else if (!parseDomainResourceContent(eventType, xpp, res))
4762        unknownContent(xpp);
4763      eventType = nextNoWhitespace(xpp);
4764    }
4765    next(xpp);
4766    parseElementClose(res);
4767    return res;
4768  }
4769
4770  protected DataElement parseDataElement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4771    DataElement res = new DataElement();
4772    parseDomainResourceAttributes(xpp, res);
4773    next(xpp);
4774    int eventType = nextNoWhitespace(xpp);
4775    while (eventType != XmlPullParser.END_TAG) {
4776      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4777        res.setUrlElement(parseUri(xpp));
4778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4779        res.getIdentifier().add(parseIdentifier(xpp));
4780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4781        res.setVersionElement(parseString(xpp));
4782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4783        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
4784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
4785        res.setExperimentalElement(parseBoolean(xpp));
4786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
4787        res.setPublisherElement(parseString(xpp));
4788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4789        res.setDateElement(parseDateTime(xpp));
4790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4791        res.setNameElement(parseString(xpp));
4792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4793        res.getContact().add(parseDataElementDataElementContactComponent(xpp, res));
4794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
4795        res.getUseContext().add(parseCodeableConcept(xpp));
4796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4797        res.setCopyrightElement(parseString(xpp));
4798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stringency")) {
4799        res.setStringencyElement(parseEnumeration(xpp, DataElement.DataElementStringency.NULL, new DataElement.DataElementStringencyEnumFactory()));
4800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
4801        res.getMapping().add(parseDataElementDataElementMappingComponent(xpp, res));
4802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
4803        res.getElement().add(parseElementDefinition(xpp));
4804      } else if (!parseDomainResourceContent(eventType, xpp, res))
4805        unknownContent(xpp);
4806      eventType = nextNoWhitespace(xpp);
4807    }
4808    next(xpp);
4809    parseElementClose(res);
4810    return res;
4811  }
4812
4813  protected DataElement.DataElementContactComponent parseDataElementDataElementContactComponent(XmlPullParser xpp, DataElement owner) throws XmlPullParserException, IOException, FHIRFormatError {
4814    DataElement.DataElementContactComponent res = new DataElement.DataElementContactComponent();
4815    parseBackboneAttributes(xpp, res);
4816    next(xpp);
4817    int eventType = nextNoWhitespace(xpp);
4818    while (eventType != XmlPullParser.END_TAG) {
4819      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4820        res.setNameElement(parseString(xpp));
4821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
4822        res.getTelecom().add(parseContactPoint(xpp));
4823      } else if (!parseBackboneContent(eventType, xpp, res))
4824        unknownContent(xpp);
4825      eventType = nextNoWhitespace(xpp);
4826    }
4827    next(xpp);
4828    parseElementClose(res);
4829    return res;
4830  }
4831
4832  protected DataElement.DataElementMappingComponent parseDataElementDataElementMappingComponent(XmlPullParser xpp, DataElement owner) throws XmlPullParserException, IOException, FHIRFormatError {
4833    DataElement.DataElementMappingComponent res = new DataElement.DataElementMappingComponent();
4834    parseBackboneAttributes(xpp, res);
4835    next(xpp);
4836    int eventType = nextNoWhitespace(xpp);
4837    while (eventType != XmlPullParser.END_TAG) {
4838      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
4839        res.setIdentityElement(parseId(xpp));
4840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
4841        res.setUriElement(parseUri(xpp));
4842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4843        res.setNameElement(parseString(xpp));
4844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
4845        res.setCommentElement(parseString(xpp));
4846      } else if (!parseBackboneContent(eventType, xpp, res))
4847        unknownContent(xpp);
4848      eventType = nextNoWhitespace(xpp);
4849    }
4850    next(xpp);
4851    parseElementClose(res);
4852    return res;
4853  }
4854
4855  protected DecisionSupportRule parseDecisionSupportRule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4856    DecisionSupportRule res = new DecisionSupportRule();
4857    parseDomainResourceAttributes(xpp, res);
4858    next(xpp);
4859    int eventType = nextNoWhitespace(xpp);
4860    while (eventType != XmlPullParser.END_TAG) {
4861      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("moduleMetadata")) {
4862        res.setModuleMetadata(parseModuleMetadata(xpp));
4863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
4864        res.getLibrary().add(parseReference(xpp));
4865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
4866        res.getTrigger().add(parseTriggerDefinition(xpp));
4867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
4868        res.setConditionElement(parseString(xpp));
4869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
4870        res.getAction().add(parseActionDefinition(xpp));
4871      } else if (!parseDomainResourceContent(eventType, xpp, res))
4872        unknownContent(xpp);
4873      eventType = nextNoWhitespace(xpp);
4874    }
4875    next(xpp);
4876    parseElementClose(res);
4877    return res;
4878  }
4879
4880  protected DecisionSupportServiceModule parseDecisionSupportServiceModule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4881    DecisionSupportServiceModule res = new DecisionSupportServiceModule();
4882    parseDomainResourceAttributes(xpp, res);
4883    next(xpp);
4884    int eventType = nextNoWhitespace(xpp);
4885    while (eventType != XmlPullParser.END_TAG) {
4886      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("moduleMetadata")) {
4887        res.setModuleMetadata(parseModuleMetadata(xpp));
4888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
4889        res.getTrigger().add(parseTriggerDefinition(xpp));
4890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
4891        res.getParameter().add(parseParameterDefinition(xpp));
4892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
4893        res.getDataRequirement().add(parseDataRequirement(xpp));
4894      } else if (!parseDomainResourceContent(eventType, xpp, res))
4895        unknownContent(xpp);
4896      eventType = nextNoWhitespace(xpp);
4897    }
4898    next(xpp);
4899    parseElementClose(res);
4900    return res;
4901  }
4902
4903  protected DetectedIssue parseDetectedIssue(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4904    DetectedIssue res = new DetectedIssue();
4905    parseDomainResourceAttributes(xpp, res);
4906    next(xpp);
4907    int eventType = nextNoWhitespace(xpp);
4908    while (eventType != XmlPullParser.END_TAG) {
4909      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4910        res.setPatient(parseReference(xpp));
4911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4912        res.setCategory(parseCodeableConcept(xpp));
4913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
4914        res.setSeverityElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueSeverity.NULL, new DetectedIssue.DetectedIssueSeverityEnumFactory()));
4915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicated")) {
4916        res.getImplicated().add(parseReference(xpp));
4917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4918        res.setDetailElement(parseString(xpp));
4919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4920        res.setDateElement(parseDateTime(xpp));
4921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
4922        res.setAuthor(parseReference(xpp));
4923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4924        res.setIdentifier(parseIdentifier(xpp));
4925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
4926        res.setReferenceElement(parseUri(xpp));
4927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
4928        res.getMitigation().add(parseDetectedIssueDetectedIssueMitigationComponent(xpp, res));
4929      } else if (!parseDomainResourceContent(eventType, xpp, res))
4930        unknownContent(xpp);
4931      eventType = nextNoWhitespace(xpp);
4932    }
4933    next(xpp);
4934    parseElementClose(res);
4935    return res;
4936  }
4937
4938  protected DetectedIssue.DetectedIssueMitigationComponent parseDetectedIssueDetectedIssueMitigationComponent(XmlPullParser xpp, DetectedIssue owner) throws XmlPullParserException, IOException, FHIRFormatError {
4939    DetectedIssue.DetectedIssueMitigationComponent res = new DetectedIssue.DetectedIssueMitigationComponent();
4940    parseBackboneAttributes(xpp, res);
4941    next(xpp);
4942    int eventType = nextNoWhitespace(xpp);
4943    while (eventType != XmlPullParser.END_TAG) {
4944      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
4945        res.setAction(parseCodeableConcept(xpp));
4946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4947        res.setDateElement(parseDateTime(xpp));
4948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
4949        res.setAuthor(parseReference(xpp));
4950      } else if (!parseBackboneContent(eventType, xpp, res))
4951        unknownContent(xpp);
4952      eventType = nextNoWhitespace(xpp);
4953    }
4954    next(xpp);
4955    parseElementClose(res);
4956    return res;
4957  }
4958
4959  protected Device parseDevice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4960    Device res = new Device();
4961    parseDomainResourceAttributes(xpp, res);
4962    next(xpp);
4963    int eventType = nextNoWhitespace(xpp);
4964    while (eventType != XmlPullParser.END_TAG) {
4965      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4966        res.getIdentifier().add(parseIdentifier(xpp));
4967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udiCarrier")) {
4968        res.setUdiCarrier(parseIdentifier(xpp));
4969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4970        res.setStatusElement(parseEnumeration(xpp, Device.DeviceStatus.NULL, new Device.DeviceStatusEnumFactory()));
4971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4972        res.setType(parseCodeableConcept(xpp));
4973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
4974        res.setLotNumberElement(parseString(xpp));
4975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
4976        res.setManufacturerElement(parseString(xpp));
4977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
4978        res.setManufactureDateElement(parseDateTime(xpp));
4979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
4980        res.setExpirationDateElement(parseDateTime(xpp));
4981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("model")) {
4982        res.setModelElement(parseString(xpp));
4983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4984        res.setVersionElement(parseString(xpp));
4985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4986        res.setPatient(parseReference(xpp));
4987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
4988        res.setOwner(parseReference(xpp));
4989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4990        res.getContact().add(parseContactPoint(xpp));
4991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
4992        res.setLocation(parseReference(xpp));
4993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4994        res.setUrlElement(parseUri(xpp));
4995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4996        res.getNote().add(parseAnnotation(xpp));
4997      } else if (!parseDomainResourceContent(eventType, xpp, res))
4998        unknownContent(xpp);
4999      eventType = nextNoWhitespace(xpp);
5000    }
5001    next(xpp);
5002    parseElementClose(res);
5003    return res;
5004  }
5005
5006  protected DeviceComponent parseDeviceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5007    DeviceComponent res = new DeviceComponent();
5008    parseDomainResourceAttributes(xpp, res);
5009    next(xpp);
5010    int eventType = nextNoWhitespace(xpp);
5011    while (eventType != XmlPullParser.END_TAG) {
5012      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5013        res.setType(parseCodeableConcept(xpp));
5014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5015        res.setIdentifier(parseIdentifier(xpp));
5016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastSystemChange")) {
5017        res.setLastSystemChangeElement(parseInstant(xpp));
5018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
5019        res.setSource(parseReference(xpp));
5020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
5021        res.setParent(parseReference(xpp));
5022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
5023        res.getOperationalStatus().add(parseCodeableConcept(xpp));
5024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterGroup")) {
5025        res.setParameterGroup(parseCodeableConcept(xpp));
5026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPrinciple")) {
5027        res.setMeasurementPrincipleElement(parseEnumeration(xpp, DeviceComponent.MeasmntPrinciple.NULL, new DeviceComponent.MeasmntPrincipleEnumFactory()));
5028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionSpecification")) {
5029        res.getProductionSpecification().add(parseDeviceComponentDeviceComponentProductionSpecificationComponent(xpp, res));
5030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("languageCode")) {
5031        res.setLanguageCode(parseCodeableConcept(xpp));
5032      } else if (!parseDomainResourceContent(eventType, xpp, res))
5033        unknownContent(xpp);
5034      eventType = nextNoWhitespace(xpp);
5035    }
5036    next(xpp);
5037    parseElementClose(res);
5038    return res;
5039  }
5040
5041  protected DeviceComponent.DeviceComponentProductionSpecificationComponent parseDeviceComponentDeviceComponentProductionSpecificationComponent(XmlPullParser xpp, DeviceComponent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5042    DeviceComponent.DeviceComponentProductionSpecificationComponent res = new DeviceComponent.DeviceComponentProductionSpecificationComponent();
5043    parseBackboneAttributes(xpp, res);
5044    next(xpp);
5045    int eventType = nextNoWhitespace(xpp);
5046    while (eventType != XmlPullParser.END_TAG) {
5047      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specType")) {
5048        res.setSpecType(parseCodeableConcept(xpp));
5049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("componentId")) {
5050        res.setComponentId(parseIdentifier(xpp));
5051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionSpec")) {
5052        res.setProductionSpecElement(parseString(xpp));
5053      } else if (!parseBackboneContent(eventType, xpp, res))
5054        unknownContent(xpp);
5055      eventType = nextNoWhitespace(xpp);
5056    }
5057    next(xpp);
5058    parseElementClose(res);
5059    return res;
5060  }
5061
5062  protected DeviceMetric parseDeviceMetric(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5063    DeviceMetric res = new DeviceMetric();
5064    parseDomainResourceAttributes(xpp, res);
5065    next(xpp);
5066    int eventType = nextNoWhitespace(xpp);
5067    while (eventType != XmlPullParser.END_TAG) {
5068      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5069        res.setType(parseCodeableConcept(xpp));
5070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5071        res.setIdentifier(parseIdentifier(xpp));
5072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
5073        res.setUnit(parseCodeableConcept(xpp));
5074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
5075        res.setSource(parseReference(xpp));
5076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
5077        res.setParent(parseReference(xpp));
5078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
5079        res.setOperationalStatusElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricOperationalStatus.NULL, new DeviceMetric.DeviceMetricOperationalStatusEnumFactory()));
5080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
5081        res.setColorElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricColor.NULL, new DeviceMetric.DeviceMetricColorEnumFactory()));
5082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5083        res.setCategoryElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCategory.NULL, new DeviceMetric.DeviceMetricCategoryEnumFactory()));
5084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPeriod")) {
5085        res.setMeasurementPeriod(parseTiming(xpp));
5086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("calibration")) {
5087        res.getCalibration().add(parseDeviceMetricDeviceMetricCalibrationComponent(xpp, res));
5088      } else if (!parseDomainResourceContent(eventType, xpp, res))
5089        unknownContent(xpp);
5090      eventType = nextNoWhitespace(xpp);
5091    }
5092    next(xpp);
5093    parseElementClose(res);
5094    return res;
5095  }
5096
5097  protected DeviceMetric.DeviceMetricCalibrationComponent parseDeviceMetricDeviceMetricCalibrationComponent(XmlPullParser xpp, DeviceMetric owner) throws XmlPullParserException, IOException, FHIRFormatError {
5098    DeviceMetric.DeviceMetricCalibrationComponent res = new DeviceMetric.DeviceMetricCalibrationComponent();
5099    parseBackboneAttributes(xpp, res);
5100    next(xpp);
5101    int eventType = nextNoWhitespace(xpp);
5102    while (eventType != XmlPullParser.END_TAG) {
5103      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5104        res.setTypeElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationType.NULL, new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory()));
5105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
5106        res.setStateElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationState.NULL, new DeviceMetric.DeviceMetricCalibrationStateEnumFactory()));
5107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
5108        res.setTimeElement(parseInstant(xpp));
5109      } else if (!parseBackboneContent(eventType, xpp, res))
5110        unknownContent(xpp);
5111      eventType = nextNoWhitespace(xpp);
5112    }
5113    next(xpp);
5114    parseElementClose(res);
5115    return res;
5116  }
5117
5118  protected DeviceUseRequest parseDeviceUseRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5119    DeviceUseRequest res = new DeviceUseRequest();
5120    parseDomainResourceAttributes(xpp, res);
5121    next(xpp);
5122    int eventType = nextNoWhitespace(xpp);
5123    while (eventType != XmlPullParser.END_TAG) {
5124      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bodySite")) {
5125        res.setBodySite(parseType("bodySite", xpp));
5126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5127        res.setStatusElement(parseEnumeration(xpp, DeviceUseRequest.DeviceUseRequestStatus.NULL, new DeviceUseRequest.DeviceUseRequestStatusEnumFactory()));
5128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
5129        res.setDevice(parseReference(xpp));
5130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5131        res.setEncounter(parseReference(xpp));
5132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5133        res.getIdentifier().add(parseIdentifier(xpp));
5134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
5135        res.getIndication().add(parseCodeableConcept(xpp));
5136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
5137        res.getNotes().add(parseString(xpp));
5138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prnReason")) {
5139        res.getPrnReason().add(parseCodeableConcept(xpp));
5140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedOn")) {
5141        res.setOrderedOnElement(parseDateTime(xpp));
5142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
5143        res.setRecordedOnElement(parseDateTime(xpp));
5144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5145        res.setSubject(parseReference(xpp));
5146      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
5147        res.setTiming(parseType("timing", xpp));
5148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5149        res.setPriorityElement(parseEnumeration(xpp, DeviceUseRequest.DeviceUseRequestPriority.NULL, new DeviceUseRequest.DeviceUseRequestPriorityEnumFactory()));
5150      } else if (!parseDomainResourceContent(eventType, xpp, res))
5151        unknownContent(xpp);
5152      eventType = nextNoWhitespace(xpp);
5153    }
5154    next(xpp);
5155    parseElementClose(res);
5156    return res;
5157  }
5158
5159  protected DeviceUseStatement parseDeviceUseStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5160    DeviceUseStatement res = new DeviceUseStatement();
5161    parseDomainResourceAttributes(xpp, res);
5162    next(xpp);
5163    int eventType = nextNoWhitespace(xpp);
5164    while (eventType != XmlPullParser.END_TAG) {
5165      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bodySite")) {
5166        res.setBodySite(parseType("bodySite", xpp));
5167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenUsed")) {
5168        res.setWhenUsed(parsePeriod(xpp));
5169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
5170        res.setDevice(parseReference(xpp));
5171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5172        res.getIdentifier().add(parseIdentifier(xpp));
5173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
5174        res.getIndication().add(parseCodeableConcept(xpp));
5175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
5176        res.getNotes().add(parseString(xpp));
5177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
5178        res.setRecordedOnElement(parseDateTime(xpp));
5179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5180        res.setSubject(parseReference(xpp));
5181      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
5182        res.setTiming(parseType("timing", xpp));
5183      } else if (!parseDomainResourceContent(eventType, xpp, res))
5184        unknownContent(xpp);
5185      eventType = nextNoWhitespace(xpp);
5186    }
5187    next(xpp);
5188    parseElementClose(res);
5189    return res;
5190  }
5191
5192  protected DiagnosticOrder parseDiagnosticOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5193    DiagnosticOrder res = new DiagnosticOrder();
5194    parseDomainResourceAttributes(xpp, res);
5195    next(xpp);
5196    int eventType = nextNoWhitespace(xpp);
5197    while (eventType != XmlPullParser.END_TAG) {
5198      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5199        res.getIdentifier().add(parseIdentifier(xpp));
5200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5201        res.setStatusElement(parseEnumeration(xpp, DiagnosticOrder.DiagnosticOrderStatus.NULL, new DiagnosticOrder.DiagnosticOrderStatusEnumFactory()));
5202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5203        res.setPriorityElement(parseEnumeration(xpp, DiagnosticOrder.DiagnosticOrderPriority.NULL, new DiagnosticOrder.DiagnosticOrderPriorityEnumFactory()));
5204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5205        res.setSubject(parseReference(xpp));
5206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5207        res.setEncounter(parseReference(xpp));
5208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
5209        res.setOrderer(parseReference(xpp));
5210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
5211        res.getReason().add(parseCodeableConcept(xpp));
5212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
5213        res.getSupportingInformation().add(parseReference(xpp));
5214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
5215        res.getSpecimen().add(parseReference(xpp));
5216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
5217        res.getEvent().add(parseDiagnosticOrderDiagnosticOrderEventComponent(xpp, res));
5218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
5219        res.getItem().add(parseDiagnosticOrderDiagnosticOrderItemComponent(xpp, res));
5220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5221        res.getNote().add(parseAnnotation(xpp));
5222      } else if (!parseDomainResourceContent(eventType, xpp, res))
5223        unknownContent(xpp);
5224      eventType = nextNoWhitespace(xpp);
5225    }
5226    next(xpp);
5227    parseElementClose(res);
5228    return res;
5229  }
5230
5231  protected DiagnosticOrder.DiagnosticOrderEventComponent parseDiagnosticOrderDiagnosticOrderEventComponent(XmlPullParser xpp, DiagnosticOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
5232    DiagnosticOrder.DiagnosticOrderEventComponent res = new DiagnosticOrder.DiagnosticOrderEventComponent();
5233    parseBackboneAttributes(xpp, res);
5234    next(xpp);
5235    int eventType = nextNoWhitespace(xpp);
5236    while (eventType != XmlPullParser.END_TAG) {
5237      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5238        res.setStatusElement(parseEnumeration(xpp, DiagnosticOrder.DiagnosticOrderStatus.NULL, new DiagnosticOrder.DiagnosticOrderStatusEnumFactory()));
5239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5240        res.setDescription(parseCodeableConcept(xpp));
5241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
5242        res.setDateTimeElement(parseDateTime(xpp));
5243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
5244        res.setActor(parseReference(xpp));
5245      } else if (!parseBackboneContent(eventType, xpp, res))
5246        unknownContent(xpp);
5247      eventType = nextNoWhitespace(xpp);
5248    }
5249    next(xpp);
5250    parseElementClose(res);
5251    return res;
5252  }
5253
5254  protected DiagnosticOrder.DiagnosticOrderItemComponent parseDiagnosticOrderDiagnosticOrderItemComponent(XmlPullParser xpp, DiagnosticOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
5255    DiagnosticOrder.DiagnosticOrderItemComponent res = new DiagnosticOrder.DiagnosticOrderItemComponent();
5256    parseBackboneAttributes(xpp, res);
5257    next(xpp);
5258    int eventType = nextNoWhitespace(xpp);
5259    while (eventType != XmlPullParser.END_TAG) {
5260      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5261        res.setCode(parseCodeableConcept(xpp));
5262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
5263        res.getSpecimen().add(parseReference(xpp));
5264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
5265        res.setBodySite(parseCodeableConcept(xpp));
5266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5267        res.setStatusElement(parseEnumeration(xpp, DiagnosticOrder.DiagnosticOrderStatus.NULL, new DiagnosticOrder.DiagnosticOrderStatusEnumFactory()));
5268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
5269        res.getEvent().add(parseDiagnosticOrderDiagnosticOrderEventComponent(xpp, owner));
5270      } else if (!parseBackboneContent(eventType, xpp, res))
5271        unknownContent(xpp);
5272      eventType = nextNoWhitespace(xpp);
5273    }
5274    next(xpp);
5275    parseElementClose(res);
5276    return res;
5277  }
5278
5279  protected DiagnosticReport parseDiagnosticReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5280    DiagnosticReport res = new DiagnosticReport();
5281    parseDomainResourceAttributes(xpp, res);
5282    next(xpp);
5283    int eventType = nextNoWhitespace(xpp);
5284    while (eventType != XmlPullParser.END_TAG) {
5285      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5286        res.getIdentifier().add(parseIdentifier(xpp));
5287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5288        res.setStatusElement(parseEnumeration(xpp, DiagnosticReport.DiagnosticReportStatus.NULL, new DiagnosticReport.DiagnosticReportStatusEnumFactory()));
5289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5290        res.setCategory(parseCodeableConcept(xpp));
5291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5292        res.setCode(parseCodeableConcept(xpp));
5293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5294        res.setSubject(parseReference(xpp));
5295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5296        res.setEncounter(parseReference(xpp));
5297      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
5298        res.setEffective(parseType("effective", xpp));
5299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
5300        res.setIssuedElement(parseInstant(xpp));
5301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
5302        res.setPerformer(parseReference(xpp));
5303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
5304        res.getRequest().add(parseReference(xpp));
5305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
5306        res.getSpecimen().add(parseReference(xpp));
5307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
5308        res.getResult().add(parseReference(xpp));
5309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
5310        res.getImagingStudy().add(parseReference(xpp));
5311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
5312        res.getImage().add(parseDiagnosticReportDiagnosticReportImageComponent(xpp, res));
5313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusion")) {
5314        res.setConclusionElement(parseString(xpp));
5315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codedDiagnosis")) {
5316        res.getCodedDiagnosis().add(parseCodeableConcept(xpp));
5317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentedForm")) {
5318        res.getPresentedForm().add(parseAttachment(xpp));
5319      } else if (!parseDomainResourceContent(eventType, xpp, res))
5320        unknownContent(xpp);
5321      eventType = nextNoWhitespace(xpp);
5322    }
5323    next(xpp);
5324    parseElementClose(res);
5325    return res;
5326  }
5327
5328  protected DiagnosticReport.DiagnosticReportImageComponent parseDiagnosticReportDiagnosticReportImageComponent(XmlPullParser xpp, DiagnosticReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
5329    DiagnosticReport.DiagnosticReportImageComponent res = new DiagnosticReport.DiagnosticReportImageComponent();
5330    parseBackboneAttributes(xpp, res);
5331    next(xpp);
5332    int eventType = nextNoWhitespace(xpp);
5333    while (eventType != XmlPullParser.END_TAG) {
5334      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
5335        res.setCommentElement(parseString(xpp));
5336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
5337        res.setLink(parseReference(xpp));
5338      } else if (!parseBackboneContent(eventType, xpp, res))
5339        unknownContent(xpp);
5340      eventType = nextNoWhitespace(xpp);
5341    }
5342    next(xpp);
5343    parseElementClose(res);
5344    return res;
5345  }
5346
5347  protected DocumentManifest parseDocumentManifest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5348    DocumentManifest res = new DocumentManifest();
5349    parseDomainResourceAttributes(xpp, res);
5350    next(xpp);
5351    int eventType = nextNoWhitespace(xpp);
5352    while (eventType != XmlPullParser.END_TAG) {
5353      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
5354        res.setMasterIdentifier(parseIdentifier(xpp));
5355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5356        res.getIdentifier().add(parseIdentifier(xpp));
5357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5358        res.setSubject(parseReference(xpp));
5359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
5360        res.getRecipient().add(parseReference(xpp));
5361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5362        res.setType(parseCodeableConcept(xpp));
5363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5364        res.getAuthor().add(parseReference(xpp));
5365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
5366        res.setCreatedElement(parseDateTime(xpp));
5367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
5368        res.setSourceElement(parseUri(xpp));
5369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5370        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
5371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5372        res.setDescriptionElement(parseString(xpp));
5373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
5374        res.getContent().add(parseDocumentManifestDocumentManifestContentComponent(xpp, res));
5375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
5376        res.getRelated().add(parseDocumentManifestDocumentManifestRelatedComponent(xpp, res));
5377      } else if (!parseDomainResourceContent(eventType, xpp, res))
5378        unknownContent(xpp);
5379      eventType = nextNoWhitespace(xpp);
5380    }
5381    next(xpp);
5382    parseElementClose(res);
5383    return res;
5384  }
5385
5386  protected DocumentManifest.DocumentManifestContentComponent parseDocumentManifestDocumentManifestContentComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
5387    DocumentManifest.DocumentManifestContentComponent res = new DocumentManifest.DocumentManifestContentComponent();
5388    parseBackboneAttributes(xpp, res);
5389    next(xpp);
5390    int eventType = nextNoWhitespace(xpp);
5391    while (eventType != XmlPullParser.END_TAG) {
5392      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "p")) {
5393        res.setP(parseType("p", xpp));
5394      } else if (!parseBackboneContent(eventType, xpp, res))
5395        unknownContent(xpp);
5396      eventType = nextNoWhitespace(xpp);
5397    }
5398    next(xpp);
5399    parseElementClose(res);
5400    return res;
5401  }
5402
5403  protected DocumentManifest.DocumentManifestRelatedComponent parseDocumentManifestDocumentManifestRelatedComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
5404    DocumentManifest.DocumentManifestRelatedComponent res = new DocumentManifest.DocumentManifestRelatedComponent();
5405    parseBackboneAttributes(xpp, res);
5406    next(xpp);
5407    int eventType = nextNoWhitespace(xpp);
5408    while (eventType != XmlPullParser.END_TAG) {
5409      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5410        res.setIdentifier(parseIdentifier(xpp));
5411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
5412        res.setRef(parseReference(xpp));
5413      } else if (!parseBackboneContent(eventType, xpp, res))
5414        unknownContent(xpp);
5415      eventType = nextNoWhitespace(xpp);
5416    }
5417    next(xpp);
5418    parseElementClose(res);
5419    return res;
5420  }
5421
5422  protected DocumentReference parseDocumentReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5423    DocumentReference res = new DocumentReference();
5424    parseDomainResourceAttributes(xpp, res);
5425    next(xpp);
5426    int eventType = nextNoWhitespace(xpp);
5427    while (eventType != XmlPullParser.END_TAG) {
5428      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
5429        res.setMasterIdentifier(parseIdentifier(xpp));
5430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5431        res.getIdentifier().add(parseIdentifier(xpp));
5432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5433        res.setSubject(parseReference(xpp));
5434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5435        res.setType(parseCodeableConcept(xpp));
5436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
5437        res.setClass_(parseCodeableConcept(xpp));
5438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5439        res.getAuthor().add(parseReference(xpp));
5440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
5441        res.setCustodian(parseReference(xpp));
5442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authenticator")) {
5443        res.setAuthenticator(parseReference(xpp));
5444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
5445        res.setCreatedElement(parseDateTime(xpp));
5446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indexed")) {
5447        res.setIndexedElement(parseInstant(xpp));
5448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5449        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
5450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("docStatus")) {
5451        res.setDocStatus(parseCodeableConcept(xpp));
5452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
5453        res.getRelatesTo().add(parseDocumentReferenceDocumentReferenceRelatesToComponent(xpp, res));
5454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5455        res.setDescriptionElement(parseString(xpp));
5456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
5457        res.getSecurityLabel().add(parseCodeableConcept(xpp));
5458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
5459        res.getContent().add(parseDocumentReferenceDocumentReferenceContentComponent(xpp, res));
5460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
5461        res.setContext(parseDocumentReferenceDocumentReferenceContextComponent(xpp, res));
5462      } else if (!parseDomainResourceContent(eventType, xpp, res))
5463        unknownContent(xpp);
5464      eventType = nextNoWhitespace(xpp);
5465    }
5466    next(xpp);
5467    parseElementClose(res);
5468    return res;
5469  }
5470
5471  protected DocumentReference.DocumentReferenceRelatesToComponent parseDocumentReferenceDocumentReferenceRelatesToComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
5472    DocumentReference.DocumentReferenceRelatesToComponent res = new DocumentReference.DocumentReferenceRelatesToComponent();
5473    parseBackboneAttributes(xpp, res);
5474    next(xpp);
5475    int eventType = nextNoWhitespace(xpp);
5476    while (eventType != XmlPullParser.END_TAG) {
5477      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5478        res.setCodeElement(parseEnumeration(xpp, DocumentReference.DocumentRelationshipType.NULL, new DocumentReference.DocumentRelationshipTypeEnumFactory()));
5479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
5480        res.setTarget(parseReference(xpp));
5481      } else if (!parseBackboneContent(eventType, xpp, res))
5482        unknownContent(xpp);
5483      eventType = nextNoWhitespace(xpp);
5484    }
5485    next(xpp);
5486    parseElementClose(res);
5487    return res;
5488  }
5489
5490  protected DocumentReference.DocumentReferenceContentComponent parseDocumentReferenceDocumentReferenceContentComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
5491    DocumentReference.DocumentReferenceContentComponent res = new DocumentReference.DocumentReferenceContentComponent();
5492    parseBackboneAttributes(xpp, res);
5493    next(xpp);
5494    int eventType = nextNoWhitespace(xpp);
5495    while (eventType != XmlPullParser.END_TAG) {
5496      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
5497        res.setAttachment(parseAttachment(xpp));
5498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
5499        res.getFormat().add(parseCoding(xpp));
5500      } else if (!parseBackboneContent(eventType, xpp, res))
5501        unknownContent(xpp);
5502      eventType = nextNoWhitespace(xpp);
5503    }
5504    next(xpp);
5505    parseElementClose(res);
5506    return res;
5507  }
5508
5509  protected DocumentReference.DocumentReferenceContextComponent parseDocumentReferenceDocumentReferenceContextComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
5510    DocumentReference.DocumentReferenceContextComponent res = new DocumentReference.DocumentReferenceContextComponent();
5511    parseBackboneAttributes(xpp, res);
5512    next(xpp);
5513    int eventType = nextNoWhitespace(xpp);
5514    while (eventType != XmlPullParser.END_TAG) {
5515      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5516        res.setEncounter(parseReference(xpp));
5517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
5518        res.getEvent().add(parseCodeableConcept(xpp));
5519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5520        res.setPeriod(parsePeriod(xpp));
5521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facilityType")) {
5522        res.setFacilityType(parseCodeableConcept(xpp));
5523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practiceSetting")) {
5524        res.setPracticeSetting(parseCodeableConcept(xpp));
5525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourcePatientInfo")) {
5526        res.setSourcePatientInfo(parseReference(xpp));
5527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
5528        res.getRelated().add(parseDocumentReferenceDocumentReferenceContextRelatedComponent(xpp, owner));
5529      } else if (!parseBackboneContent(eventType, xpp, res))
5530        unknownContent(xpp);
5531      eventType = nextNoWhitespace(xpp);
5532    }
5533    next(xpp);
5534    parseElementClose(res);
5535    return res;
5536  }
5537
5538  protected DocumentReference.DocumentReferenceContextRelatedComponent parseDocumentReferenceDocumentReferenceContextRelatedComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
5539    DocumentReference.DocumentReferenceContextRelatedComponent res = new DocumentReference.DocumentReferenceContextRelatedComponent();
5540    parseBackboneAttributes(xpp, res);
5541    next(xpp);
5542    int eventType = nextNoWhitespace(xpp);
5543    while (eventType != XmlPullParser.END_TAG) {
5544      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5545        res.setIdentifier(parseIdentifier(xpp));
5546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
5547        res.setRef(parseReference(xpp));
5548      } else if (!parseBackboneContent(eventType, xpp, res))
5549        unknownContent(xpp);
5550      eventType = nextNoWhitespace(xpp);
5551    }
5552    next(xpp);
5553    parseElementClose(res);
5554    return res;
5555  }
5556
5557  protected EligibilityRequest parseEligibilityRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5558    EligibilityRequest res = new EligibilityRequest();
5559    parseDomainResourceAttributes(xpp, res);
5560    next(xpp);
5561    int eventType = nextNoWhitespace(xpp);
5562    while (eventType != XmlPullParser.END_TAG) {
5563      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5564        res.getIdentifier().add(parseIdentifier(xpp));
5565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
5566        res.setRuleset(parseCoding(xpp));
5567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
5568        res.setOriginalRuleset(parseCoding(xpp));
5569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
5570        res.setCreatedElement(parseDateTime(xpp));
5571      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5572        res.setTarget(parseType("target", xpp));
5573      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "provider")) {
5574        res.setProvider(parseType("provider", xpp));
5575      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "organization")) {
5576        res.setOrganization(parseType("organization", xpp));
5577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5578        res.setPriority(parseCoding(xpp));
5579      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "enterer")) {
5580        res.setEnterer(parseType("enterer", xpp));
5581      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "facility")) {
5582        res.setFacility(parseType("facility", xpp));
5583      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "patient")) {
5584        res.setPatient(parseType("patient", xpp));
5585      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "coverage")) {
5586        res.setCoverage(parseType("coverage", xpp));
5587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
5588        res.setBusinessArrangementElement(parseString(xpp));
5589      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
5590        res.setServiced(parseType("serviced", xpp));
5591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitCategory")) {
5592        res.setBenefitCategory(parseCoding(xpp));
5593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitSubCategory")) {
5594        res.setBenefitSubCategory(parseCoding(xpp));
5595      } else if (!parseDomainResourceContent(eventType, xpp, res))
5596        unknownContent(xpp);
5597      eventType = nextNoWhitespace(xpp);
5598    }
5599    next(xpp);
5600    parseElementClose(res);
5601    return res;
5602  }
5603
5604  protected EligibilityResponse parseEligibilityResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5605    EligibilityResponse res = new EligibilityResponse();
5606    parseDomainResourceAttributes(xpp, res);
5607    next(xpp);
5608    int eventType = nextNoWhitespace(xpp);
5609    while (eventType != XmlPullParser.END_TAG) {
5610      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5611        res.getIdentifier().add(parseIdentifier(xpp));
5612      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "request")) {
5613        res.setRequest(parseType("request", xpp));
5614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
5615        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
5616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
5617        res.setDispositionElement(parseString(xpp));
5618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
5619        res.setRuleset(parseCoding(xpp));
5620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
5621        res.setOriginalRuleset(parseCoding(xpp));
5622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
5623        res.setCreatedElement(parseDateTime(xpp));
5624      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "organization")) {
5625        res.setOrganization(parseType("organization", xpp));
5626      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "requestProvider")) {
5627        res.setRequestProvider(parseType("requestProvider", xpp));
5628      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "requestOrganization")) {
5629        res.setRequestOrganization(parseType("requestOrganization", xpp));
5630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inforce")) {
5631        res.setInforceElement(parseBoolean(xpp));
5632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
5633        res.setContract(parseReference(xpp));
5634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
5635        res.setForm(parseCoding(xpp));
5636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
5637        res.getBenefitBalance().add(parseEligibilityResponseBenefitsComponent(xpp, res));
5638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
5639        res.getError().add(parseEligibilityResponseErrorsComponent(xpp, res));
5640      } else if (!parseDomainResourceContent(eventType, xpp, res))
5641        unknownContent(xpp);
5642      eventType = nextNoWhitespace(xpp);
5643    }
5644    next(xpp);
5645    parseElementClose(res);
5646    return res;
5647  }
5648
5649  protected EligibilityResponse.BenefitsComponent parseEligibilityResponseBenefitsComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5650    EligibilityResponse.BenefitsComponent res = new EligibilityResponse.BenefitsComponent();
5651    parseBackboneAttributes(xpp, res);
5652    next(xpp);
5653    int eventType = nextNoWhitespace(xpp);
5654    while (eventType != XmlPullParser.END_TAG) {
5655      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5656        res.setCategory(parseCoding(xpp));
5657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subCategory")) {
5658        res.setSubCategory(parseCoding(xpp));
5659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
5660        res.setNetwork(parseCoding(xpp));
5661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
5662        res.setUnit(parseCoding(xpp));
5663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
5664        res.setTerm(parseCoding(xpp));
5665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
5666        res.getFinancial().add(parseEligibilityResponseBenefitComponent(xpp, owner));
5667      } else if (!parseBackboneContent(eventType, xpp, res))
5668        unknownContent(xpp);
5669      eventType = nextNoWhitespace(xpp);
5670    }
5671    next(xpp);
5672    parseElementClose(res);
5673    return res;
5674  }
5675
5676  protected EligibilityResponse.BenefitComponent parseEligibilityResponseBenefitComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5677    EligibilityResponse.BenefitComponent res = new EligibilityResponse.BenefitComponent();
5678    parseBackboneAttributes(xpp, res);
5679    next(xpp);
5680    int eventType = nextNoWhitespace(xpp);
5681    while (eventType != XmlPullParser.END_TAG) {
5682      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5683        res.setType(parseCoding(xpp));
5684      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "benefit")) {
5685        res.setBenefit(parseType("benefit", xpp));
5686      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "benefitUsed")) {
5687        res.setBenefitUsed(parseType("benefitUsed", xpp));
5688      } else if (!parseBackboneContent(eventType, xpp, res))
5689        unknownContent(xpp);
5690      eventType = nextNoWhitespace(xpp);
5691    }
5692    next(xpp);
5693    parseElementClose(res);
5694    return res;
5695  }
5696
5697  protected EligibilityResponse.ErrorsComponent parseEligibilityResponseErrorsComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5698    EligibilityResponse.ErrorsComponent res = new EligibilityResponse.ErrorsComponent();
5699    parseBackboneAttributes(xpp, res);
5700    next(xpp);
5701    int eventType = nextNoWhitespace(xpp);
5702    while (eventType != XmlPullParser.END_TAG) {
5703      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5704        res.setCode(parseCoding(xpp));
5705      } else if (!parseBackboneContent(eventType, xpp, res))
5706        unknownContent(xpp);
5707      eventType = nextNoWhitespace(xpp);
5708    }
5709    next(xpp);
5710    parseElementClose(res);
5711    return res;
5712  }
5713
5714  protected Encounter parseEncounter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5715    Encounter res = new Encounter();
5716    parseDomainResourceAttributes(xpp, res);
5717    next(xpp);
5718    int eventType = nextNoWhitespace(xpp);
5719    while (eventType != XmlPullParser.END_TAG) {
5720      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5721        res.getIdentifier().add(parseIdentifier(xpp));
5722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5723        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterState.NULL, new Encounter.EncounterStateEnumFactory()));
5724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
5725        res.getStatusHistory().add(parseEncounterEncounterStatusHistoryComponent(xpp, res));
5726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
5727        res.setClass_Element(parseEnumeration(xpp, Encounter.EncounterClass.NULL, new Encounter.EncounterClassEnumFactory()));
5728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5729        res.getType().add(parseCodeableConcept(xpp));
5730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5731        res.setPriority(parseCodeableConcept(xpp));
5732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5733        res.setPatient(parseReference(xpp));
5734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("episodeOfCare")) {
5735        res.getEpisodeOfCare().add(parseReference(xpp));
5736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomingReferral")) {
5737        res.getIncomingReferral().add(parseReference(xpp));
5738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
5739        res.getParticipant().add(parseEncounterEncounterParticipantComponent(xpp, res));
5740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
5741        res.setAppointment(parseReference(xpp));
5742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5743        res.setPeriod(parsePeriod(xpp));
5744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
5745        res.setLength(parseDuration(xpp));
5746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
5747        res.getReason().add(parseCodeableConcept(xpp));
5748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
5749        res.getIndication().add(parseReference(xpp));
5750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
5751        res.setHospitalization(parseEncounterEncounterHospitalizationComponent(xpp, res));
5752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
5753        res.getLocation().add(parseEncounterEncounterLocationComponent(xpp, res));
5754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvider")) {
5755        res.setServiceProvider(parseReference(xpp));
5756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
5757        res.setPartOf(parseReference(xpp));
5758      } else if (!parseDomainResourceContent(eventType, xpp, res))
5759        unknownContent(xpp);
5760      eventType = nextNoWhitespace(xpp);
5761    }
5762    next(xpp);
5763    parseElementClose(res);
5764    return res;
5765  }
5766
5767  protected Encounter.EncounterStatusHistoryComponent parseEncounterEncounterStatusHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
5768    Encounter.EncounterStatusHistoryComponent res = new Encounter.EncounterStatusHistoryComponent();
5769    parseBackboneAttributes(xpp, res);
5770    next(xpp);
5771    int eventType = nextNoWhitespace(xpp);
5772    while (eventType != XmlPullParser.END_TAG) {
5773      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5774        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterState.NULL, new Encounter.EncounterStateEnumFactory()));
5775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5776        res.setPeriod(parsePeriod(xpp));
5777      } else if (!parseBackboneContent(eventType, xpp, res))
5778        unknownContent(xpp);
5779      eventType = nextNoWhitespace(xpp);
5780    }
5781    next(xpp);
5782    parseElementClose(res);
5783    return res;
5784  }
5785
5786  protected Encounter.EncounterParticipantComponent parseEncounterEncounterParticipantComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
5787    Encounter.EncounterParticipantComponent res = new Encounter.EncounterParticipantComponent();
5788    parseBackboneAttributes(xpp, res);
5789    next(xpp);
5790    int eventType = nextNoWhitespace(xpp);
5791    while (eventType != XmlPullParser.END_TAG) {
5792      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5793        res.getType().add(parseCodeableConcept(xpp));
5794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5795        res.setPeriod(parsePeriod(xpp));
5796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
5797        res.setIndividual(parseReference(xpp));
5798      } else if (!parseBackboneContent(eventType, xpp, res))
5799        unknownContent(xpp);
5800      eventType = nextNoWhitespace(xpp);
5801    }
5802    next(xpp);
5803    parseElementClose(res);
5804    return res;
5805  }
5806
5807  protected Encounter.EncounterHospitalizationComponent parseEncounterEncounterHospitalizationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
5808    Encounter.EncounterHospitalizationComponent res = new Encounter.EncounterHospitalizationComponent();
5809    parseBackboneAttributes(xpp, res);
5810    next(xpp);
5811    int eventType = nextNoWhitespace(xpp);
5812    while (eventType != XmlPullParser.END_TAG) {
5813      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAdmissionIdentifier")) {
5814        res.setPreAdmissionIdentifier(parseIdentifier(xpp));
5815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
5816        res.setOrigin(parseReference(xpp));
5817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admitSource")) {
5818        res.setAdmitSource(parseCodeableConcept(xpp));
5819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admittingDiagnosis")) {
5820        res.getAdmittingDiagnosis().add(parseReference(xpp));
5821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reAdmission")) {
5822        res.setReAdmission(parseCodeableConcept(xpp));
5823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dietPreference")) {
5824        res.getDietPreference().add(parseCodeableConcept(xpp));
5825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCourtesy")) {
5826        res.getSpecialCourtesy().add(parseCodeableConcept(xpp));
5827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialArrangement")) {
5828        res.getSpecialArrangement().add(parseCodeableConcept(xpp));
5829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
5830        res.setDestination(parseReference(xpp));
5831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDisposition")) {
5832        res.setDischargeDisposition(parseCodeableConcept(xpp));
5833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDiagnosis")) {
5834        res.getDischargeDiagnosis().add(parseReference(xpp));
5835      } else if (!parseBackboneContent(eventType, xpp, res))
5836        unknownContent(xpp);
5837      eventType = nextNoWhitespace(xpp);
5838    }
5839    next(xpp);
5840    parseElementClose(res);
5841    return res;
5842  }
5843
5844  protected Encounter.EncounterLocationComponent parseEncounterEncounterLocationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
5845    Encounter.EncounterLocationComponent res = new Encounter.EncounterLocationComponent();
5846    parseBackboneAttributes(xpp, res);
5847    next(xpp);
5848    int eventType = nextNoWhitespace(xpp);
5849    while (eventType != XmlPullParser.END_TAG) {
5850      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
5851        res.setLocation(parseReference(xpp));
5852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5853        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterLocationStatus.NULL, new Encounter.EncounterLocationStatusEnumFactory()));
5854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5855        res.setPeriod(parsePeriod(xpp));
5856      } else if (!parseBackboneContent(eventType, xpp, res))
5857        unknownContent(xpp);
5858      eventType = nextNoWhitespace(xpp);
5859    }
5860    next(xpp);
5861    parseElementClose(res);
5862    return res;
5863  }
5864
5865  protected EnrollmentRequest parseEnrollmentRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5866    EnrollmentRequest res = new EnrollmentRequest();
5867    parseDomainResourceAttributes(xpp, res);
5868    next(xpp);
5869    int eventType = nextNoWhitespace(xpp);
5870    while (eventType != XmlPullParser.END_TAG) {
5871      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5872        res.getIdentifier().add(parseIdentifier(xpp));
5873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
5874        res.setRuleset(parseCoding(xpp));
5875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
5876        res.setOriginalRuleset(parseCoding(xpp));
5877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
5878        res.setCreatedElement(parseDateTime(xpp));
5879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
5880        res.setTarget(parseReference(xpp));
5881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
5882        res.setProvider(parseReference(xpp));
5883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
5884        res.setOrganization(parseReference(xpp));
5885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5886        res.setSubject(parseReference(xpp));
5887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
5888        res.setCoverage(parseReference(xpp));
5889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
5890        res.setRelationship(parseCoding(xpp));
5891      } else if (!parseDomainResourceContent(eventType, xpp, res))
5892        unknownContent(xpp);
5893      eventType = nextNoWhitespace(xpp);
5894    }
5895    next(xpp);
5896    parseElementClose(res);
5897    return res;
5898  }
5899
5900  protected EnrollmentResponse parseEnrollmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5901    EnrollmentResponse res = new EnrollmentResponse();
5902    parseDomainResourceAttributes(xpp, res);
5903    next(xpp);
5904    int eventType = nextNoWhitespace(xpp);
5905    while (eventType != XmlPullParser.END_TAG) {
5906      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5907        res.getIdentifier().add(parseIdentifier(xpp));
5908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
5909        res.setRequest(parseReference(xpp));
5910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
5911        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
5912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
5913        res.setDispositionElement(parseString(xpp));
5914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
5915        res.setRuleset(parseCoding(xpp));
5916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
5917        res.setOriginalRuleset(parseCoding(xpp));
5918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
5919        res.setCreatedElement(parseDateTime(xpp));
5920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
5921        res.setOrganization(parseReference(xpp));
5922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
5923        res.setRequestProvider(parseReference(xpp));
5924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
5925        res.setRequestOrganization(parseReference(xpp));
5926      } else if (!parseDomainResourceContent(eventType, xpp, res))
5927        unknownContent(xpp);
5928      eventType = nextNoWhitespace(xpp);
5929    }
5930    next(xpp);
5931    parseElementClose(res);
5932    return res;
5933  }
5934
5935  protected EpisodeOfCare parseEpisodeOfCare(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5936    EpisodeOfCare res = new EpisodeOfCare();
5937    parseDomainResourceAttributes(xpp, res);
5938    next(xpp);
5939    int eventType = nextNoWhitespace(xpp);
5940    while (eventType != XmlPullParser.END_TAG) {
5941      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5942        res.getIdentifier().add(parseIdentifier(xpp));
5943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5944        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
5945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
5946        res.getStatusHistory().add(parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(xpp, res));
5947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5948        res.getType().add(parseCodeableConcept(xpp));
5949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
5950        res.getCondition().add(parseReference(xpp));
5951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5952        res.setPatient(parseReference(xpp));
5953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
5954        res.setManagingOrganization(parseReference(xpp));
5955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5956        res.setPeriod(parsePeriod(xpp));
5957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralRequest")) {
5958        res.getReferralRequest().add(parseReference(xpp));
5959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careManager")) {
5960        res.setCareManager(parseReference(xpp));
5961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("team")) {
5962        res.getTeam().add(parseReference(xpp));
5963      } else if (!parseDomainResourceContent(eventType, xpp, res))
5964        unknownContent(xpp);
5965      eventType = nextNoWhitespace(xpp);
5966    }
5967    next(xpp);
5968    parseElementClose(res);
5969    return res;
5970  }
5971
5972  protected EpisodeOfCare.EpisodeOfCareStatusHistoryComponent parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
5973    EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res = new EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
5974    parseBackboneAttributes(xpp, res);
5975    next(xpp);
5976    int eventType = nextNoWhitespace(xpp);
5977    while (eventType != XmlPullParser.END_TAG) {
5978      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5979        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
5980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5981        res.setPeriod(parsePeriod(xpp));
5982      } else if (!parseBackboneContent(eventType, xpp, res))
5983        unknownContent(xpp);
5984      eventType = nextNoWhitespace(xpp);
5985    }
5986    next(xpp);
5987    parseElementClose(res);
5988    return res;
5989  }
5990
5991  protected ExpansionProfile parseExpansionProfile(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5992    ExpansionProfile res = new ExpansionProfile();
5993    parseDomainResourceAttributes(xpp, res);
5994    next(xpp);
5995    int eventType = nextNoWhitespace(xpp);
5996    while (eventType != XmlPullParser.END_TAG) {
5997      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5998        res.setUrlElement(parseUri(xpp));
5999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6000        res.setIdentifier(parseIdentifier(xpp));
6001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6002        res.setVersionElement(parseString(xpp));
6003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6004        res.setNameElement(parseString(xpp));
6005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6006        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
6007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
6008        res.setExperimentalElement(parseBoolean(xpp));
6009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6010        res.setPublisherElement(parseString(xpp));
6011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6012        res.getContact().add(parseExpansionProfileExpansionProfileContactComponent(xpp, res));
6013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6014        res.setDateElement(parseDateTime(xpp));
6015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6016        res.setDescriptionElement(parseString(xpp));
6017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
6018        res.setCodeSystem(parseExpansionProfileExpansionProfileCodeSystemComponent(xpp, res));
6019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("includeDesignations")) {
6020        res.setIncludeDesignationsElement(parseBoolean(xpp));
6021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
6022        res.setDesignation(parseExpansionProfileExpansionProfileDesignationComponent(xpp, res));
6023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("includeDefinition")) {
6024        res.setIncludeDefinitionElement(parseBoolean(xpp));
6025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("includeInactive")) {
6026        res.setIncludeInactiveElement(parseBoolean(xpp));
6027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeNested")) {
6028        res.setExcludeNestedElement(parseBoolean(xpp));
6029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeNotForUI")) {
6030        res.setExcludeNotForUIElement(parseBoolean(xpp));
6031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludePostCoordinated")) {
6032        res.setExcludePostCoordinatedElement(parseBoolean(xpp));
6033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("displayLanguage")) {
6034        res.setDisplayLanguageElement(parseCode(xpp));
6035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limitedExpansion")) {
6036        res.setLimitedExpansionElement(parseBoolean(xpp));
6037      } else if (!parseDomainResourceContent(eventType, xpp, res))
6038        unknownContent(xpp);
6039      eventType = nextNoWhitespace(xpp);
6040    }
6041    next(xpp);
6042    parseElementClose(res);
6043    return res;
6044  }
6045
6046  protected ExpansionProfile.ExpansionProfileContactComponent parseExpansionProfileExpansionProfileContactComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
6047    ExpansionProfile.ExpansionProfileContactComponent res = new ExpansionProfile.ExpansionProfileContactComponent();
6048    parseBackboneAttributes(xpp, res);
6049    next(xpp);
6050    int eventType = nextNoWhitespace(xpp);
6051    while (eventType != XmlPullParser.END_TAG) {
6052      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6053        res.setNameElement(parseString(xpp));
6054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
6055        res.getTelecom().add(parseContactPoint(xpp));
6056      } else if (!parseBackboneContent(eventType, xpp, res))
6057        unknownContent(xpp);
6058      eventType = nextNoWhitespace(xpp);
6059    }
6060    next(xpp);
6061    parseElementClose(res);
6062    return res;
6063  }
6064
6065  protected ExpansionProfile.ExpansionProfileCodeSystemComponent parseExpansionProfileExpansionProfileCodeSystemComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
6066    ExpansionProfile.ExpansionProfileCodeSystemComponent res = new ExpansionProfile.ExpansionProfileCodeSystemComponent();
6067    parseBackboneAttributes(xpp, res);
6068    next(xpp);
6069    int eventType = nextNoWhitespace(xpp);
6070    while (eventType != XmlPullParser.END_TAG) {
6071      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
6072        res.setInclude(parseExpansionProfileCodeSystemIncludeComponent(xpp, owner));
6073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
6074        res.setExclude(parseExpansionProfileCodeSystemExcludeComponent(xpp, owner));
6075      } else if (!parseBackboneContent(eventType, xpp, res))
6076        unknownContent(xpp);
6077      eventType = nextNoWhitespace(xpp);
6078    }
6079    next(xpp);
6080    parseElementClose(res);
6081    return res;
6082  }
6083
6084  protected ExpansionProfile.CodeSystemIncludeComponent parseExpansionProfileCodeSystemIncludeComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
6085    ExpansionProfile.CodeSystemIncludeComponent res = new ExpansionProfile.CodeSystemIncludeComponent();
6086    parseBackboneAttributes(xpp, res);
6087    next(xpp);
6088    int eventType = nextNoWhitespace(xpp);
6089    while (eventType != XmlPullParser.END_TAG) {
6090      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
6091        res.getCodeSystem().add(parseExpansionProfileCodeSystemIncludeCodeSystemComponent(xpp, owner));
6092      } else if (!parseBackboneContent(eventType, xpp, res))
6093        unknownContent(xpp);
6094      eventType = nextNoWhitespace(xpp);
6095    }
6096    next(xpp);
6097    parseElementClose(res);
6098    return res;
6099  }
6100
6101  protected ExpansionProfile.CodeSystemIncludeCodeSystemComponent parseExpansionProfileCodeSystemIncludeCodeSystemComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
6102    ExpansionProfile.CodeSystemIncludeCodeSystemComponent res = new ExpansionProfile.CodeSystemIncludeCodeSystemComponent();
6103    parseBackboneAttributes(xpp, res);
6104    next(xpp);
6105    int eventType = nextNoWhitespace(xpp);
6106    while (eventType != XmlPullParser.END_TAG) {
6107      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
6108        res.setSystemElement(parseUri(xpp));
6109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6110        res.setVersionElement(parseString(xpp));
6111      } else if (!parseBackboneContent(eventType, xpp, res))
6112        unknownContent(xpp);
6113      eventType = nextNoWhitespace(xpp);
6114    }
6115    next(xpp);
6116    parseElementClose(res);
6117    return res;
6118  }
6119
6120  protected ExpansionProfile.CodeSystemExcludeComponent parseExpansionProfileCodeSystemExcludeComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
6121    ExpansionProfile.CodeSystemExcludeComponent res = new ExpansionProfile.CodeSystemExcludeComponent();
6122    parseBackboneAttributes(xpp, res);
6123    next(xpp);
6124    int eventType = nextNoWhitespace(xpp);
6125    while (eventType != XmlPullParser.END_TAG) {
6126      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
6127        res.getCodeSystem().add(parseExpansionProfileCodeSystemExcludeCodeSystemComponent(xpp, owner));
6128      } else if (!parseBackboneContent(eventType, xpp, res))
6129        unknownContent(xpp);
6130      eventType = nextNoWhitespace(xpp);
6131    }
6132    next(xpp);
6133    parseElementClose(res);
6134    return res;
6135  }
6136
6137  protected ExpansionProfile.CodeSystemExcludeCodeSystemComponent parseExpansionProfileCodeSystemExcludeCodeSystemComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
6138    ExpansionProfile.CodeSystemExcludeCodeSystemComponent res = new ExpansionProfile.CodeSystemExcludeCodeSystemComponent();
6139    parseBackboneAttributes(xpp, res);
6140    next(xpp);
6141    int eventType = nextNoWhitespace(xpp);
6142    while (eventType != XmlPullParser.END_TAG) {
6143      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
6144        res.setSystemElement(parseUri(xpp));
6145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6146        res.setVersionElement(parseString(xpp));
6147      } else if (!parseBackboneContent(eventType, xpp, res))
6148        unknownContent(xpp);
6149      eventType = nextNoWhitespace(xpp);
6150    }
6151    next(xpp);
6152    parseElementClose(res);
6153    return res;
6154  }
6155
6156  protected ExpansionProfile.ExpansionProfileDesignationComponent parseExpansionProfileExpansionProfileDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
6157    ExpansionProfile.ExpansionProfileDesignationComponent res = new ExpansionProfile.ExpansionProfileDesignationComponent();
6158    parseBackboneAttributes(xpp, res);
6159    next(xpp);
6160    int eventType = nextNoWhitespace(xpp);
6161    while (eventType != XmlPullParser.END_TAG) {
6162      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
6163        res.setInclude(parseExpansionProfileDesignationIncludeComponent(xpp, owner));
6164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
6165        res.setExclude(parseExpansionProfileDesignationExcludeComponent(xpp, owner));
6166      } else if (!parseBackboneContent(eventType, xpp, res))
6167        unknownContent(xpp);
6168      eventType = nextNoWhitespace(xpp);
6169    }
6170    next(xpp);
6171    parseElementClose(res);
6172    return res;
6173  }
6174
6175  protected ExpansionProfile.DesignationIncludeComponent parseExpansionProfileDesignationIncludeComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
6176    ExpansionProfile.DesignationIncludeComponent res = new ExpansionProfile.DesignationIncludeComponent();
6177    parseBackboneAttributes(xpp, res);
6178    next(xpp);
6179    int eventType = nextNoWhitespace(xpp);
6180    while (eventType != XmlPullParser.END_TAG) {
6181      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
6182        res.getDesignation().add(parseExpansionProfileDesignationIncludeDesignationComponent(xpp, owner));
6183      } else if (!parseBackboneContent(eventType, xpp, res))
6184        unknownContent(xpp);
6185      eventType = nextNoWhitespace(xpp);
6186    }
6187    next(xpp);
6188    parseElementClose(res);
6189    return res;
6190  }
6191
6192  protected ExpansionProfile.DesignationIncludeDesignationComponent parseExpansionProfileDesignationIncludeDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
6193    ExpansionProfile.DesignationIncludeDesignationComponent res = new ExpansionProfile.DesignationIncludeDesignationComponent();
6194    parseBackboneAttributes(xpp, res);
6195    next(xpp);
6196    int eventType = nextNoWhitespace(xpp);
6197    while (eventType != XmlPullParser.END_TAG) {
6198      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
6199        res.setLanguageElement(parseCode(xpp));
6200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
6201        res.setUse(parseCoding(xpp));
6202      } else if (!parseBackboneContent(eventType, xpp, res))
6203        unknownContent(xpp);
6204      eventType = nextNoWhitespace(xpp);
6205    }
6206    next(xpp);
6207    parseElementClose(res);
6208    return res;
6209  }
6210
6211  protected ExpansionProfile.DesignationExcludeComponent parseExpansionProfileDesignationExcludeComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
6212    ExpansionProfile.DesignationExcludeComponent res = new ExpansionProfile.DesignationExcludeComponent();
6213    parseBackboneAttributes(xpp, res);
6214    next(xpp);
6215    int eventType = nextNoWhitespace(xpp);
6216    while (eventType != XmlPullParser.END_TAG) {
6217      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
6218        res.getDesignation().add(parseExpansionProfileDesignationExcludeDesignationComponent(xpp, owner));
6219      } else if (!parseBackboneContent(eventType, xpp, res))
6220        unknownContent(xpp);
6221      eventType = nextNoWhitespace(xpp);
6222    }
6223    next(xpp);
6224    parseElementClose(res);
6225    return res;
6226  }
6227
6228  protected ExpansionProfile.DesignationExcludeDesignationComponent parseExpansionProfileDesignationExcludeDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
6229    ExpansionProfile.DesignationExcludeDesignationComponent res = new ExpansionProfile.DesignationExcludeDesignationComponent();
6230    parseBackboneAttributes(xpp, res);
6231    next(xpp);
6232    int eventType = nextNoWhitespace(xpp);
6233    while (eventType != XmlPullParser.END_TAG) {
6234      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
6235        res.setLanguageElement(parseCode(xpp));
6236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
6237        res.setUse(parseCoding(xpp));
6238      } else if (!parseBackboneContent(eventType, xpp, res))
6239        unknownContent(xpp);
6240      eventType = nextNoWhitespace(xpp);
6241    }
6242    next(xpp);
6243    parseElementClose(res);
6244    return res;
6245  }
6246
6247  protected ExplanationOfBenefit parseExplanationOfBenefit(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6248    ExplanationOfBenefit res = new ExplanationOfBenefit();
6249    parseDomainResourceAttributes(xpp, res);
6250    next(xpp);
6251    int eventType = nextNoWhitespace(xpp);
6252    while (eventType != XmlPullParser.END_TAG) {
6253      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6254        res.getIdentifier().add(parseIdentifier(xpp));
6255      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "claim")) {
6256        res.setClaim(parseType("claim", xpp));
6257      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "claimResponse")) {
6258        res.setClaimResponse(parseType("claimResponse", xpp));
6259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6260        res.getSubType().add(parseCoding(xpp));
6261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
6262        res.setRuleset(parseCoding(xpp));
6263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
6264        res.setOriginalRuleset(parseCoding(xpp));
6265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
6266        res.setCreatedElement(parseDateTime(xpp));
6267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
6268        res.setBillablePeriod(parsePeriod(xpp));
6269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
6270        res.setDispositionElement(parseString(xpp));
6271      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "provider")) {
6272        res.setProvider(parseType("provider", xpp));
6273      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "organization")) {
6274        res.setOrganization(parseType("organization", xpp));
6275      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "facility")) {
6276        res.setFacility(parseType("facility", xpp));
6277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
6278        res.getRelated().add(parseExplanationOfBenefitRelatedClaimsComponent(xpp, res));
6279      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "prescription")) {
6280        res.setPrescription(parseType("prescription", xpp));
6281      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "originalPrescription")) {
6282        res.setOriginalPrescription(parseType("originalPrescription", xpp));
6283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
6284        res.setPayee(parseExplanationOfBenefitPayeeComponent(xpp, res));
6285      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "referral")) {
6286        res.setReferral(parseType("referral", xpp));
6287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceCode")) {
6288        res.getOccurrenceCode().add(parseCoding(xpp));
6289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurenceSpanCode")) {
6290        res.getOccurenceSpanCode().add(parseCoding(xpp));
6291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
6292        res.getValueCode().add(parseCoding(xpp));
6293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
6294        res.getDiagnosis().add(parseExplanationOfBenefitDiagnosisComponent(xpp, res));
6295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
6296        res.getProcedure().add(parseExplanationOfBenefitProcedureComponent(xpp, res));
6297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCondition")) {
6298        res.getSpecialCondition().add(parseCoding(xpp));
6299      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "patient")) {
6300        res.setPatient(parseType("patient", xpp));
6301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precedence")) {
6302        res.setPrecedenceElement(parsePositiveInt(xpp));
6303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
6304        res.setCoverage(parseExplanationOfBenefitCoverageComponent(xpp, res));
6305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accidentDate")) {
6306        res.setAccidentDateElement(parseDate(xpp));
6307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accidentType")) {
6308        res.setAccidentType(parseCoding(xpp));
6309      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "accidentLocation")) {
6310        res.setAccidentLocation(parseType("accidentLocation", xpp));
6311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interventionException")) {
6312        res.getInterventionException().add(parseCoding(xpp));
6313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
6314        res.getOnset().add(parseExplanationOfBenefitOnsetComponent(xpp, res));
6315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("employmentImpacted")) {
6316        res.setEmploymentImpacted(parsePeriod(xpp));
6317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
6318        res.setHospitalization(parsePeriod(xpp));
6319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
6320        res.getItem().add(parseExplanationOfBenefitItemsComponent(xpp, res));
6321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
6322        res.getAddItem().add(parseExplanationOfBenefitAddedItemComponent(xpp, res));
6323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("missingTeeth")) {
6324        res.getMissingTeeth().add(parseExplanationOfBenefitMissingTeethComponent(xpp, res));
6325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalCost")) {
6326        res.setTotalCost(parseMoney(xpp));
6327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unallocDeductable")) {
6328        res.setUnallocDeductable(parseMoney(xpp));
6329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalBenefit")) {
6330        res.setTotalBenefit(parseMoney(xpp));
6331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAdjustment")) {
6332        res.setPaymentAdjustment(parseMoney(xpp));
6333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAdjustmentReason")) {
6334        res.setPaymentAdjustmentReason(parseCoding(xpp));
6335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
6336        res.setPaymentDateElement(parseDate(xpp));
6337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAmount")) {
6338        res.setPaymentAmount(parseMoney(xpp));
6339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentRef")) {
6340        res.setPaymentRef(parseIdentifier(xpp));
6341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reserved")) {
6342        res.setReserved(parseCoding(xpp));
6343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
6344        res.setForm(parseCoding(xpp));
6345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6346        res.getNote().add(parseExplanationOfBenefitNotesComponent(xpp, res));
6347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
6348        res.getBenefitBalance().add(parseExplanationOfBenefitBenefitBalanceComponent(xpp, res));
6349      } else if (!parseDomainResourceContent(eventType, xpp, res))
6350        unknownContent(xpp);
6351      eventType = nextNoWhitespace(xpp);
6352    }
6353    next(xpp);
6354    parseElementClose(res);
6355    return res;
6356  }
6357
6358  protected ExplanationOfBenefit.RelatedClaimsComponent parseExplanationOfBenefitRelatedClaimsComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6359    ExplanationOfBenefit.RelatedClaimsComponent res = new ExplanationOfBenefit.RelatedClaimsComponent();
6360    parseBackboneAttributes(xpp, res);
6361    next(xpp);
6362    int eventType = nextNoWhitespace(xpp);
6363    while (eventType != XmlPullParser.END_TAG) {
6364      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "claim")) {
6365        res.setClaim(parseType("claim", xpp));
6366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
6367        res.setRelationship(parseCoding(xpp));
6368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6369        res.setReference(parseIdentifier(xpp));
6370      } else if (!parseBackboneContent(eventType, xpp, res))
6371        unknownContent(xpp);
6372      eventType = nextNoWhitespace(xpp);
6373    }
6374    next(xpp);
6375    parseElementClose(res);
6376    return res;
6377  }
6378
6379  protected ExplanationOfBenefit.PayeeComponent parseExplanationOfBenefitPayeeComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6380    ExplanationOfBenefit.PayeeComponent res = new ExplanationOfBenefit.PayeeComponent();
6381    parseBackboneAttributes(xpp, res);
6382    next(xpp);
6383    int eventType = nextNoWhitespace(xpp);
6384    while (eventType != XmlPullParser.END_TAG) {
6385      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6386        res.setType(parseCoding(xpp));
6387      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "party")) {
6388        res.setParty(parseType("party", xpp));
6389      } else if (!parseBackboneContent(eventType, xpp, res))
6390        unknownContent(xpp);
6391      eventType = nextNoWhitespace(xpp);
6392    }
6393    next(xpp);
6394    parseElementClose(res);
6395    return res;
6396  }
6397
6398  protected ExplanationOfBenefit.DiagnosisComponent parseExplanationOfBenefitDiagnosisComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6399    ExplanationOfBenefit.DiagnosisComponent res = new ExplanationOfBenefit.DiagnosisComponent();
6400    parseBackboneAttributes(xpp, res);
6401    next(xpp);
6402    int eventType = nextNoWhitespace(xpp);
6403    while (eventType != XmlPullParser.END_TAG) {
6404      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6405        res.setSequenceElement(parsePositiveInt(xpp));
6406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
6407        res.setDiagnosis(parseCoding(xpp));
6408      } else if (!parseBackboneContent(eventType, xpp, res))
6409        unknownContent(xpp);
6410      eventType = nextNoWhitespace(xpp);
6411    }
6412    next(xpp);
6413    parseElementClose(res);
6414    return res;
6415  }
6416
6417  protected ExplanationOfBenefit.ProcedureComponent parseExplanationOfBenefitProcedureComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6418    ExplanationOfBenefit.ProcedureComponent res = new ExplanationOfBenefit.ProcedureComponent();
6419    parseBackboneAttributes(xpp, res);
6420    next(xpp);
6421    int eventType = nextNoWhitespace(xpp);
6422    while (eventType != XmlPullParser.END_TAG) {
6423      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6424        res.setSequenceElement(parsePositiveInt(xpp));
6425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6426        res.setDateElement(parseDateTime(xpp));
6427      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
6428        res.setProcedure(parseType("procedure", xpp));
6429      } else if (!parseBackboneContent(eventType, xpp, res))
6430        unknownContent(xpp);
6431      eventType = nextNoWhitespace(xpp);
6432    }
6433    next(xpp);
6434    parseElementClose(res);
6435    return res;
6436  }
6437
6438  protected ExplanationOfBenefit.CoverageComponent parseExplanationOfBenefitCoverageComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6439    ExplanationOfBenefit.CoverageComponent res = new ExplanationOfBenefit.CoverageComponent();
6440    parseBackboneAttributes(xpp, res);
6441    next(xpp);
6442    int eventType = nextNoWhitespace(xpp);
6443    while (eventType != XmlPullParser.END_TAG) {
6444      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "coverage")) {
6445        res.setCoverage(parseType("coverage", xpp));
6446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
6447        res.getPreAuthRef().add(parseString(xpp));
6448      } else if (!parseBackboneContent(eventType, xpp, res))
6449        unknownContent(xpp);
6450      eventType = nextNoWhitespace(xpp);
6451    }
6452    next(xpp);
6453    parseElementClose(res);
6454    return res;
6455  }
6456
6457  protected ExplanationOfBenefit.OnsetComponent parseExplanationOfBenefitOnsetComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6458    ExplanationOfBenefit.OnsetComponent res = new ExplanationOfBenefit.OnsetComponent();
6459    parseBackboneAttributes(xpp, res);
6460    next(xpp);
6461    int eventType = nextNoWhitespace(xpp);
6462    while (eventType != XmlPullParser.END_TAG) {
6463      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
6464        res.setTime(parseType("time", xpp));
6465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6466        res.setType(parseCoding(xpp));
6467      } else if (!parseBackboneContent(eventType, xpp, res))
6468        unknownContent(xpp);
6469      eventType = nextNoWhitespace(xpp);
6470    }
6471    next(xpp);
6472    parseElementClose(res);
6473    return res;
6474  }
6475
6476  protected ExplanationOfBenefit.ItemsComponent parseExplanationOfBenefitItemsComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6477    ExplanationOfBenefit.ItemsComponent res = new ExplanationOfBenefit.ItemsComponent();
6478    parseBackboneAttributes(xpp, res);
6479    next(xpp);
6480    int eventType = nextNoWhitespace(xpp);
6481    while (eventType != XmlPullParser.END_TAG) {
6482      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6483        res.setSequenceElement(parsePositiveInt(xpp));
6484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6485        res.setType(parseCoding(xpp));
6486      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "provider")) {
6487        res.setProvider(parseType("provider", xpp));
6488      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "supervisor")) {
6489        res.setSupervisor(parseType("supervisor", xpp));
6490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providerQualification")) {
6491        res.setProviderQualification(parseCoding(xpp));
6492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisLinkId")) {
6493        res.getDiagnosisLinkId().add(parsePositiveInt(xpp));
6494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
6495        res.setService(parseCoding(xpp));
6496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceModifier")) {
6497        res.getServiceModifier().add(parseCoding(xpp));
6498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
6499        res.getModifier().add(parseCoding(xpp));
6500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
6501        res.getProgramCode().add(parseCoding(xpp));
6502      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
6503        res.setServiced(parseType("serviced", xpp));
6504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("place")) {
6505        res.setPlace(parseCoding(xpp));
6506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6507        res.setQuantity(parseSimpleQuantity(xpp));
6508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6509        res.setUnitPrice(parseMoney(xpp));
6510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6511        res.setFactorElement(parseDecimal(xpp));
6512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
6513        res.setPointsElement(parseDecimal(xpp));
6514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6515        res.setNet(parseMoney(xpp));
6516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
6517        res.getUdi().add(parseReference(xpp));
6518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
6519        res.setBodySite(parseCoding(xpp));
6520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
6521        res.getSubSite().add(parseCoding(xpp));
6522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
6523        res.getNoteNumber().add(parsePositiveInt(xpp));
6524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6525        res.getAdjudication().add(parseExplanationOfBenefitItemAdjudicationComponent(xpp, owner));
6526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6527        res.getDetail().add(parseExplanationOfBenefitDetailComponent(xpp, owner));
6528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prosthesis")) {
6529        res.setProsthesis(parseExplanationOfBenefitProsthesisComponent(xpp, owner));
6530      } else if (!parseBackboneContent(eventType, xpp, res))
6531        unknownContent(xpp);
6532      eventType = nextNoWhitespace(xpp);
6533    }
6534    next(xpp);
6535    parseElementClose(res);
6536    return res;
6537  }
6538
6539  protected ExplanationOfBenefit.ItemAdjudicationComponent parseExplanationOfBenefitItemAdjudicationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6540    ExplanationOfBenefit.ItemAdjudicationComponent res = new ExplanationOfBenefit.ItemAdjudicationComponent();
6541    parseBackboneAttributes(xpp, res);
6542    next(xpp);
6543    int eventType = nextNoWhitespace(xpp);
6544    while (eventType != XmlPullParser.END_TAG) {
6545      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6546        res.setCategory(parseCoding(xpp));
6547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
6548        res.setReason(parseCoding(xpp));
6549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
6550        res.setAmount(parseMoney(xpp));
6551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6552        res.setValueElement(parseDecimal(xpp));
6553      } else if (!parseBackboneContent(eventType, xpp, res))
6554        unknownContent(xpp);
6555      eventType = nextNoWhitespace(xpp);
6556    }
6557    next(xpp);
6558    parseElementClose(res);
6559    return res;
6560  }
6561
6562  protected ExplanationOfBenefit.DetailComponent parseExplanationOfBenefitDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6563    ExplanationOfBenefit.DetailComponent res = new ExplanationOfBenefit.DetailComponent();
6564    parseBackboneAttributes(xpp, res);
6565    next(xpp);
6566    int eventType = nextNoWhitespace(xpp);
6567    while (eventType != XmlPullParser.END_TAG) {
6568      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6569        res.setSequenceElement(parsePositiveInt(xpp));
6570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6571        res.setType(parseCoding(xpp));
6572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
6573        res.setService(parseCoding(xpp));
6574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
6575        res.getProgramCode().add(parseCoding(xpp));
6576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6577        res.setQuantity(parseSimpleQuantity(xpp));
6578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6579        res.setUnitPrice(parseMoney(xpp));
6580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6581        res.setFactorElement(parseDecimal(xpp));
6582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
6583        res.setPointsElement(parseDecimal(xpp));
6584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6585        res.setNet(parseMoney(xpp));
6586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
6587        res.getUdi().add(parseReference(xpp));
6588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6589        res.getAdjudication().add(parseExplanationOfBenefitDetailAdjudicationComponent(xpp, owner));
6590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
6591        res.getSubDetail().add(parseExplanationOfBenefitSubDetailComponent(xpp, owner));
6592      } else if (!parseBackboneContent(eventType, xpp, res))
6593        unknownContent(xpp);
6594      eventType = nextNoWhitespace(xpp);
6595    }
6596    next(xpp);
6597    parseElementClose(res);
6598    return res;
6599  }
6600
6601  protected ExplanationOfBenefit.DetailAdjudicationComponent parseExplanationOfBenefitDetailAdjudicationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6602    ExplanationOfBenefit.DetailAdjudicationComponent res = new ExplanationOfBenefit.DetailAdjudicationComponent();
6603    parseBackboneAttributes(xpp, res);
6604    next(xpp);
6605    int eventType = nextNoWhitespace(xpp);
6606    while (eventType != XmlPullParser.END_TAG) {
6607      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6608        res.setCategory(parseCoding(xpp));
6609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
6610        res.setReason(parseCoding(xpp));
6611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
6612        res.setAmount(parseMoney(xpp));
6613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6614        res.setValueElement(parseDecimal(xpp));
6615      } else if (!parseBackboneContent(eventType, xpp, res))
6616        unknownContent(xpp);
6617      eventType = nextNoWhitespace(xpp);
6618    }
6619    next(xpp);
6620    parseElementClose(res);
6621    return res;
6622  }
6623
6624  protected ExplanationOfBenefit.SubDetailComponent parseExplanationOfBenefitSubDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6625    ExplanationOfBenefit.SubDetailComponent res = new ExplanationOfBenefit.SubDetailComponent();
6626    parseBackboneAttributes(xpp, res);
6627    next(xpp);
6628    int eventType = nextNoWhitespace(xpp);
6629    while (eventType != XmlPullParser.END_TAG) {
6630      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6631        res.setSequenceElement(parsePositiveInt(xpp));
6632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6633        res.setType(parseCoding(xpp));
6634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
6635        res.setService(parseCoding(xpp));
6636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
6637        res.getProgramCode().add(parseCoding(xpp));
6638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6639        res.setQuantity(parseSimpleQuantity(xpp));
6640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6641        res.setUnitPrice(parseMoney(xpp));
6642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6643        res.setFactorElement(parseDecimal(xpp));
6644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
6645        res.setPointsElement(parseDecimal(xpp));
6646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6647        res.setNet(parseMoney(xpp));
6648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
6649        res.getUdi().add(parseReference(xpp));
6650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6651        res.getAdjudication().add(parseExplanationOfBenefitSubDetailAdjudicationComponent(xpp, owner));
6652      } else if (!parseBackboneContent(eventType, xpp, res))
6653        unknownContent(xpp);
6654      eventType = nextNoWhitespace(xpp);
6655    }
6656    next(xpp);
6657    parseElementClose(res);
6658    return res;
6659  }
6660
6661  protected ExplanationOfBenefit.SubDetailAdjudicationComponent parseExplanationOfBenefitSubDetailAdjudicationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6662    ExplanationOfBenefit.SubDetailAdjudicationComponent res = new ExplanationOfBenefit.SubDetailAdjudicationComponent();
6663    parseBackboneAttributes(xpp, res);
6664    next(xpp);
6665    int eventType = nextNoWhitespace(xpp);
6666    while (eventType != XmlPullParser.END_TAG) {
6667      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6668        res.setCategory(parseCoding(xpp));
6669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
6670        res.setReason(parseCoding(xpp));
6671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
6672        res.setAmount(parseMoney(xpp));
6673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6674        res.setValueElement(parseDecimal(xpp));
6675      } else if (!parseBackboneContent(eventType, xpp, res))
6676        unknownContent(xpp);
6677      eventType = nextNoWhitespace(xpp);
6678    }
6679    next(xpp);
6680    parseElementClose(res);
6681    return res;
6682  }
6683
6684  protected ExplanationOfBenefit.ProsthesisComponent parseExplanationOfBenefitProsthesisComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6685    ExplanationOfBenefit.ProsthesisComponent res = new ExplanationOfBenefit.ProsthesisComponent();
6686    parseBackboneAttributes(xpp, res);
6687    next(xpp);
6688    int eventType = nextNoWhitespace(xpp);
6689    while (eventType != XmlPullParser.END_TAG) {
6690      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initial")) {
6691        res.setInitialElement(parseBoolean(xpp));
6692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorDate")) {
6693        res.setPriorDateElement(parseDate(xpp));
6694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorMaterial")) {
6695        res.setPriorMaterial(parseCoding(xpp));
6696      } else if (!parseBackboneContent(eventType, xpp, res))
6697        unknownContent(xpp);
6698      eventType = nextNoWhitespace(xpp);
6699    }
6700    next(xpp);
6701    parseElementClose(res);
6702    return res;
6703  }
6704
6705  protected ExplanationOfBenefit.AddedItemComponent parseExplanationOfBenefitAddedItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6706    ExplanationOfBenefit.AddedItemComponent res = new ExplanationOfBenefit.AddedItemComponent();
6707    parseBackboneAttributes(xpp, res);
6708    next(xpp);
6709    int eventType = nextNoWhitespace(xpp);
6710    while (eventType != XmlPullParser.END_TAG) {
6711      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
6712        res.getSequenceLinkId().add(parsePositiveInt(xpp));
6713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
6714        res.setService(parseCoding(xpp));
6715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
6716        res.setFee(parseMoney(xpp));
6717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumberLinkId")) {
6718        res.getNoteNumberLinkId().add(parsePositiveInt(xpp));
6719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6720        res.getAdjudication().add(parseExplanationOfBenefitAddedItemAdjudicationComponent(xpp, owner));
6721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6722        res.getDetail().add(parseExplanationOfBenefitAddedItemsDetailComponent(xpp, owner));
6723      } else if (!parseBackboneContent(eventType, xpp, res))
6724        unknownContent(xpp);
6725      eventType = nextNoWhitespace(xpp);
6726    }
6727    next(xpp);
6728    parseElementClose(res);
6729    return res;
6730  }
6731
6732  protected ExplanationOfBenefit.AddedItemAdjudicationComponent parseExplanationOfBenefitAddedItemAdjudicationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6733    ExplanationOfBenefit.AddedItemAdjudicationComponent res = new ExplanationOfBenefit.AddedItemAdjudicationComponent();
6734    parseBackboneAttributes(xpp, res);
6735    next(xpp);
6736    int eventType = nextNoWhitespace(xpp);
6737    while (eventType != XmlPullParser.END_TAG) {
6738      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6739        res.setCategory(parseCoding(xpp));
6740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
6741        res.setReason(parseCoding(xpp));
6742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
6743        res.setAmount(parseMoney(xpp));
6744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6745        res.setValueElement(parseDecimal(xpp));
6746      } else if (!parseBackboneContent(eventType, xpp, res))
6747        unknownContent(xpp);
6748      eventType = nextNoWhitespace(xpp);
6749    }
6750    next(xpp);
6751    parseElementClose(res);
6752    return res;
6753  }
6754
6755  protected ExplanationOfBenefit.AddedItemsDetailComponent parseExplanationOfBenefitAddedItemsDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6756    ExplanationOfBenefit.AddedItemsDetailComponent res = new ExplanationOfBenefit.AddedItemsDetailComponent();
6757    parseBackboneAttributes(xpp, res);
6758    next(xpp);
6759    int eventType = nextNoWhitespace(xpp);
6760    while (eventType != XmlPullParser.END_TAG) {
6761      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
6762        res.setService(parseCoding(xpp));
6763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
6764        res.setFee(parseMoney(xpp));
6765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6766        res.getAdjudication().add(parseExplanationOfBenefitAddedItemDetailAdjudicationComponent(xpp, owner));
6767      } else if (!parseBackboneContent(eventType, xpp, res))
6768        unknownContent(xpp);
6769      eventType = nextNoWhitespace(xpp);
6770    }
6771    next(xpp);
6772    parseElementClose(res);
6773    return res;
6774  }
6775
6776  protected ExplanationOfBenefit.AddedItemDetailAdjudicationComponent parseExplanationOfBenefitAddedItemDetailAdjudicationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6777    ExplanationOfBenefit.AddedItemDetailAdjudicationComponent res = new ExplanationOfBenefit.AddedItemDetailAdjudicationComponent();
6778    parseBackboneAttributes(xpp, res);
6779    next(xpp);
6780    int eventType = nextNoWhitespace(xpp);
6781    while (eventType != XmlPullParser.END_TAG) {
6782      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6783        res.setCategory(parseCoding(xpp));
6784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
6785        res.setReason(parseCoding(xpp));
6786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
6787        res.setAmount(parseMoney(xpp));
6788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6789        res.setValueElement(parseDecimal(xpp));
6790      } else if (!parseBackboneContent(eventType, xpp, res))
6791        unknownContent(xpp);
6792      eventType = nextNoWhitespace(xpp);
6793    }
6794    next(xpp);
6795    parseElementClose(res);
6796    return res;
6797  }
6798
6799  protected ExplanationOfBenefit.MissingTeethComponent parseExplanationOfBenefitMissingTeethComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6800    ExplanationOfBenefit.MissingTeethComponent res = new ExplanationOfBenefit.MissingTeethComponent();
6801    parseBackboneAttributes(xpp, res);
6802    next(xpp);
6803    int eventType = nextNoWhitespace(xpp);
6804    while (eventType != XmlPullParser.END_TAG) {
6805      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tooth")) {
6806        res.setTooth(parseCoding(xpp));
6807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
6808        res.setReason(parseCoding(xpp));
6809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extractionDate")) {
6810        res.setExtractionDateElement(parseDate(xpp));
6811      } else if (!parseBackboneContent(eventType, xpp, res))
6812        unknownContent(xpp);
6813      eventType = nextNoWhitespace(xpp);
6814    }
6815    next(xpp);
6816    parseElementClose(res);
6817    return res;
6818  }
6819
6820  protected ExplanationOfBenefit.NotesComponent parseExplanationOfBenefitNotesComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6821    ExplanationOfBenefit.NotesComponent res = new ExplanationOfBenefit.NotesComponent();
6822    parseBackboneAttributes(xpp, res);
6823    next(xpp);
6824    int eventType = nextNoWhitespace(xpp);
6825    while (eventType != XmlPullParser.END_TAG) {
6826      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
6827        res.setNumberElement(parsePositiveInt(xpp));
6828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6829        res.setType(parseCoding(xpp));
6830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6831        res.setTextElement(parseString(xpp));
6832      } else if (!parseBackboneContent(eventType, xpp, res))
6833        unknownContent(xpp);
6834      eventType = nextNoWhitespace(xpp);
6835    }
6836    next(xpp);
6837    parseElementClose(res);
6838    return res;
6839  }
6840
6841  protected ExplanationOfBenefit.BenefitBalanceComponent parseExplanationOfBenefitBenefitBalanceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6842    ExplanationOfBenefit.BenefitBalanceComponent res = new ExplanationOfBenefit.BenefitBalanceComponent();
6843    parseBackboneAttributes(xpp, res);
6844    next(xpp);
6845    int eventType = nextNoWhitespace(xpp);
6846    while (eventType != XmlPullParser.END_TAG) {
6847      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6848        res.setCategory(parseCoding(xpp));
6849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subCategory")) {
6850        res.setSubCategory(parseCoding(xpp));
6851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
6852        res.setNetwork(parseCoding(xpp));
6853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
6854        res.setUnit(parseCoding(xpp));
6855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
6856        res.setTerm(parseCoding(xpp));
6857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
6858        res.getFinancial().add(parseExplanationOfBenefitBenefitComponent(xpp, owner));
6859      } else if (!parseBackboneContent(eventType, xpp, res))
6860        unknownContent(xpp);
6861      eventType = nextNoWhitespace(xpp);
6862    }
6863    next(xpp);
6864    parseElementClose(res);
6865    return res;
6866  }
6867
6868  protected ExplanationOfBenefit.BenefitComponent parseExplanationOfBenefitBenefitComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
6869    ExplanationOfBenefit.BenefitComponent res = new ExplanationOfBenefit.BenefitComponent();
6870    parseBackboneAttributes(xpp, res);
6871    next(xpp);
6872    int eventType = nextNoWhitespace(xpp);
6873    while (eventType != XmlPullParser.END_TAG) {
6874      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6875        res.setType(parseCoding(xpp));
6876      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "benefit")) {
6877        res.setBenefit(parseType("benefit", xpp));
6878      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "benefitUsed")) {
6879        res.setBenefitUsed(parseType("benefitUsed", xpp));
6880      } else if (!parseBackboneContent(eventType, xpp, res))
6881        unknownContent(xpp);
6882      eventType = nextNoWhitespace(xpp);
6883    }
6884    next(xpp);
6885    parseElementClose(res);
6886    return res;
6887  }
6888
6889  protected FamilyMemberHistory parseFamilyMemberHistory(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6890    FamilyMemberHistory res = new FamilyMemberHistory();
6891    parseDomainResourceAttributes(xpp, res);
6892    next(xpp);
6893    int eventType = nextNoWhitespace(xpp);
6894    while (eventType != XmlPullParser.END_TAG) {
6895      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6896        res.getIdentifier().add(parseIdentifier(xpp));
6897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6898        res.setPatient(parseReference(xpp));
6899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6900        res.setDateElement(parseDateTime(xpp));
6901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6902        res.setStatusElement(parseEnumeration(xpp, FamilyMemberHistory.FamilyHistoryStatus.NULL, new FamilyMemberHistory.FamilyHistoryStatusEnumFactory()));
6903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6904        res.setNameElement(parseString(xpp));
6905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
6906        res.setRelationship(parseCodeableConcept(xpp));
6907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
6908        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
6909      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "born")) {
6910        res.setBorn(parseType("born", xpp));
6911      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
6912        res.setAge(parseType("age", xpp));
6913      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
6914        res.setDeceased(parseType("deceased", xpp));
6915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6916        res.setNote(parseAnnotation(xpp));
6917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
6918        res.getCondition().add(parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(xpp, res));
6919      } else if (!parseDomainResourceContent(eventType, xpp, res))
6920        unknownContent(xpp);
6921      eventType = nextNoWhitespace(xpp);
6922    }
6923    next(xpp);
6924    parseElementClose(res);
6925    return res;
6926  }
6927
6928  protected FamilyMemberHistory.FamilyMemberHistoryConditionComponent parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(XmlPullParser xpp, FamilyMemberHistory owner) throws XmlPullParserException, IOException, FHIRFormatError {
6929    FamilyMemberHistory.FamilyMemberHistoryConditionComponent res = new FamilyMemberHistory.FamilyMemberHistoryConditionComponent();
6930    parseBackboneAttributes(xpp, res);
6931    next(xpp);
6932    int eventType = nextNoWhitespace(xpp);
6933    while (eventType != XmlPullParser.END_TAG) {
6934      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6935        res.setCode(parseCodeableConcept(xpp));
6936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
6937        res.setOutcome(parseCodeableConcept(xpp));
6938      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
6939        res.setOnset(parseType("onset", xpp));
6940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6941        res.setNote(parseAnnotation(xpp));
6942      } else if (!parseBackboneContent(eventType, xpp, res))
6943        unknownContent(xpp);
6944      eventType = nextNoWhitespace(xpp);
6945    }
6946    next(xpp);
6947    parseElementClose(res);
6948    return res;
6949  }
6950
6951  protected Flag parseFlag(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6952    Flag res = new Flag();
6953    parseDomainResourceAttributes(xpp, res);
6954    next(xpp);
6955    int eventType = nextNoWhitespace(xpp);
6956    while (eventType != XmlPullParser.END_TAG) {
6957      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6958        res.getIdentifier().add(parseIdentifier(xpp));
6959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6960        res.setCategory(parseCodeableConcept(xpp));
6961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6962        res.setStatusElement(parseEnumeration(xpp, Flag.FlagStatus.NULL, new Flag.FlagStatusEnumFactory()));
6963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6964        res.setPeriod(parsePeriod(xpp));
6965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6966        res.setSubject(parseReference(xpp));
6967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6968        res.setEncounter(parseReference(xpp));
6969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6970        res.setAuthor(parseReference(xpp));
6971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6972        res.setCode(parseCodeableConcept(xpp));
6973      } else if (!parseDomainResourceContent(eventType, xpp, res))
6974        unknownContent(xpp);
6975      eventType = nextNoWhitespace(xpp);
6976    }
6977    next(xpp);
6978    parseElementClose(res);
6979    return res;
6980  }
6981
6982  protected Goal parseGoal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6983    Goal res = new Goal();
6984    parseDomainResourceAttributes(xpp, res);
6985    next(xpp);
6986    int eventType = nextNoWhitespace(xpp);
6987    while (eventType != XmlPullParser.END_TAG) {
6988      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6989        res.getIdentifier().add(parseIdentifier(xpp));
6990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6991        res.setSubject(parseReference(xpp));
6992      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "start")) {
6993        res.setStart(parseType("start", xpp));
6994      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
6995        res.setTarget(parseType("target", xpp));
6996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6997        res.getCategory().add(parseCodeableConcept(xpp));
6998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6999        res.setDescriptionElement(parseString(xpp));
7000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7001        res.setStatusElement(parseEnumeration(xpp, Goal.GoalStatus.NULL, new Goal.GoalStatusEnumFactory()));
7002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
7003        res.setStatusDateElement(parseDate(xpp));
7004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
7005        res.setStatusReason(parseCodeableConcept(xpp));
7006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7007        res.setAuthor(parseReference(xpp));
7008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7009        res.setPriority(parseCodeableConcept(xpp));
7010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
7011        res.getAddresses().add(parseReference(xpp));
7012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7013        res.getNote().add(parseAnnotation(xpp));
7014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
7015        res.getOutcome().add(parseGoalGoalOutcomeComponent(xpp, res));
7016      } else if (!parseDomainResourceContent(eventType, xpp, res))
7017        unknownContent(xpp);
7018      eventType = nextNoWhitespace(xpp);
7019    }
7020    next(xpp);
7021    parseElementClose(res);
7022    return res;
7023  }
7024
7025  protected Goal.GoalOutcomeComponent parseGoalGoalOutcomeComponent(XmlPullParser xpp, Goal owner) throws XmlPullParserException, IOException, FHIRFormatError {
7026    Goal.GoalOutcomeComponent res = new Goal.GoalOutcomeComponent();
7027    parseBackboneAttributes(xpp, res);
7028    next(xpp);
7029    int eventType = nextNoWhitespace(xpp);
7030    while (eventType != XmlPullParser.END_TAG) {
7031      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "result")) {
7032        res.setResult(parseType("result", xpp));
7033      } else if (!parseBackboneContent(eventType, xpp, res))
7034        unknownContent(xpp);
7035      eventType = nextNoWhitespace(xpp);
7036    }
7037    next(xpp);
7038    parseElementClose(res);
7039    return res;
7040  }
7041
7042  protected Group parseGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7043    Group res = new Group();
7044    parseDomainResourceAttributes(xpp, res);
7045    next(xpp);
7046    int eventType = nextNoWhitespace(xpp);
7047    while (eventType != XmlPullParser.END_TAG) {
7048      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7049        res.getIdentifier().add(parseIdentifier(xpp));
7050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7051        res.setTypeElement(parseEnumeration(xpp, Group.GroupType.NULL, new Group.GroupTypeEnumFactory()));
7052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
7053        res.setActualElement(parseBoolean(xpp));
7054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
7055        res.setActiveElement(parseBoolean(xpp));
7056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7057        res.setCode(parseCodeableConcept(xpp));
7058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7059        res.setNameElement(parseString(xpp));
7060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7061        res.setQuantityElement(parseUnsignedInt(xpp));
7062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
7063        res.getCharacteristic().add(parseGroupGroupCharacteristicComponent(xpp, res));
7064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
7065        res.getMember().add(parseGroupGroupMemberComponent(xpp, res));
7066      } else if (!parseDomainResourceContent(eventType, xpp, res))
7067        unknownContent(xpp);
7068      eventType = nextNoWhitespace(xpp);
7069    }
7070    next(xpp);
7071    parseElementClose(res);
7072    return res;
7073  }
7074
7075  protected Group.GroupCharacteristicComponent parseGroupGroupCharacteristicComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
7076    Group.GroupCharacteristicComponent res = new Group.GroupCharacteristicComponent();
7077    parseBackboneAttributes(xpp, res);
7078    next(xpp);
7079    int eventType = nextNoWhitespace(xpp);
7080    while (eventType != XmlPullParser.END_TAG) {
7081      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7082        res.setCode(parseCodeableConcept(xpp));
7083      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
7084        res.setValue(parseType("value", xpp));
7085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
7086        res.setExcludeElement(parseBoolean(xpp));
7087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7088        res.setPeriod(parsePeriod(xpp));
7089      } else if (!parseBackboneContent(eventType, xpp, res))
7090        unknownContent(xpp);
7091      eventType = nextNoWhitespace(xpp);
7092    }
7093    next(xpp);
7094    parseElementClose(res);
7095    return res;
7096  }
7097
7098  protected Group.GroupMemberComponent parseGroupGroupMemberComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
7099    Group.GroupMemberComponent res = new Group.GroupMemberComponent();
7100    parseBackboneAttributes(xpp, res);
7101    next(xpp);
7102    int eventType = nextNoWhitespace(xpp);
7103    while (eventType != XmlPullParser.END_TAG) {
7104      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
7105        res.setEntity(parseReference(xpp));
7106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7107        res.setPeriod(parsePeriod(xpp));
7108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
7109        res.setInactiveElement(parseBoolean(xpp));
7110      } else if (!parseBackboneContent(eventType, xpp, res))
7111        unknownContent(xpp);
7112      eventType = nextNoWhitespace(xpp);
7113    }
7114    next(xpp);
7115    parseElementClose(res);
7116    return res;
7117  }
7118
7119  protected GuidanceResponse parseGuidanceResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7120    GuidanceResponse res = new GuidanceResponse();
7121    parseDomainResourceAttributes(xpp, res);
7122    next(xpp);
7123    int eventType = nextNoWhitespace(xpp);
7124    while (eventType != XmlPullParser.END_TAG) {
7125      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
7126        res.setRequestIdElement(parseString(xpp));
7127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("module")) {
7128        res.setModule(parseReference(xpp));
7129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7130        res.setStatusElement(parseEnumeration(xpp, GuidanceResponse.GuidanceResponseStatus.NULL, new GuidanceResponse.GuidanceResponseStatusEnumFactory()));
7131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluationMessage")) {
7132        res.getEvaluationMessage().add(parseReference(xpp));
7133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputParameters")) {
7134        res.setOutputParameters(parseReference(xpp));
7135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
7136        res.getAction().add(parseGuidanceResponseGuidanceResponseActionComponent(xpp, res));
7137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
7138        res.getDataRequirement().add(parseDataRequirement(xpp));
7139      } else if (!parseDomainResourceContent(eventType, xpp, res))
7140        unknownContent(xpp);
7141      eventType = nextNoWhitespace(xpp);
7142    }
7143    next(xpp);
7144    parseElementClose(res);
7145    return res;
7146  }
7147
7148  protected GuidanceResponse.GuidanceResponseActionComponent parseGuidanceResponseGuidanceResponseActionComponent(XmlPullParser xpp, GuidanceResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7149    GuidanceResponse.GuidanceResponseActionComponent res = new GuidanceResponse.GuidanceResponseActionComponent();
7150    parseBackboneAttributes(xpp, res);
7151    next(xpp);
7152    int eventType = nextNoWhitespace(xpp);
7153    while (eventType != XmlPullParser.END_TAG) {
7154      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionIdentifier")) {
7155        res.setActionIdentifier(parseIdentifier(xpp));
7156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
7157        res.setLabelElement(parseString(xpp));
7158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
7159        res.setTitleElement(parseString(xpp));
7160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7161        res.setDescriptionElement(parseString(xpp));
7162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
7163        res.setTextEquivalentElement(parseString(xpp));
7164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
7165        res.getConcept().add(parseCodeableConcept(xpp));
7166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingEvidence")) {
7167        res.getSupportingEvidence().add(parseAttachment(xpp));
7168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
7169        res.setRelatedAction(parseGuidanceResponseGuidanceResponseActionRelatedActionComponent(xpp, owner));
7170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
7171        res.getDocumentation().add(parseAttachment(xpp));
7172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
7173        res.getParticipant().add(parseReference(xpp));
7174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7175        res.setTypeElement(parseCode(xpp));
7176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("behavior")) {
7177        res.getBehavior().add(parseGuidanceResponseGuidanceResponseActionBehaviorComponent(xpp, owner));
7178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
7179        res.setResource(parseReference(xpp));
7180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
7181        res.getAction().add(parseGuidanceResponseGuidanceResponseActionComponent(xpp, owner));
7182      } else if (!parseBackboneContent(eventType, xpp, res))
7183        unknownContent(xpp);
7184      eventType = nextNoWhitespace(xpp);
7185    }
7186    next(xpp);
7187    parseElementClose(res);
7188    return res;
7189  }
7190
7191  protected GuidanceResponse.GuidanceResponseActionRelatedActionComponent parseGuidanceResponseGuidanceResponseActionRelatedActionComponent(XmlPullParser xpp, GuidanceResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7192    GuidanceResponse.GuidanceResponseActionRelatedActionComponent res = new GuidanceResponse.GuidanceResponseActionRelatedActionComponent();
7193    parseBackboneAttributes(xpp, res);
7194    next(xpp);
7195    int eventType = nextNoWhitespace(xpp);
7196    while (eventType != XmlPullParser.END_TAG) {
7197      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionIdentifier")) {
7198        res.setActionIdentifier(parseIdentifier(xpp));
7199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
7200        res.setRelationshipElement(parseCode(xpp));
7201      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
7202        res.setOffset(parseType("offset", xpp));
7203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("anchor")) {
7204        res.setAnchorElement(parseCode(xpp));
7205      } else if (!parseBackboneContent(eventType, xpp, res))
7206        unknownContent(xpp);
7207      eventType = nextNoWhitespace(xpp);
7208    }
7209    next(xpp);
7210    parseElementClose(res);
7211    return res;
7212  }
7213
7214  protected GuidanceResponse.GuidanceResponseActionBehaviorComponent parseGuidanceResponseGuidanceResponseActionBehaviorComponent(XmlPullParser xpp, GuidanceResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7215    GuidanceResponse.GuidanceResponseActionBehaviorComponent res = new GuidanceResponse.GuidanceResponseActionBehaviorComponent();
7216    parseBackboneAttributes(xpp, res);
7217    next(xpp);
7218    int eventType = nextNoWhitespace(xpp);
7219    while (eventType != XmlPullParser.END_TAG) {
7220      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7221        res.setType(parseCoding(xpp));
7222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7223        res.setValue(parseCoding(xpp));
7224      } else if (!parseBackboneContent(eventType, xpp, res))
7225        unknownContent(xpp);
7226      eventType = nextNoWhitespace(xpp);
7227    }
7228    next(xpp);
7229    parseElementClose(res);
7230    return res;
7231  }
7232
7233  protected HealthcareService parseHealthcareService(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7234    HealthcareService res = new HealthcareService();
7235    parseDomainResourceAttributes(xpp, res);
7236    next(xpp);
7237    int eventType = nextNoWhitespace(xpp);
7238    while (eventType != XmlPullParser.END_TAG) {
7239      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7240        res.getIdentifier().add(parseIdentifier(xpp));
7241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providedBy")) {
7242        res.setProvidedBy(parseReference(xpp));
7243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
7244        res.setServiceCategory(parseCodeableConcept(xpp));
7245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
7246        res.getServiceType().add(parseCodeableConcept(xpp));
7247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
7248        res.getSpecialty().add(parseCodeableConcept(xpp));
7249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7250        res.getLocation().add(parseReference(xpp));
7251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceName")) {
7252        res.setServiceNameElement(parseString(xpp));
7253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
7254        res.setCommentElement(parseString(xpp));
7255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extraDetails")) {
7256        res.setExtraDetailsElement(parseString(xpp));
7257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
7258        res.setPhoto(parseAttachment(xpp));
7259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
7260        res.getTelecom().add(parseContactPoint(xpp));
7261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
7262        res.getCoverageArea().add(parseReference(xpp));
7263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvisionCode")) {
7264        res.getServiceProvisionCode().add(parseCodeableConcept(xpp));
7265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibility")) {
7266        res.setEligibility(parseCodeableConcept(xpp));
7267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibilityNote")) {
7268        res.setEligibilityNoteElement(parseString(xpp));
7269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programName")) {
7270        res.getProgramName().add(parseString(xpp));
7271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
7272        res.getCharacteristic().add(parseCodeableConcept(xpp));
7273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralMethod")) {
7274        res.getReferralMethod().add(parseCodeableConcept(xpp));
7275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicKey")) {
7276        res.setPublicKeyElement(parseString(xpp));
7277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentRequired")) {
7278        res.setAppointmentRequiredElement(parseBoolean(xpp));
7279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
7280        res.getAvailableTime().add(parseHealthcareServiceHealthcareServiceAvailableTimeComponent(xpp, res));
7281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
7282        res.getNotAvailable().add(parseHealthcareServiceHealthcareServiceNotAvailableComponent(xpp, res));
7283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
7284        res.setAvailabilityExceptionsElement(parseString(xpp));
7285      } else if (!parseDomainResourceContent(eventType, xpp, res))
7286        unknownContent(xpp);
7287      eventType = nextNoWhitespace(xpp);
7288    }
7289    next(xpp);
7290    parseElementClose(res);
7291    return res;
7292  }
7293
7294  protected HealthcareService.HealthcareServiceAvailableTimeComponent parseHealthcareServiceHealthcareServiceAvailableTimeComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
7295    HealthcareService.HealthcareServiceAvailableTimeComponent res = new HealthcareService.HealthcareServiceAvailableTimeComponent();
7296    parseBackboneAttributes(xpp, res);
7297    next(xpp);
7298    int eventType = nextNoWhitespace(xpp);
7299    while (eventType != XmlPullParser.END_TAG) {
7300      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
7301        res.getDaysOfWeek().add(parseEnumeration(xpp, HealthcareService.DaysOfWeek.NULL, new HealthcareService.DaysOfWeekEnumFactory()));
7302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
7303        res.setAllDayElement(parseBoolean(xpp));
7304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
7305        res.setAvailableStartTimeElement(parseTime(xpp));
7306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
7307        res.setAvailableEndTimeElement(parseTime(xpp));
7308      } else if (!parseBackboneContent(eventType, xpp, res))
7309        unknownContent(xpp);
7310      eventType = nextNoWhitespace(xpp);
7311    }
7312    next(xpp);
7313    parseElementClose(res);
7314    return res;
7315  }
7316
7317  protected HealthcareService.HealthcareServiceNotAvailableComponent parseHealthcareServiceHealthcareServiceNotAvailableComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
7318    HealthcareService.HealthcareServiceNotAvailableComponent res = new HealthcareService.HealthcareServiceNotAvailableComponent();
7319    parseBackboneAttributes(xpp, res);
7320    next(xpp);
7321    int eventType = nextNoWhitespace(xpp);
7322    while (eventType != XmlPullParser.END_TAG) {
7323      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7324        res.setDescriptionElement(parseString(xpp));
7325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
7326        res.setDuring(parsePeriod(xpp));
7327      } else if (!parseBackboneContent(eventType, xpp, res))
7328        unknownContent(xpp);
7329      eventType = nextNoWhitespace(xpp);
7330    }
7331    next(xpp);
7332    parseElementClose(res);
7333    return res;
7334  }
7335
7336  protected ImagingExcerpt parseImagingExcerpt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7337    ImagingExcerpt res = new ImagingExcerpt();
7338    parseDomainResourceAttributes(xpp, res);
7339    next(xpp);
7340    int eventType = nextNoWhitespace(xpp);
7341    while (eventType != XmlPullParser.END_TAG) {
7342      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
7343        res.setUidElement(parseOid(xpp));
7344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7345        res.setPatient(parseReference(xpp));
7346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoringTime")) {
7347        res.setAuthoringTimeElement(parseDateTime(xpp));
7348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7349        res.setAuthor(parseReference(xpp));
7350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
7351        res.setTitle(parseCodeableConcept(xpp));
7352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7353        res.setDescriptionElement(parseString(xpp));
7354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
7355        res.getStudy().add(parseImagingExcerptStudyComponent(xpp, res));
7356      } else if (!parseDomainResourceContent(eventType, xpp, res))
7357        unknownContent(xpp);
7358      eventType = nextNoWhitespace(xpp);
7359    }
7360    next(xpp);
7361    parseElementClose(res);
7362    return res;
7363  }
7364
7365  protected ImagingExcerpt.StudyComponent parseImagingExcerptStudyComponent(XmlPullParser xpp, ImagingExcerpt owner) throws XmlPullParserException, IOException, FHIRFormatError {
7366    ImagingExcerpt.StudyComponent res = new ImagingExcerpt.StudyComponent();
7367    parseBackboneAttributes(xpp, res);
7368    next(xpp);
7369    int eventType = nextNoWhitespace(xpp);
7370    while (eventType != XmlPullParser.END_TAG) {
7371      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
7372        res.setUidElement(parseOid(xpp));
7373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
7374        res.setImagingStudy(parseReference(xpp));
7375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dicom")) {
7376        res.getDicom().add(parseImagingExcerptStudyDicomComponent(xpp, owner));
7377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("viewable")) {
7378        res.getViewable().add(parseImagingExcerptStudyViewableComponent(xpp, owner));
7379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
7380        res.getSeries().add(parseImagingExcerptSeriesComponent(xpp, owner));
7381      } else if (!parseBackboneContent(eventType, xpp, res))
7382        unknownContent(xpp);
7383      eventType = nextNoWhitespace(xpp);
7384    }
7385    next(xpp);
7386    parseElementClose(res);
7387    return res;
7388  }
7389
7390  protected ImagingExcerpt.StudyDicomComponent parseImagingExcerptStudyDicomComponent(XmlPullParser xpp, ImagingExcerpt owner) throws XmlPullParserException, IOException, FHIRFormatError {
7391    ImagingExcerpt.StudyDicomComponent res = new ImagingExcerpt.StudyDicomComponent();
7392    parseBackboneAttributes(xpp, res);
7393    next(xpp);
7394    int eventType = nextNoWhitespace(xpp);
7395    while (eventType != XmlPullParser.END_TAG) {
7396      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7397        res.setTypeElement(parseEnumeration(xpp, ImagingExcerpt.DWebType.NULL, new ImagingExcerpt.DWebTypeEnumFactory()));
7398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7399        res.setUrlElement(parseUri(xpp));
7400      } else if (!parseBackboneContent(eventType, xpp, res))
7401        unknownContent(xpp);
7402      eventType = nextNoWhitespace(xpp);
7403    }
7404    next(xpp);
7405    parseElementClose(res);
7406    return res;
7407  }
7408
7409  protected ImagingExcerpt.StudyViewableComponent parseImagingExcerptStudyViewableComponent(XmlPullParser xpp, ImagingExcerpt owner) throws XmlPullParserException, IOException, FHIRFormatError {
7410    ImagingExcerpt.StudyViewableComponent res = new ImagingExcerpt.StudyViewableComponent();
7411    parseBackboneAttributes(xpp, res);
7412    next(xpp);
7413    int eventType = nextNoWhitespace(xpp);
7414    while (eventType != XmlPullParser.END_TAG) {
7415      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
7416        res.setContentTypeElement(parseCode(xpp));
7417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
7418        res.setHeightElement(parsePositiveInt(xpp));
7419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
7420        res.setWidthElement(parsePositiveInt(xpp));
7421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
7422        res.setFramesElement(parsePositiveInt(xpp));
7423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
7424        res.setDurationElement(parseUnsignedInt(xpp));
7425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("size")) {
7426        res.setSizeElement(parseUnsignedInt(xpp));
7427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
7428        res.setTitleElement(parseString(xpp));
7429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7430        res.setUrlElement(parseUri(xpp));
7431      } else if (!parseBackboneContent(eventType, xpp, res))
7432        unknownContent(xpp);
7433      eventType = nextNoWhitespace(xpp);
7434    }
7435    next(xpp);
7436    parseElementClose(res);
7437    return res;
7438  }
7439
7440  protected ImagingExcerpt.SeriesComponent parseImagingExcerptSeriesComponent(XmlPullParser xpp, ImagingExcerpt owner) throws XmlPullParserException, IOException, FHIRFormatError {
7441    ImagingExcerpt.SeriesComponent res = new ImagingExcerpt.SeriesComponent();
7442    parseBackboneAttributes(xpp, res);
7443    next(xpp);
7444    int eventType = nextNoWhitespace(xpp);
7445    while (eventType != XmlPullParser.END_TAG) {
7446      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
7447        res.setUidElement(parseOid(xpp));
7448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dicom")) {
7449        res.getDicom().add(parseImagingExcerptSeriesDicomComponent(xpp, owner));
7450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
7451        res.getInstance().add(parseImagingExcerptInstanceComponent(xpp, owner));
7452      } else if (!parseBackboneContent(eventType, xpp, res))
7453        unknownContent(xpp);
7454      eventType = nextNoWhitespace(xpp);
7455    }
7456    next(xpp);
7457    parseElementClose(res);
7458    return res;
7459  }
7460
7461  protected ImagingExcerpt.SeriesDicomComponent parseImagingExcerptSeriesDicomComponent(XmlPullParser xpp, ImagingExcerpt owner) throws XmlPullParserException, IOException, FHIRFormatError {
7462    ImagingExcerpt.SeriesDicomComponent res = new ImagingExcerpt.SeriesDicomComponent();
7463    parseBackboneAttributes(xpp, res);
7464    next(xpp);
7465    int eventType = nextNoWhitespace(xpp);
7466    while (eventType != XmlPullParser.END_TAG) {
7467      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7468        res.setTypeElement(parseEnumeration(xpp, ImagingExcerpt.DWebType.NULL, new ImagingExcerpt.DWebTypeEnumFactory()));
7469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7470        res.setUrlElement(parseUri(xpp));
7471      } else if (!parseBackboneContent(eventType, xpp, res))
7472        unknownContent(xpp);
7473      eventType = nextNoWhitespace(xpp);
7474    }
7475    next(xpp);
7476    parseElementClose(res);
7477    return res;
7478  }
7479
7480  protected ImagingExcerpt.InstanceComponent parseImagingExcerptInstanceComponent(XmlPullParser xpp, ImagingExcerpt owner) throws XmlPullParserException, IOException, FHIRFormatError {
7481    ImagingExcerpt.InstanceComponent res = new ImagingExcerpt.InstanceComponent();
7482    parseBackboneAttributes(xpp, res);
7483    next(xpp);
7484    int eventType = nextNoWhitespace(xpp);
7485    while (eventType != XmlPullParser.END_TAG) {
7486      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
7487        res.setSopClassElement(parseOid(xpp));
7488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
7489        res.setUidElement(parseOid(xpp));
7490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dicom")) {
7491        res.getDicom().add(parseImagingExcerptInstanceDicomComponent(xpp, owner));
7492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frameNumbers")) {
7493        res.getFrameNumbers().add(parseUnsignedInt(xpp));
7494      } else if (!parseBackboneContent(eventType, xpp, res))
7495        unknownContent(xpp);
7496      eventType = nextNoWhitespace(xpp);
7497    }
7498    next(xpp);
7499    parseElementClose(res);
7500    return res;
7501  }
7502
7503  protected ImagingExcerpt.InstanceDicomComponent parseImagingExcerptInstanceDicomComponent(XmlPullParser xpp, ImagingExcerpt owner) throws XmlPullParserException, IOException, FHIRFormatError {
7504    ImagingExcerpt.InstanceDicomComponent res = new ImagingExcerpt.InstanceDicomComponent();
7505    parseBackboneAttributes(xpp, res);
7506    next(xpp);
7507    int eventType = nextNoWhitespace(xpp);
7508    while (eventType != XmlPullParser.END_TAG) {
7509      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7510        res.setTypeElement(parseEnumeration(xpp, ImagingExcerpt.DWebType.NULL, new ImagingExcerpt.DWebTypeEnumFactory()));
7511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7512        res.setUrlElement(parseUri(xpp));
7513      } else if (!parseBackboneContent(eventType, xpp, res))
7514        unknownContent(xpp);
7515      eventType = nextNoWhitespace(xpp);
7516    }
7517    next(xpp);
7518    parseElementClose(res);
7519    return res;
7520  }
7521
7522  protected ImagingObjectSelection parseImagingObjectSelection(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7523    ImagingObjectSelection res = new ImagingObjectSelection();
7524    parseDomainResourceAttributes(xpp, res);
7525    next(xpp);
7526    int eventType = nextNoWhitespace(xpp);
7527    while (eventType != XmlPullParser.END_TAG) {
7528      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
7529        res.setUidElement(parseOid(xpp));
7530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7531        res.setPatient(parseReference(xpp));
7532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoringTime")) {
7533        res.setAuthoringTimeElement(parseDateTime(xpp));
7534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7535        res.setAuthor(parseReference(xpp));
7536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
7537        res.setTitle(parseCodeableConcept(xpp));
7538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7539        res.setDescriptionElement(parseString(xpp));
7540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
7541        res.getStudy().add(parseImagingObjectSelectionStudyComponent(xpp, res));
7542      } else if (!parseDomainResourceContent(eventType, xpp, res))
7543        unknownContent(xpp);
7544      eventType = nextNoWhitespace(xpp);
7545    }
7546    next(xpp);
7547    parseElementClose(res);
7548    return res;
7549  }
7550
7551  protected ImagingObjectSelection.StudyComponent parseImagingObjectSelectionStudyComponent(XmlPullParser xpp, ImagingObjectSelection owner) throws XmlPullParserException, IOException, FHIRFormatError {
7552    ImagingObjectSelection.StudyComponent res = new ImagingObjectSelection.StudyComponent();
7553    parseBackboneAttributes(xpp, res);
7554    next(xpp);
7555    int eventType = nextNoWhitespace(xpp);
7556    while (eventType != XmlPullParser.END_TAG) {
7557      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
7558        res.setUidElement(parseOid(xpp));
7559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7560        res.setUrlElement(parseUri(xpp));
7561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
7562        res.setImagingStudy(parseReference(xpp));
7563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
7564        res.getSeries().add(parseImagingObjectSelectionSeriesComponent(xpp, owner));
7565      } else if (!parseBackboneContent(eventType, xpp, res))
7566        unknownContent(xpp);
7567      eventType = nextNoWhitespace(xpp);
7568    }
7569    next(xpp);
7570    parseElementClose(res);
7571    return res;
7572  }
7573
7574  protected ImagingObjectSelection.SeriesComponent parseImagingObjectSelectionSeriesComponent(XmlPullParser xpp, ImagingObjectSelection owner) throws XmlPullParserException, IOException, FHIRFormatError {
7575    ImagingObjectSelection.SeriesComponent res = new ImagingObjectSelection.SeriesComponent();
7576    parseBackboneAttributes(xpp, res);
7577    next(xpp);
7578    int eventType = nextNoWhitespace(xpp);
7579    while (eventType != XmlPullParser.END_TAG) {
7580      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
7581        res.setUidElement(parseOid(xpp));
7582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7583        res.setUrlElement(parseUri(xpp));
7584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
7585        res.getInstance().add(parseImagingObjectSelectionInstanceComponent(xpp, owner));
7586      } else if (!parseBackboneContent(eventType, xpp, res))
7587        unknownContent(xpp);
7588      eventType = nextNoWhitespace(xpp);
7589    }
7590    next(xpp);
7591    parseElementClose(res);
7592    return res;
7593  }
7594
7595  protected ImagingObjectSelection.InstanceComponent parseImagingObjectSelectionInstanceComponent(XmlPullParser xpp, ImagingObjectSelection owner) throws XmlPullParserException, IOException, FHIRFormatError {
7596    ImagingObjectSelection.InstanceComponent res = new ImagingObjectSelection.InstanceComponent();
7597    parseBackboneAttributes(xpp, res);
7598    next(xpp);
7599    int eventType = nextNoWhitespace(xpp);
7600    while (eventType != XmlPullParser.END_TAG) {
7601      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
7602        res.setSopClassElement(parseOid(xpp));
7603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
7604        res.setUidElement(parseOid(xpp));
7605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7606        res.setUrlElement(parseUri(xpp));
7607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frame")) {
7608        res.getFrame().add(parseImagingObjectSelectionFramesComponent(xpp, owner));
7609      } else if (!parseBackboneContent(eventType, xpp, res))
7610        unknownContent(xpp);
7611      eventType = nextNoWhitespace(xpp);
7612    }
7613    next(xpp);
7614    parseElementClose(res);
7615    return res;
7616  }
7617
7618  protected ImagingObjectSelection.FramesComponent parseImagingObjectSelectionFramesComponent(XmlPullParser xpp, ImagingObjectSelection owner) throws XmlPullParserException, IOException, FHIRFormatError {
7619    ImagingObjectSelection.FramesComponent res = new ImagingObjectSelection.FramesComponent();
7620    parseBackboneAttributes(xpp, res);
7621    next(xpp);
7622    int eventType = nextNoWhitespace(xpp);
7623    while (eventType != XmlPullParser.END_TAG) {
7624      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
7625        res.getNumber().add(parseUnsignedInt(xpp));
7626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7627        res.setUrlElement(parseUri(xpp));
7628      } else if (!parseBackboneContent(eventType, xpp, res))
7629        unknownContent(xpp);
7630      eventType = nextNoWhitespace(xpp);
7631    }
7632    next(xpp);
7633    parseElementClose(res);
7634    return res;
7635  }
7636
7637  protected ImagingStudy parseImagingStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7638    ImagingStudy res = new ImagingStudy();
7639    parseDomainResourceAttributes(xpp, res);
7640    next(xpp);
7641    int eventType = nextNoWhitespace(xpp);
7642    while (eventType != XmlPullParser.END_TAG) {
7643      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
7644        res.setUidElement(parseOid(xpp));
7645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accession")) {
7646        res.setAccession(parseIdentifier(xpp));
7647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7648        res.getIdentifier().add(parseIdentifier(xpp));
7649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availability")) {
7650        res.setAvailabilityElement(parseEnumeration(xpp, ImagingStudy.InstanceAvailability.NULL, new ImagingStudy.InstanceAvailabilityEnumFactory()));
7651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modalityList")) {
7652        res.getModalityList().add(parseCoding(xpp));
7653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7654        res.setPatient(parseReference(xpp));
7655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
7656        res.setStartedElement(parseDateTime(xpp));
7657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
7658        res.getOrder().add(parseReference(xpp));
7659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referrer")) {
7660        res.setReferrer(parseReference(xpp));
7661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpreter")) {
7662        res.setInterpreter(parseReference(xpp));
7663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7664        res.setUrlElement(parseUri(xpp));
7665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSeries")) {
7666        res.setNumberOfSeriesElement(parseUnsignedInt(xpp));
7667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
7668        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
7669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
7670        res.getProcedure().add(parseReference(xpp));
7671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7672        res.setDescriptionElement(parseString(xpp));
7673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
7674        res.getSeries().add(parseImagingStudyImagingStudySeriesComponent(xpp, res));
7675      } else if (!parseDomainResourceContent(eventType, xpp, res))
7676        unknownContent(xpp);
7677      eventType = nextNoWhitespace(xpp);
7678    }
7679    next(xpp);
7680    parseElementClose(res);
7681    return res;
7682  }
7683
7684  protected ImagingStudy.ImagingStudySeriesComponent parseImagingStudyImagingStudySeriesComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
7685    ImagingStudy.ImagingStudySeriesComponent res = new ImagingStudy.ImagingStudySeriesComponent();
7686    parseBackboneAttributes(xpp, res);
7687    next(xpp);
7688    int eventType = nextNoWhitespace(xpp);
7689    while (eventType != XmlPullParser.END_TAG) {
7690      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
7691        res.setUidElement(parseOid(xpp));
7692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
7693        res.setNumberElement(parseUnsignedInt(xpp));
7694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
7695        res.setModality(parseCoding(xpp));
7696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7697        res.setDescriptionElement(parseString(xpp));
7698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
7699        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
7700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availability")) {
7701        res.setAvailabilityElement(parseEnumeration(xpp, ImagingStudy.InstanceAvailability.NULL, new ImagingStudy.InstanceAvailabilityEnumFactory()));
7702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7703        res.setUrlElement(parseUri(xpp));
7704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
7705        res.setBodySite(parseCoding(xpp));
7706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("laterality")) {
7707        res.setLaterality(parseCoding(xpp));
7708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
7709        res.setStartedElement(parseDateTime(xpp));
7710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
7711        res.getInstance().add(parseImagingStudyImagingStudySeriesInstanceComponent(xpp, owner));
7712      } else if (!parseBackboneContent(eventType, xpp, res))
7713        unknownContent(xpp);
7714      eventType = nextNoWhitespace(xpp);
7715    }
7716    next(xpp);
7717    parseElementClose(res);
7718    return res;
7719  }
7720
7721  protected ImagingStudy.ImagingStudySeriesInstanceComponent parseImagingStudyImagingStudySeriesInstanceComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
7722    ImagingStudy.ImagingStudySeriesInstanceComponent res = new ImagingStudy.ImagingStudySeriesInstanceComponent();
7723    parseBackboneAttributes(xpp, res);
7724    next(xpp);
7725    int eventType = nextNoWhitespace(xpp);
7726    while (eventType != XmlPullParser.END_TAG) {
7727      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
7728        res.setUidElement(parseOid(xpp));
7729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
7730        res.setNumberElement(parseUnsignedInt(xpp));
7731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
7732        res.setSopClassElement(parseOid(xpp));
7733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7734        res.setTypeElement(parseString(xpp));
7735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
7736        res.setTitleElement(parseString(xpp));
7737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
7738        res.getContent().add(parseAttachment(xpp));
7739      } else if (!parseBackboneContent(eventType, xpp, res))
7740        unknownContent(xpp);
7741      eventType = nextNoWhitespace(xpp);
7742    }
7743    next(xpp);
7744    parseElementClose(res);
7745    return res;
7746  }
7747
7748  protected Immunization parseImmunization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7749    Immunization res = new Immunization();
7750    parseDomainResourceAttributes(xpp, res);
7751    next(xpp);
7752    int eventType = nextNoWhitespace(xpp);
7753    while (eventType != XmlPullParser.END_TAG) {
7754      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7755        res.getIdentifier().add(parseIdentifier(xpp));
7756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7757        res.setStatusElement(parseCode(xpp));
7758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7759        res.setDateElement(parseDateTime(xpp));
7760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
7761        res.setVaccineCode(parseCodeableConcept(xpp));
7762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7763        res.setPatient(parseReference(xpp));
7764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasNotGiven")) {
7765        res.setWasNotGivenElement(parseBoolean(xpp));
7766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
7767        res.setReportedElement(parseBoolean(xpp));
7768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
7769        res.setPerformer(parseReference(xpp));
7770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
7771        res.setRequester(parseReference(xpp));
7772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7773        res.setEncounter(parseReference(xpp));
7774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
7775        res.setManufacturer(parseReference(xpp));
7776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7777        res.setLocation(parseReference(xpp));
7778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
7779        res.setLotNumberElement(parseString(xpp));
7780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
7781        res.setExpirationDateElement(parseDate(xpp));
7782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
7783        res.setSite(parseCodeableConcept(xpp));
7784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
7785        res.setRoute(parseCodeableConcept(xpp));
7786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseQuantity")) {
7787        res.setDoseQuantity(parseSimpleQuantity(xpp));
7788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7789        res.getNote().add(parseAnnotation(xpp));
7790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("explanation")) {
7791        res.setExplanation(parseImmunizationImmunizationExplanationComponent(xpp, res));
7792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
7793        res.getReaction().add(parseImmunizationImmunizationReactionComponent(xpp, res));
7794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccinationProtocol")) {
7795        res.getVaccinationProtocol().add(parseImmunizationImmunizationVaccinationProtocolComponent(xpp, res));
7796      } else if (!parseDomainResourceContent(eventType, xpp, res))
7797        unknownContent(xpp);
7798      eventType = nextNoWhitespace(xpp);
7799    }
7800    next(xpp);
7801    parseElementClose(res);
7802    return res;
7803  }
7804
7805  protected Immunization.ImmunizationExplanationComponent parseImmunizationImmunizationExplanationComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
7806    Immunization.ImmunizationExplanationComponent res = new Immunization.ImmunizationExplanationComponent();
7807    parseBackboneAttributes(xpp, res);
7808    next(xpp);
7809    int eventType = nextNoWhitespace(xpp);
7810    while (eventType != XmlPullParser.END_TAG) {
7811      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
7812        res.getReason().add(parseCodeableConcept(xpp));
7813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotGiven")) {
7814        res.getReasonNotGiven().add(parseCodeableConcept(xpp));
7815      } else if (!parseBackboneContent(eventType, xpp, res))
7816        unknownContent(xpp);
7817      eventType = nextNoWhitespace(xpp);
7818    }
7819    next(xpp);
7820    parseElementClose(res);
7821    return res;
7822  }
7823
7824  protected Immunization.ImmunizationReactionComponent parseImmunizationImmunizationReactionComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
7825    Immunization.ImmunizationReactionComponent res = new Immunization.ImmunizationReactionComponent();
7826    parseBackboneAttributes(xpp, res);
7827    next(xpp);
7828    int eventType = nextNoWhitespace(xpp);
7829    while (eventType != XmlPullParser.END_TAG) {
7830      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7831        res.setDateElement(parseDateTime(xpp));
7832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7833        res.setDetail(parseReference(xpp));
7834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
7835        res.setReportedElement(parseBoolean(xpp));
7836      } else if (!parseBackboneContent(eventType, xpp, res))
7837        unknownContent(xpp);
7838      eventType = nextNoWhitespace(xpp);
7839    }
7840    next(xpp);
7841    parseElementClose(res);
7842    return res;
7843  }
7844
7845  protected Immunization.ImmunizationVaccinationProtocolComponent parseImmunizationImmunizationVaccinationProtocolComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
7846    Immunization.ImmunizationVaccinationProtocolComponent res = new Immunization.ImmunizationVaccinationProtocolComponent();
7847    parseBackboneAttributes(xpp, res);
7848    next(xpp);
7849    int eventType = nextNoWhitespace(xpp);
7850    while (eventType != XmlPullParser.END_TAG) {
7851      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseSequence")) {
7852        res.setDoseSequenceElement(parsePositiveInt(xpp));
7853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7854        res.setDescriptionElement(parseString(xpp));
7855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
7856        res.setAuthority(parseReference(xpp));
7857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
7858        res.setSeriesElement(parseString(xpp));
7859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriesDoses")) {
7860        res.setSeriesDosesElement(parsePositiveInt(xpp));
7861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
7862        res.getTargetDisease().add(parseCodeableConcept(xpp));
7863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatus")) {
7864        res.setDoseStatus(parseCodeableConcept(xpp));
7865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatusReason")) {
7866        res.setDoseStatusReason(parseCodeableConcept(xpp));
7867      } else if (!parseBackboneContent(eventType, xpp, res))
7868        unknownContent(xpp);
7869      eventType = nextNoWhitespace(xpp);
7870    }
7871    next(xpp);
7872    parseElementClose(res);
7873    return res;
7874  }
7875
7876  protected ImmunizationRecommendation parseImmunizationRecommendation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7877    ImmunizationRecommendation res = new ImmunizationRecommendation();
7878    parseDomainResourceAttributes(xpp, res);
7879    next(xpp);
7880    int eventType = nextNoWhitespace(xpp);
7881    while (eventType != XmlPullParser.END_TAG) {
7882      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7883        res.getIdentifier().add(parseIdentifier(xpp));
7884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7885        res.setPatient(parseReference(xpp));
7886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recommendation")) {
7887        res.getRecommendation().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(xpp, res));
7888      } else if (!parseDomainResourceContent(eventType, xpp, res))
7889        unknownContent(xpp);
7890      eventType = nextNoWhitespace(xpp);
7891    }
7892    next(xpp);
7893    parseElementClose(res);
7894    return res;
7895  }
7896
7897  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
7898    ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent();
7899    parseBackboneAttributes(xpp, res);
7900    next(xpp);
7901    int eventType = nextNoWhitespace(xpp);
7902    while (eventType != XmlPullParser.END_TAG) {
7903      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7904        res.setDateElement(parseDateTime(xpp));
7905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
7906        res.setVaccineCode(parseCodeableConcept(xpp));
7907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseNumber")) {
7908        res.setDoseNumberElement(parsePositiveInt(xpp));
7909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastStatus")) {
7910        res.setForecastStatus(parseCodeableConcept(xpp));
7911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateCriterion")) {
7912        res.getDateCriterion().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(xpp, owner));
7913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
7914        res.setProtocol(parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(xpp, owner));
7915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingImmunization")) {
7916        res.getSupportingImmunization().add(parseReference(xpp));
7917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingPatientInformation")) {
7918        res.getSupportingPatientInformation().add(parseReference(xpp));
7919      } else if (!parseBackboneContent(eventType, xpp, res))
7920        unknownContent(xpp);
7921      eventType = nextNoWhitespace(xpp);
7922    }
7923    next(xpp);
7924    parseElementClose(res);
7925    return res;
7926  }
7927
7928  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
7929    ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent();
7930    parseBackboneAttributes(xpp, res);
7931    next(xpp);
7932    int eventType = nextNoWhitespace(xpp);
7933    while (eventType != XmlPullParser.END_TAG) {
7934      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7935        res.setCode(parseCodeableConcept(xpp));
7936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7937        res.setValueElement(parseDateTime(xpp));
7938      } else if (!parseBackboneContent(eventType, xpp, res))
7939        unknownContent(xpp);
7940      eventType = nextNoWhitespace(xpp);
7941    }
7942    next(xpp);
7943    parseElementClose(res);
7944    return res;
7945  }
7946
7947  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
7948    ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent();
7949    parseBackboneAttributes(xpp, res);
7950    next(xpp);
7951    int eventType = nextNoWhitespace(xpp);
7952    while (eventType != XmlPullParser.END_TAG) {
7953      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseSequence")) {
7954        res.setDoseSequenceElement(parseInteger(xpp));
7955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7956        res.setDescriptionElement(parseString(xpp));
7957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
7958        res.setAuthority(parseReference(xpp));
7959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
7960        res.setSeriesElement(parseString(xpp));
7961      } else if (!parseBackboneContent(eventType, xpp, res))
7962        unknownContent(xpp);
7963      eventType = nextNoWhitespace(xpp);
7964    }
7965    next(xpp);
7966    parseElementClose(res);
7967    return res;
7968  }
7969
7970  protected ImplementationGuide parseImplementationGuide(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7971    ImplementationGuide res = new ImplementationGuide();
7972    parseDomainResourceAttributes(xpp, res);
7973    next(xpp);
7974    int eventType = nextNoWhitespace(xpp);
7975    while (eventType != XmlPullParser.END_TAG) {
7976      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7977        res.setUrlElement(parseUri(xpp));
7978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7979        res.setVersionElement(parseString(xpp));
7980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7981        res.setNameElement(parseString(xpp));
7982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7983        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
7984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
7985        res.setExperimentalElement(parseBoolean(xpp));
7986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
7987        res.setPublisherElement(parseString(xpp));
7988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7989        res.getContact().add(parseImplementationGuideImplementationGuideContactComponent(xpp, res));
7990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7991        res.setDateElement(parseDateTime(xpp));
7992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7993        res.setDescriptionElement(parseString(xpp));
7994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
7995        res.getUseContext().add(parseCodeableConcept(xpp));
7996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
7997        res.setCopyrightElement(parseString(xpp));
7998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
7999        res.setFhirVersionElement(parseId(xpp));
8000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependency")) {
8001        res.getDependency().add(parseImplementationGuideImplementationGuideDependencyComponent(xpp, res));
8002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
8003        res.getPackage().add(parseImplementationGuideImplementationGuidePackageComponent(xpp, res));
8004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("global")) {
8005        res.getGlobal().add(parseImplementationGuideImplementationGuideGlobalComponent(xpp, res));
8006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binary")) {
8007        res.getBinary().add(parseUri(xpp));
8008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
8009        res.setPage(parseImplementationGuideImplementationGuidePageComponent(xpp, res));
8010      } else if (!parseDomainResourceContent(eventType, xpp, res))
8011        unknownContent(xpp);
8012      eventType = nextNoWhitespace(xpp);
8013    }
8014    next(xpp);
8015    parseElementClose(res);
8016    return res;
8017  }
8018
8019  protected ImplementationGuide.ImplementationGuideContactComponent parseImplementationGuideImplementationGuideContactComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
8020    ImplementationGuide.ImplementationGuideContactComponent res = new ImplementationGuide.ImplementationGuideContactComponent();
8021    parseBackboneAttributes(xpp, res);
8022    next(xpp);
8023    int eventType = nextNoWhitespace(xpp);
8024    while (eventType != XmlPullParser.END_TAG) {
8025      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8026        res.setNameElement(parseString(xpp));
8027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
8028        res.getTelecom().add(parseContactPoint(xpp));
8029      } else if (!parseBackboneContent(eventType, xpp, res))
8030        unknownContent(xpp);
8031      eventType = nextNoWhitespace(xpp);
8032    }
8033    next(xpp);
8034    parseElementClose(res);
8035    return res;
8036  }
8037
8038  protected ImplementationGuide.ImplementationGuideDependencyComponent parseImplementationGuideImplementationGuideDependencyComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
8039    ImplementationGuide.ImplementationGuideDependencyComponent res = new ImplementationGuide.ImplementationGuideDependencyComponent();
8040    parseBackboneAttributes(xpp, res);
8041    next(xpp);
8042    int eventType = nextNoWhitespace(xpp);
8043    while (eventType != XmlPullParser.END_TAG) {
8044      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8045        res.setTypeElement(parseEnumeration(xpp, ImplementationGuide.GuideDependencyType.NULL, new ImplementationGuide.GuideDependencyTypeEnumFactory()));
8046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
8047        res.setUriElement(parseUri(xpp));
8048      } else if (!parseBackboneContent(eventType, xpp, res))
8049        unknownContent(xpp);
8050      eventType = nextNoWhitespace(xpp);
8051    }
8052    next(xpp);
8053    parseElementClose(res);
8054    return res;
8055  }
8056
8057  protected ImplementationGuide.ImplementationGuidePackageComponent parseImplementationGuideImplementationGuidePackageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
8058    ImplementationGuide.ImplementationGuidePackageComponent res = new ImplementationGuide.ImplementationGuidePackageComponent();
8059    parseBackboneAttributes(xpp, res);
8060    next(xpp);
8061    int eventType = nextNoWhitespace(xpp);
8062    while (eventType != XmlPullParser.END_TAG) {
8063      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8064        res.setNameElement(parseString(xpp));
8065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8066        res.setDescriptionElement(parseString(xpp));
8067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
8068        res.getResource().add(parseImplementationGuideImplementationGuidePackageResourceComponent(xpp, owner));
8069      } else if (!parseBackboneContent(eventType, xpp, res))
8070        unknownContent(xpp);
8071      eventType = nextNoWhitespace(xpp);
8072    }
8073    next(xpp);
8074    parseElementClose(res);
8075    return res;
8076  }
8077
8078  protected ImplementationGuide.ImplementationGuidePackageResourceComponent parseImplementationGuideImplementationGuidePackageResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
8079    ImplementationGuide.ImplementationGuidePackageResourceComponent res = new ImplementationGuide.ImplementationGuidePackageResourceComponent();
8080    parseBackboneAttributes(xpp, res);
8081    next(xpp);
8082    int eventType = nextNoWhitespace(xpp);
8083    while (eventType != XmlPullParser.END_TAG) {
8084      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("example")) {
8085        res.setExampleElement(parseBoolean(xpp));
8086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8087        res.setNameElement(parseString(xpp));
8088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8089        res.setDescriptionElement(parseString(xpp));
8090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("acronym")) {
8091        res.setAcronymElement(parseString(xpp));
8092      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
8093        res.setSource(parseType("source", xpp));
8094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exampleFor")) {
8095        res.setExampleFor(parseReference(xpp));
8096      } else if (!parseBackboneContent(eventType, xpp, res))
8097        unknownContent(xpp);
8098      eventType = nextNoWhitespace(xpp);
8099    }
8100    next(xpp);
8101    parseElementClose(res);
8102    return res;
8103  }
8104
8105  protected ImplementationGuide.ImplementationGuideGlobalComponent parseImplementationGuideImplementationGuideGlobalComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
8106    ImplementationGuide.ImplementationGuideGlobalComponent res = new ImplementationGuide.ImplementationGuideGlobalComponent();
8107    parseBackboneAttributes(xpp, res);
8108    next(xpp);
8109    int eventType = nextNoWhitespace(xpp);
8110    while (eventType != XmlPullParser.END_TAG) {
8111      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8112        res.setTypeElement(parseCode(xpp));
8113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
8114        res.setProfile(parseReference(xpp));
8115      } else if (!parseBackboneContent(eventType, xpp, res))
8116        unknownContent(xpp);
8117      eventType = nextNoWhitespace(xpp);
8118    }
8119    next(xpp);
8120    parseElementClose(res);
8121    return res;
8122  }
8123
8124  protected ImplementationGuide.ImplementationGuidePageComponent parseImplementationGuideImplementationGuidePageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
8125    ImplementationGuide.ImplementationGuidePageComponent res = new ImplementationGuide.ImplementationGuidePageComponent();
8126    parseBackboneAttributes(xpp, res);
8127    next(xpp);
8128    int eventType = nextNoWhitespace(xpp);
8129    while (eventType != XmlPullParser.END_TAG) {
8130      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8131        res.setSourceElement(parseUri(xpp));
8132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8133        res.setNameElement(parseString(xpp));
8134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
8135        res.setKindElement(parseEnumeration(xpp, ImplementationGuide.GuidePageKind.NULL, new ImplementationGuide.GuidePageKindEnumFactory()));
8136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8137        res.getType().add(parseCode(xpp));
8138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
8139        res.getPackage().add(parseString(xpp));
8140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
8141        res.setFormatElement(parseCode(xpp));
8142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
8143        res.getPage().add(parseImplementationGuideImplementationGuidePageComponent(xpp, owner));
8144      } else if (!parseBackboneContent(eventType, xpp, res))
8145        unknownContent(xpp);
8146      eventType = nextNoWhitespace(xpp);
8147    }
8148    next(xpp);
8149    parseElementClose(res);
8150    return res;
8151  }
8152
8153  protected Library parseLibrary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8154    Library res = new Library();
8155    parseDomainResourceAttributes(xpp, res);
8156    next(xpp);
8157    int eventType = nextNoWhitespace(xpp);
8158    while (eventType != XmlPullParser.END_TAG) {
8159      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("moduleMetadata")) {
8160        res.setModuleMetadata(parseModuleMetadata(xpp));
8161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("model")) {
8162        res.getModel().add(parseLibraryLibraryModelComponent(xpp, res));
8163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
8164        res.getLibrary().add(parseLibraryLibraryLibraryComponent(xpp, res));
8165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
8166        res.getCodeSystem().add(parseLibraryLibraryCodeSystemComponent(xpp, res));
8167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
8168        res.getValueSet().add(parseLibraryLibraryValueSetComponent(xpp, res));
8169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
8170        res.getParameter().add(parseParameterDefinition(xpp));
8171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
8172        res.getDataRequirement().add(parseDataRequirement(xpp));
8173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
8174        res.setDocument(parseAttachment(xpp));
8175      } else if (!parseDomainResourceContent(eventType, xpp, res))
8176        unknownContent(xpp);
8177      eventType = nextNoWhitespace(xpp);
8178    }
8179    next(xpp);
8180    parseElementClose(res);
8181    return res;
8182  }
8183
8184  protected Library.LibraryModelComponent parseLibraryLibraryModelComponent(XmlPullParser xpp, Library owner) throws XmlPullParserException, IOException, FHIRFormatError {
8185    Library.LibraryModelComponent res = new Library.LibraryModelComponent();
8186    parseBackboneAttributes(xpp, res);
8187    next(xpp);
8188    int eventType = nextNoWhitespace(xpp);
8189    while (eventType != XmlPullParser.END_TAG) {
8190      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8191        res.setNameElement(parseString(xpp));
8192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8193        res.setIdentifierElement(parseString(xpp));
8194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8195        res.setVersionElement(parseString(xpp));
8196      } else if (!parseBackboneContent(eventType, xpp, res))
8197        unknownContent(xpp);
8198      eventType = nextNoWhitespace(xpp);
8199    }
8200    next(xpp);
8201    parseElementClose(res);
8202    return res;
8203  }
8204
8205  protected Library.LibraryLibraryComponent parseLibraryLibraryLibraryComponent(XmlPullParser xpp, Library owner) throws XmlPullParserException, IOException, FHIRFormatError {
8206    Library.LibraryLibraryComponent res = new Library.LibraryLibraryComponent();
8207    parseBackboneAttributes(xpp, res);
8208    next(xpp);
8209    int eventType = nextNoWhitespace(xpp);
8210    while (eventType != XmlPullParser.END_TAG) {
8211      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8212        res.setNameElement(parseString(xpp));
8213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8214        res.setIdentifierElement(parseString(xpp));
8215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8216        res.setVersionElement(parseString(xpp));
8217      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "document")) {
8218        res.setDocument(parseType("document", xpp));
8219      } else if (!parseBackboneContent(eventType, xpp, res))
8220        unknownContent(xpp);
8221      eventType = nextNoWhitespace(xpp);
8222    }
8223    next(xpp);
8224    parseElementClose(res);
8225    return res;
8226  }
8227
8228  protected Library.LibraryCodeSystemComponent parseLibraryLibraryCodeSystemComponent(XmlPullParser xpp, Library owner) throws XmlPullParserException, IOException, FHIRFormatError {
8229    Library.LibraryCodeSystemComponent res = new Library.LibraryCodeSystemComponent();
8230    parseBackboneAttributes(xpp, res);
8231    next(xpp);
8232    int eventType = nextNoWhitespace(xpp);
8233    while (eventType != XmlPullParser.END_TAG) {
8234      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8235        res.setNameElement(parseString(xpp));
8236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8237        res.setIdentifierElement(parseString(xpp));
8238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8239        res.setVersionElement(parseString(xpp));
8240      } else if (!parseBackboneContent(eventType, xpp, res))
8241        unknownContent(xpp);
8242      eventType = nextNoWhitespace(xpp);
8243    }
8244    next(xpp);
8245    parseElementClose(res);
8246    return res;
8247  }
8248
8249  protected Library.LibraryValueSetComponent parseLibraryLibraryValueSetComponent(XmlPullParser xpp, Library owner) throws XmlPullParserException, IOException, FHIRFormatError {
8250    Library.LibraryValueSetComponent res = new Library.LibraryValueSetComponent();
8251    parseBackboneAttributes(xpp, res);
8252    next(xpp);
8253    int eventType = nextNoWhitespace(xpp);
8254    while (eventType != XmlPullParser.END_TAG) {
8255      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8256        res.setNameElement(parseString(xpp));
8257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8258        res.setIdentifierElement(parseString(xpp));
8259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8260        res.setVersionElement(parseString(xpp));
8261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
8262        res.getCodeSystem().add(parseString(xpp));
8263      } else if (!parseBackboneContent(eventType, xpp, res))
8264        unknownContent(xpp);
8265      eventType = nextNoWhitespace(xpp);
8266    }
8267    next(xpp);
8268    parseElementClose(res);
8269    return res;
8270  }
8271
8272  protected Linkage parseLinkage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8273    Linkage res = new Linkage();
8274    parseDomainResourceAttributes(xpp, res);
8275    next(xpp);
8276    int eventType = nextNoWhitespace(xpp);
8277    while (eventType != XmlPullParser.END_TAG) {
8278      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8279        res.setAuthor(parseReference(xpp));
8280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
8281        res.getItem().add(parseLinkageLinkageItemComponent(xpp, res));
8282      } else if (!parseDomainResourceContent(eventType, xpp, res))
8283        unknownContent(xpp);
8284      eventType = nextNoWhitespace(xpp);
8285    }
8286    next(xpp);
8287    parseElementClose(res);
8288    return res;
8289  }
8290
8291  protected Linkage.LinkageItemComponent parseLinkageLinkageItemComponent(XmlPullParser xpp, Linkage owner) throws XmlPullParserException, IOException, FHIRFormatError {
8292    Linkage.LinkageItemComponent res = new Linkage.LinkageItemComponent();
8293    parseBackboneAttributes(xpp, res);
8294    next(xpp);
8295    int eventType = nextNoWhitespace(xpp);
8296    while (eventType != XmlPullParser.END_TAG) {
8297      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8298        res.setTypeElement(parseEnumeration(xpp, Linkage.LinkageType.NULL, new Linkage.LinkageTypeEnumFactory()));
8299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
8300        res.setResource(parseReference(xpp));
8301      } else if (!parseBackboneContent(eventType, xpp, res))
8302        unknownContent(xpp);
8303      eventType = nextNoWhitespace(xpp);
8304    }
8305    next(xpp);
8306    parseElementClose(res);
8307    return res;
8308  }
8309
8310  protected ListResource parseListResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8311    ListResource res = new ListResource();
8312    parseDomainResourceAttributes(xpp, res);
8313    next(xpp);
8314    int eventType = nextNoWhitespace(xpp);
8315    while (eventType != XmlPullParser.END_TAG) {
8316      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8317        res.getIdentifier().add(parseIdentifier(xpp));
8318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8319        res.setStatusElement(parseEnumeration(xpp, ListResource.ListStatus.NULL, new ListResource.ListStatusEnumFactory()));
8320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
8321        res.setModeElement(parseEnumeration(xpp, ListResource.ListMode.NULL, new ListResource.ListModeEnumFactory()));
8322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
8323        res.setTitleElement(parseString(xpp));
8324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8325        res.setCode(parseCodeableConcept(xpp));
8326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8327        res.setSubject(parseReference(xpp));
8328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8329        res.setEncounter(parseReference(xpp));
8330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8331        res.setDateElement(parseDateTime(xpp));
8332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8333        res.setSource(parseReference(xpp));
8334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
8335        res.setOrderedBy(parseCodeableConcept(xpp));
8336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8337        res.getNote().add(parseAnnotation(xpp));
8338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
8339        res.getEntry().add(parseListResourceListEntryComponent(xpp, res));
8340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
8341        res.setEmptyReason(parseCodeableConcept(xpp));
8342      } else if (!parseDomainResourceContent(eventType, xpp, res))
8343        unknownContent(xpp);
8344      eventType = nextNoWhitespace(xpp);
8345    }
8346    next(xpp);
8347    parseElementClose(res);
8348    return res;
8349  }
8350
8351  protected ListResource.ListEntryComponent parseListResourceListEntryComponent(XmlPullParser xpp, ListResource owner) throws XmlPullParserException, IOException, FHIRFormatError {
8352    ListResource.ListEntryComponent res = new ListResource.ListEntryComponent();
8353    parseBackboneAttributes(xpp, res);
8354    next(xpp);
8355    int eventType = nextNoWhitespace(xpp);
8356    while (eventType != XmlPullParser.END_TAG) {
8357      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("flag")) {
8358        res.setFlag(parseCodeableConcept(xpp));
8359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deleted")) {
8360        res.setDeletedElement(parseBoolean(xpp));
8361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8362        res.setDateElement(parseDateTime(xpp));
8363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
8364        res.setItem(parseReference(xpp));
8365      } else if (!parseBackboneContent(eventType, xpp, res))
8366        unknownContent(xpp);
8367      eventType = nextNoWhitespace(xpp);
8368    }
8369    next(xpp);
8370    parseElementClose(res);
8371    return res;
8372  }
8373
8374  protected Location parseLocation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8375    Location res = new Location();
8376    parseDomainResourceAttributes(xpp, res);
8377    next(xpp);
8378    int eventType = nextNoWhitespace(xpp);
8379    while (eventType != XmlPullParser.END_TAG) {
8380      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8381        res.getIdentifier().add(parseIdentifier(xpp));
8382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8383        res.setStatusElement(parseEnumeration(xpp, Location.LocationStatus.NULL, new Location.LocationStatusEnumFactory()));
8384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8385        res.setNameElement(parseString(xpp));
8386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8387        res.setDescriptionElement(parseString(xpp));
8388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
8389        res.setModeElement(parseEnumeration(xpp, Location.LocationMode.NULL, new Location.LocationModeEnumFactory()));
8390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8391        res.setType(parseCodeableConcept(xpp));
8392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
8393        res.getTelecom().add(parseContactPoint(xpp));
8394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
8395        res.setAddress(parseAddress(xpp));
8396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
8397        res.setPhysicalType(parseCodeableConcept(xpp));
8398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("position")) {
8399        res.setPosition(parseLocationLocationPositionComponent(xpp, res));
8400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
8401        res.setManagingOrganization(parseReference(xpp));
8402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
8403        res.setPartOf(parseReference(xpp));
8404      } else if (!parseDomainResourceContent(eventType, xpp, res))
8405        unknownContent(xpp);
8406      eventType = nextNoWhitespace(xpp);
8407    }
8408    next(xpp);
8409    parseElementClose(res);
8410    return res;
8411  }
8412
8413  protected Location.LocationPositionComponent parseLocationLocationPositionComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
8414    Location.LocationPositionComponent res = new Location.LocationPositionComponent();
8415    parseBackboneAttributes(xpp, res);
8416    next(xpp);
8417    int eventType = nextNoWhitespace(xpp);
8418    while (eventType != XmlPullParser.END_TAG) {
8419      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("longitude")) {
8420        res.setLongitudeElement(parseDecimal(xpp));
8421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("latitude")) {
8422        res.setLatitudeElement(parseDecimal(xpp));
8423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altitude")) {
8424        res.setAltitudeElement(parseDecimal(xpp));
8425      } else if (!parseBackboneContent(eventType, xpp, res))
8426        unknownContent(xpp);
8427      eventType = nextNoWhitespace(xpp);
8428    }
8429    next(xpp);
8430    parseElementClose(res);
8431    return res;
8432  }
8433
8434  protected Measure parseMeasure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8435    Measure res = new Measure();
8436    parseDomainResourceAttributes(xpp, res);
8437    next(xpp);
8438    int eventType = nextNoWhitespace(xpp);
8439    while (eventType != XmlPullParser.END_TAG) {
8440      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("moduleMetadata")) {
8441        res.setModuleMetadata(parseModuleMetadata(xpp));
8442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
8443        res.getLibrary().add(parseReference(xpp));
8444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disclaimer")) {
8445        res.setDisclaimerElement(parseMarkdown(xpp));
8446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
8447        res.setScoringElement(parseEnumeration(xpp, Measure.MeasureScoring.NULL, new Measure.MeasureScoringEnumFactory()));
8448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8449        res.getType().add(parseEnumeration(xpp, Measure.MeasureType.NULL, new Measure.MeasureTypeEnumFactory()));
8450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskAdjustment")) {
8451        res.setRiskAdjustmentElement(parseString(xpp));
8452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rateAggregation")) {
8453        res.setRateAggregationElement(parseString(xpp));
8454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
8455        res.setRationaleElement(parseMarkdown(xpp));
8456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalRecommendationStatement")) {
8457        res.setClinicalRecommendationStatementElement(parseMarkdown(xpp));
8458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
8459        res.setImprovementNotationElement(parseString(xpp));
8460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
8461        res.setDefinitionElement(parseMarkdown(xpp));
8462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guidance")) {
8463        res.setGuidanceElement(parseMarkdown(xpp));
8464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("set")) {
8465        res.setSetElement(parseString(xpp));
8466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8467        res.getGroup().add(parseMeasureMeasureGroupComponent(xpp, res));
8468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplementalData")) {
8469        res.getSupplementalData().add(parseMeasureMeasureSupplementalDataComponent(xpp, res));
8470      } else if (!parseDomainResourceContent(eventType, xpp, res))
8471        unknownContent(xpp);
8472      eventType = nextNoWhitespace(xpp);
8473    }
8474    next(xpp);
8475    parseElementClose(res);
8476    return res;
8477  }
8478
8479  protected Measure.MeasureGroupComponent parseMeasureMeasureGroupComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
8480    Measure.MeasureGroupComponent res = new Measure.MeasureGroupComponent();
8481    parseBackboneAttributes(xpp, res);
8482    next(xpp);
8483    int eventType = nextNoWhitespace(xpp);
8484    while (eventType != XmlPullParser.END_TAG) {
8485      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8486        res.setIdentifier(parseIdentifier(xpp));
8487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8488        res.setNameElement(parseString(xpp));
8489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8490        res.setDescriptionElement(parseString(xpp));
8491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
8492        res.getPopulation().add(parseMeasureMeasureGroupPopulationComponent(xpp, owner));
8493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
8494        res.getStratifier().add(parseMeasureMeasureGroupStratifierComponent(xpp, owner));
8495      } else if (!parseBackboneContent(eventType, xpp, res))
8496        unknownContent(xpp);
8497      eventType = nextNoWhitespace(xpp);
8498    }
8499    next(xpp);
8500    parseElementClose(res);
8501    return res;
8502  }
8503
8504  protected Measure.MeasureGroupPopulationComponent parseMeasureMeasureGroupPopulationComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
8505    Measure.MeasureGroupPopulationComponent res = new Measure.MeasureGroupPopulationComponent();
8506    parseBackboneAttributes(xpp, res);
8507    next(xpp);
8508    int eventType = nextNoWhitespace(xpp);
8509    while (eventType != XmlPullParser.END_TAG) {
8510      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8511        res.setTypeElement(parseEnumeration(xpp, Measure.MeasurePopulationType.NULL, new Measure.MeasurePopulationTypeEnumFactory()));
8512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8513        res.setIdentifier(parseIdentifier(xpp));
8514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8515        res.setNameElement(parseString(xpp));
8516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8517        res.setDescriptionElement(parseString(xpp));
8518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
8519        res.setCriteriaElement(parseString(xpp));
8520      } else if (!parseBackboneContent(eventType, xpp, res))
8521        unknownContent(xpp);
8522      eventType = nextNoWhitespace(xpp);
8523    }
8524    next(xpp);
8525    parseElementClose(res);
8526    return res;
8527  }
8528
8529  protected Measure.MeasureGroupStratifierComponent parseMeasureMeasureGroupStratifierComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
8530    Measure.MeasureGroupStratifierComponent res = new Measure.MeasureGroupStratifierComponent();
8531    parseBackboneAttributes(xpp, res);
8532    next(xpp);
8533    int eventType = nextNoWhitespace(xpp);
8534    while (eventType != XmlPullParser.END_TAG) {
8535      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8536        res.setIdentifier(parseIdentifier(xpp));
8537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
8538        res.setCriteriaElement(parseString(xpp));
8539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
8540        res.setPathElement(parseString(xpp));
8541      } else if (!parseBackboneContent(eventType, xpp, res))
8542        unknownContent(xpp);
8543      eventType = nextNoWhitespace(xpp);
8544    }
8545    next(xpp);
8546    parseElementClose(res);
8547    return res;
8548  }
8549
8550  protected Measure.MeasureSupplementalDataComponent parseMeasureMeasureSupplementalDataComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
8551    Measure.MeasureSupplementalDataComponent res = new Measure.MeasureSupplementalDataComponent();
8552    parseBackboneAttributes(xpp, res);
8553    next(xpp);
8554    int eventType = nextNoWhitespace(xpp);
8555    while (eventType != XmlPullParser.END_TAG) {
8556      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8557        res.setIdentifier(parseIdentifier(xpp));
8558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
8559        res.getUsage().add(parseEnumeration(xpp, Measure.MeasureDataUsage.NULL, new Measure.MeasureDataUsageEnumFactory()));
8560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
8561        res.setCriteriaElement(parseString(xpp));
8562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
8563        res.setPathElement(parseString(xpp));
8564      } else if (!parseBackboneContent(eventType, xpp, res))
8565        unknownContent(xpp);
8566      eventType = nextNoWhitespace(xpp);
8567    }
8568    next(xpp);
8569    parseElementClose(res);
8570    return res;
8571  }
8572
8573  protected MeasureReport parseMeasureReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8574    MeasureReport res = new MeasureReport();
8575    parseDomainResourceAttributes(xpp, res);
8576    next(xpp);
8577    int eventType = nextNoWhitespace(xpp);
8578    while (eventType != XmlPullParser.END_TAG) {
8579      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
8580        res.setMeasure(parseReference(xpp));
8581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8582        res.setTypeElement(parseEnumeration(xpp, MeasureReport.MeasureReportType.NULL, new MeasureReport.MeasureReportTypeEnumFactory()));
8583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8584        res.setPatient(parseReference(xpp));
8585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8586        res.setPeriod(parsePeriod(xpp));
8587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8588        res.setStatusElement(parseEnumeration(xpp, MeasureReport.MeasureReportStatus.NULL, new MeasureReport.MeasureReportStatusEnumFactory()));
8589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8590        res.setDateElement(parseDateTime(xpp));
8591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportingOrganization")) {
8592        res.setReportingOrganization(parseReference(xpp));
8593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8594        res.getGroup().add(parseMeasureReportMeasureReportGroupComponent(xpp, res));
8595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluatedResources")) {
8596        res.setEvaluatedResources(parseReference(xpp));
8597      } else if (!parseDomainResourceContent(eventType, xpp, res))
8598        unknownContent(xpp);
8599      eventType = nextNoWhitespace(xpp);
8600    }
8601    next(xpp);
8602    parseElementClose(res);
8603    return res;
8604  }
8605
8606  protected MeasureReport.MeasureReportGroupComponent parseMeasureReportMeasureReportGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
8607    MeasureReport.MeasureReportGroupComponent res = new MeasureReport.MeasureReportGroupComponent();
8608    parseBackboneAttributes(xpp, res);
8609    next(xpp);
8610    int eventType = nextNoWhitespace(xpp);
8611    while (eventType != XmlPullParser.END_TAG) {
8612      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8613        res.setIdentifier(parseIdentifier(xpp));
8614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
8615        res.getPopulation().add(parseMeasureReportMeasureReportGroupPopulationComponent(xpp, owner));
8616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
8617        res.setMeasureScoreElement(parseDecimal(xpp));
8618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
8619        res.getStratifier().add(parseMeasureReportMeasureReportGroupStratifierComponent(xpp, owner));
8620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplementalData")) {
8621        res.getSupplementalData().add(parseMeasureReportMeasureReportGroupSupplementalDataComponent(xpp, owner));
8622      } else if (!parseBackboneContent(eventType, xpp, res))
8623        unknownContent(xpp);
8624      eventType = nextNoWhitespace(xpp);
8625    }
8626    next(xpp);
8627    parseElementClose(res);
8628    return res;
8629  }
8630
8631  protected MeasureReport.MeasureReportGroupPopulationComponent parseMeasureReportMeasureReportGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
8632    MeasureReport.MeasureReportGroupPopulationComponent res = new MeasureReport.MeasureReportGroupPopulationComponent();
8633    parseBackboneAttributes(xpp, res);
8634    next(xpp);
8635    int eventType = nextNoWhitespace(xpp);
8636    while (eventType != XmlPullParser.END_TAG) {
8637      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8638        res.setTypeElement(parseCode(xpp));
8639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
8640        res.setCountElement(parseInteger(xpp));
8641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patients")) {
8642        res.setPatients(parseReference(xpp));
8643      } else if (!parseBackboneContent(eventType, xpp, res))
8644        unknownContent(xpp);
8645      eventType = nextNoWhitespace(xpp);
8646    }
8647    next(xpp);
8648    parseElementClose(res);
8649    return res;
8650  }
8651
8652  protected MeasureReport.MeasureReportGroupStratifierComponent parseMeasureReportMeasureReportGroupStratifierComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
8653    MeasureReport.MeasureReportGroupStratifierComponent res = new MeasureReport.MeasureReportGroupStratifierComponent();
8654    parseBackboneAttributes(xpp, res);
8655    next(xpp);
8656    int eventType = nextNoWhitespace(xpp);
8657    while (eventType != XmlPullParser.END_TAG) {
8658      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8659        res.setIdentifier(parseIdentifier(xpp));
8660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8661        res.getGroup().add(parseMeasureReportMeasureReportGroupStratifierGroupComponent(xpp, owner));
8662      } else if (!parseBackboneContent(eventType, xpp, res))
8663        unknownContent(xpp);
8664      eventType = nextNoWhitespace(xpp);
8665    }
8666    next(xpp);
8667    parseElementClose(res);
8668    return res;
8669  }
8670
8671  protected MeasureReport.MeasureReportGroupStratifierGroupComponent parseMeasureReportMeasureReportGroupStratifierGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
8672    MeasureReport.MeasureReportGroupStratifierGroupComponent res = new MeasureReport.MeasureReportGroupStratifierGroupComponent();
8673    parseBackboneAttributes(xpp, res);
8674    next(xpp);
8675    int eventType = nextNoWhitespace(xpp);
8676    while (eventType != XmlPullParser.END_TAG) {
8677      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
8678        res.setValueElement(parseString(xpp));
8679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
8680        res.getPopulation().add(parseMeasureReportMeasureReportGroupStratifierGroupPopulationComponent(xpp, owner));
8681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
8682        res.setMeasureScoreElement(parseDecimal(xpp));
8683      } else if (!parseBackboneContent(eventType, xpp, res))
8684        unknownContent(xpp);
8685      eventType = nextNoWhitespace(xpp);
8686    }
8687    next(xpp);
8688    parseElementClose(res);
8689    return res;
8690  }
8691
8692  protected MeasureReport.MeasureReportGroupStratifierGroupPopulationComponent parseMeasureReportMeasureReportGroupStratifierGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
8693    MeasureReport.MeasureReportGroupStratifierGroupPopulationComponent res = new MeasureReport.MeasureReportGroupStratifierGroupPopulationComponent();
8694    parseBackboneAttributes(xpp, res);
8695    next(xpp);
8696    int eventType = nextNoWhitespace(xpp);
8697    while (eventType != XmlPullParser.END_TAG) {
8698      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8699        res.setTypeElement(parseCode(xpp));
8700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
8701        res.setCountElement(parseInteger(xpp));
8702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patients")) {
8703        res.setPatients(parseReference(xpp));
8704      } else if (!parseBackboneContent(eventType, xpp, res))
8705        unknownContent(xpp);
8706      eventType = nextNoWhitespace(xpp);
8707    }
8708    next(xpp);
8709    parseElementClose(res);
8710    return res;
8711  }
8712
8713  protected MeasureReport.MeasureReportGroupSupplementalDataComponent parseMeasureReportMeasureReportGroupSupplementalDataComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
8714    MeasureReport.MeasureReportGroupSupplementalDataComponent res = new MeasureReport.MeasureReportGroupSupplementalDataComponent();
8715    parseBackboneAttributes(xpp, res);
8716    next(xpp);
8717    int eventType = nextNoWhitespace(xpp);
8718    while (eventType != XmlPullParser.END_TAG) {
8719      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8720        res.setIdentifier(parseIdentifier(xpp));
8721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8722        res.getGroup().add(parseMeasureReportMeasureReportGroupSupplementalDataGroupComponent(xpp, owner));
8723      } else if (!parseBackboneContent(eventType, xpp, res))
8724        unknownContent(xpp);
8725      eventType = nextNoWhitespace(xpp);
8726    }
8727    next(xpp);
8728    parseElementClose(res);
8729    return res;
8730  }
8731
8732  protected MeasureReport.MeasureReportGroupSupplementalDataGroupComponent parseMeasureReportMeasureReportGroupSupplementalDataGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
8733    MeasureReport.MeasureReportGroupSupplementalDataGroupComponent res = new MeasureReport.MeasureReportGroupSupplementalDataGroupComponent();
8734    parseBackboneAttributes(xpp, res);
8735    next(xpp);
8736    int eventType = nextNoWhitespace(xpp);
8737    while (eventType != XmlPullParser.END_TAG) {
8738      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
8739        res.setValueElement(parseString(xpp));
8740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
8741        res.setCountElement(parseInteger(xpp));
8742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patients")) {
8743        res.setPatients(parseReference(xpp));
8744      } else if (!parseBackboneContent(eventType, xpp, res))
8745        unknownContent(xpp);
8746      eventType = nextNoWhitespace(xpp);
8747    }
8748    next(xpp);
8749    parseElementClose(res);
8750    return res;
8751  }
8752
8753  protected Media parseMedia(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8754    Media res = new Media();
8755    parseDomainResourceAttributes(xpp, res);
8756    next(xpp);
8757    int eventType = nextNoWhitespace(xpp);
8758    while (eventType != XmlPullParser.END_TAG) {
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("type")) {
8762        res.setTypeElement(parseEnumeration(xpp, Media.DigitalMediaType.NULL, new Media.DigitalMediaTypeEnumFactory()));
8763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
8764        res.setSubtype(parseCodeableConcept(xpp));
8765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("view")) {
8766        res.setView(parseCodeableConcept(xpp));
8767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8768        res.setSubject(parseReference(xpp));
8769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
8770        res.setOperator(parseReference(xpp));
8771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
8772        res.setDeviceNameElement(parseString(xpp));
8773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
8774        res.setHeightElement(parsePositiveInt(xpp));
8775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
8776        res.setWidthElement(parsePositiveInt(xpp));
8777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
8778        res.setFramesElement(parsePositiveInt(xpp));
8779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
8780        res.setDurationElement(parseUnsignedInt(xpp));
8781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
8782        res.setContent(parseAttachment(xpp));
8783      } else if (!parseDomainResourceContent(eventType, xpp, res))
8784        unknownContent(xpp);
8785      eventType = nextNoWhitespace(xpp);
8786    }
8787    next(xpp);
8788    parseElementClose(res);
8789    return res;
8790  }
8791
8792  protected Medication parseMedication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8793    Medication res = new Medication();
8794    parseDomainResourceAttributes(xpp, res);
8795    next(xpp);
8796    int eventType = nextNoWhitespace(xpp);
8797    while (eventType != XmlPullParser.END_TAG) {
8798      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8799        res.setCode(parseCodeableConcept(xpp));
8800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isBrand")) {
8801        res.setIsBrandElement(parseBoolean(xpp));
8802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
8803        res.setManufacturer(parseReference(xpp));
8804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
8805        res.setProduct(parseMedicationMedicationProductComponent(xpp, res));
8806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
8807        res.setPackage(parseMedicationMedicationPackageComponent(xpp, res));
8808      } else if (!parseDomainResourceContent(eventType, xpp, res))
8809        unknownContent(xpp);
8810      eventType = nextNoWhitespace(xpp);
8811    }
8812    next(xpp);
8813    parseElementClose(res);
8814    return res;
8815  }
8816
8817  protected Medication.MedicationProductComponent parseMedicationMedicationProductComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
8818    Medication.MedicationProductComponent res = new Medication.MedicationProductComponent();
8819    parseBackboneAttributes(xpp, res);
8820    next(xpp);
8821    int eventType = nextNoWhitespace(xpp);
8822    while (eventType != XmlPullParser.END_TAG) {
8823      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
8824        res.setForm(parseCodeableConcept(xpp));
8825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
8826        res.getIngredient().add(parseMedicationMedicationProductIngredientComponent(xpp, owner));
8827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batch")) {
8828        res.getBatch().add(parseMedicationMedicationProductBatchComponent(xpp, owner));
8829      } else if (!parseBackboneContent(eventType, xpp, res))
8830        unknownContent(xpp);
8831      eventType = nextNoWhitespace(xpp);
8832    }
8833    next(xpp);
8834    parseElementClose(res);
8835    return res;
8836  }
8837
8838  protected Medication.MedicationProductIngredientComponent parseMedicationMedicationProductIngredientComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
8839    Medication.MedicationProductIngredientComponent res = new Medication.MedicationProductIngredientComponent();
8840    parseBackboneAttributes(xpp, res);
8841    next(xpp);
8842    int eventType = nextNoWhitespace(xpp);
8843    while (eventType != XmlPullParser.END_TAG) {
8844      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
8845        res.setItem(parseType("item", xpp));
8846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
8847        res.setAmount(parseRatio(xpp));
8848      } else if (!parseBackboneContent(eventType, xpp, res))
8849        unknownContent(xpp);
8850      eventType = nextNoWhitespace(xpp);
8851    }
8852    next(xpp);
8853    parseElementClose(res);
8854    return res;
8855  }
8856
8857  protected Medication.MedicationProductBatchComponent parseMedicationMedicationProductBatchComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
8858    Medication.MedicationProductBatchComponent res = new Medication.MedicationProductBatchComponent();
8859    parseBackboneAttributes(xpp, res);
8860    next(xpp);
8861    int eventType = nextNoWhitespace(xpp);
8862    while (eventType != XmlPullParser.END_TAG) {
8863      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
8864        res.setLotNumberElement(parseString(xpp));
8865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
8866        res.setExpirationDateElement(parseDateTime(xpp));
8867      } else if (!parseBackboneContent(eventType, xpp, res))
8868        unknownContent(xpp);
8869      eventType = nextNoWhitespace(xpp);
8870    }
8871    next(xpp);
8872    parseElementClose(res);
8873    return res;
8874  }
8875
8876  protected Medication.MedicationPackageComponent parseMedicationMedicationPackageComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
8877    Medication.MedicationPackageComponent res = new Medication.MedicationPackageComponent();
8878    parseBackboneAttributes(xpp, res);
8879    next(xpp);
8880    int eventType = nextNoWhitespace(xpp);
8881    while (eventType != XmlPullParser.END_TAG) {
8882      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
8883        res.setContainer(parseCodeableConcept(xpp));
8884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
8885        res.getContent().add(parseMedicationMedicationPackageContentComponent(xpp, owner));
8886      } else if (!parseBackboneContent(eventType, xpp, res))
8887        unknownContent(xpp);
8888      eventType = nextNoWhitespace(xpp);
8889    }
8890    next(xpp);
8891    parseElementClose(res);
8892    return res;
8893  }
8894
8895  protected Medication.MedicationPackageContentComponent parseMedicationMedicationPackageContentComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
8896    Medication.MedicationPackageContentComponent res = new Medication.MedicationPackageContentComponent();
8897    parseBackboneAttributes(xpp, res);
8898    next(xpp);
8899    int eventType = nextNoWhitespace(xpp);
8900    while (eventType != XmlPullParser.END_TAG) {
8901      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
8902        res.setItem(parseType("item", xpp));
8903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
8904        res.setAmount(parseSimpleQuantity(xpp));
8905      } else if (!parseBackboneContent(eventType, xpp, res))
8906        unknownContent(xpp);
8907      eventType = nextNoWhitespace(xpp);
8908    }
8909    next(xpp);
8910    parseElementClose(res);
8911    return res;
8912  }
8913
8914  protected MedicationAdministration parseMedicationAdministration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8915    MedicationAdministration res = new MedicationAdministration();
8916    parseDomainResourceAttributes(xpp, res);
8917    next(xpp);
8918    int eventType = nextNoWhitespace(xpp);
8919    while (eventType != XmlPullParser.END_TAG) {
8920      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8921        res.getIdentifier().add(parseIdentifier(xpp));
8922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8923        res.setStatusElement(parseEnumeration(xpp, MedicationAdministration.MedicationAdministrationStatus.NULL, new MedicationAdministration.MedicationAdministrationStatusEnumFactory()));
8924      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
8925        res.setMedication(parseType("medication", xpp));
8926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8927        res.setPatient(parseReference(xpp));
8928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8929        res.setEncounter(parseReference(xpp));
8930      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effectiveTime")) {
8931        res.setEffectiveTime(parseType("effectiveTime", xpp));
8932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
8933        res.setPractitioner(parseReference(xpp));
8934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
8935        res.setPrescription(parseReference(xpp));
8936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasNotGiven")) {
8937        res.setWasNotGivenElement(parseBoolean(xpp));
8938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotGiven")) {
8939        res.getReasonNotGiven().add(parseCodeableConcept(xpp));
8940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonGiven")) {
8941        res.getReasonGiven().add(parseCodeableConcept(xpp));
8942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
8943        res.getDevice().add(parseReference(xpp));
8944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8945        res.getNote().add(parseAnnotation(xpp));
8946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
8947        res.setDosage(parseMedicationAdministrationMedicationAdministrationDosageComponent(xpp, res));
8948      } else if (!parseDomainResourceContent(eventType, xpp, res))
8949        unknownContent(xpp);
8950      eventType = nextNoWhitespace(xpp);
8951    }
8952    next(xpp);
8953    parseElementClose(res);
8954    return res;
8955  }
8956
8957  protected MedicationAdministration.MedicationAdministrationDosageComponent parseMedicationAdministrationMedicationAdministrationDosageComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
8958    MedicationAdministration.MedicationAdministrationDosageComponent res = new MedicationAdministration.MedicationAdministrationDosageComponent();
8959    parseBackboneAttributes(xpp, res);
8960    next(xpp);
8961    int eventType = nextNoWhitespace(xpp);
8962    while (eventType != XmlPullParser.END_TAG) {
8963      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8964        res.setTextElement(parseString(xpp));
8965      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "site")) {
8966        res.setSite(parseType("site", xpp));
8967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
8968        res.setRoute(parseCodeableConcept(xpp));
8969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
8970        res.setMethod(parseCodeableConcept(xpp));
8971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
8972        res.setQuantity(parseSimpleQuantity(xpp));
8973      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
8974        res.setRate(parseType("rate", xpp));
8975      } else if (!parseBackboneContent(eventType, xpp, res))
8976        unknownContent(xpp);
8977      eventType = nextNoWhitespace(xpp);
8978    }
8979    next(xpp);
8980    parseElementClose(res);
8981    return res;
8982  }
8983
8984  protected MedicationDispense parseMedicationDispense(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8985    MedicationDispense res = new MedicationDispense();
8986    parseDomainResourceAttributes(xpp, res);
8987    next(xpp);
8988    int eventType = nextNoWhitespace(xpp);
8989    while (eventType != XmlPullParser.END_TAG) {
8990      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8991        res.setIdentifier(parseIdentifier(xpp));
8992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8993        res.setStatusElement(parseEnumeration(xpp, MedicationDispense.MedicationDispenseStatus.NULL, new MedicationDispense.MedicationDispenseStatusEnumFactory()));
8994      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
8995        res.setMedication(parseType("medication", xpp));
8996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8997        res.setPatient(parseReference(xpp));
8998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenser")) {
8999        res.setDispenser(parseReference(xpp));
9000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizingPrescription")) {
9001        res.getAuthorizingPrescription().add(parseReference(xpp));
9002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9003        res.setType(parseCodeableConcept(xpp));
9004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9005        res.setQuantity(parseSimpleQuantity(xpp));
9006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysSupply")) {
9007        res.setDaysSupply(parseSimpleQuantity(xpp));
9008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
9009        res.setWhenPreparedElement(parseDateTime(xpp));
9010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
9011        res.setWhenHandedOverElement(parseDateTime(xpp));
9012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
9013        res.setDestination(parseReference(xpp));
9014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
9015        res.getReceiver().add(parseReference(xpp));
9016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9017        res.getNote().add(parseAnnotation(xpp));
9018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
9019        res.getDosageInstruction().add(parseMedicationDispenseMedicationDispenseDosageInstructionComponent(xpp, res));
9020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
9021        res.setSubstitution(parseMedicationDispenseMedicationDispenseSubstitutionComponent(xpp, res));
9022      } else if (!parseDomainResourceContent(eventType, xpp, res))
9023        unknownContent(xpp);
9024      eventType = nextNoWhitespace(xpp);
9025    }
9026    next(xpp);
9027    parseElementClose(res);
9028    return res;
9029  }
9030
9031  protected MedicationDispense.MedicationDispenseDosageInstructionComponent parseMedicationDispenseMedicationDispenseDosageInstructionComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
9032    MedicationDispense.MedicationDispenseDosageInstructionComponent res = new MedicationDispense.MedicationDispenseDosageInstructionComponent();
9033    parseBackboneAttributes(xpp, res);
9034    next(xpp);
9035    int eventType = nextNoWhitespace(xpp);
9036    while (eventType != XmlPullParser.END_TAG) {
9037      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
9038        res.setTextElement(parseString(xpp));
9039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstructions")) {
9040        res.setAdditionalInstructions(parseCodeableConcept(xpp));
9041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
9042        res.setTiming(parseTiming(xpp));
9043      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
9044        res.setAsNeeded(parseType("asNeeded", xpp));
9045      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "site")) {
9046        res.setSite(parseType("site", xpp));
9047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
9048        res.setRoute(parseCodeableConcept(xpp));
9049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
9050        res.setMethod(parseCodeableConcept(xpp));
9051      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
9052        res.setDose(parseType("dose", xpp));
9053      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
9054        res.setRate(parseType("rate", xpp));
9055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
9056        res.setMaxDosePerPeriod(parseRatio(xpp));
9057      } else if (!parseBackboneContent(eventType, xpp, res))
9058        unknownContent(xpp);
9059      eventType = nextNoWhitespace(xpp);
9060    }
9061    next(xpp);
9062    parseElementClose(res);
9063    return res;
9064  }
9065
9066  protected MedicationDispense.MedicationDispenseSubstitutionComponent parseMedicationDispenseMedicationDispenseSubstitutionComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
9067    MedicationDispense.MedicationDispenseSubstitutionComponent res = new MedicationDispense.MedicationDispenseSubstitutionComponent();
9068    parseBackboneAttributes(xpp, res);
9069    next(xpp);
9070    int eventType = nextNoWhitespace(xpp);
9071    while (eventType != XmlPullParser.END_TAG) {
9072      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9073        res.setType(parseCodeableConcept(xpp));
9074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9075        res.getReason().add(parseCodeableConcept(xpp));
9076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibleParty")) {
9077        res.getResponsibleParty().add(parseReference(xpp));
9078      } else if (!parseBackboneContent(eventType, xpp, res))
9079        unknownContent(xpp);
9080      eventType = nextNoWhitespace(xpp);
9081    }
9082    next(xpp);
9083    parseElementClose(res);
9084    return res;
9085  }
9086
9087  protected MedicationOrder parseMedicationOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9088    MedicationOrder res = new MedicationOrder();
9089    parseDomainResourceAttributes(xpp, res);
9090    next(xpp);
9091    int eventType = nextNoWhitespace(xpp);
9092    while (eventType != XmlPullParser.END_TAG) {
9093      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9094        res.getIdentifier().add(parseIdentifier(xpp));
9095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9096        res.setStatusElement(parseEnumeration(xpp, MedicationOrder.MedicationOrderStatus.NULL, new MedicationOrder.MedicationOrderStatusEnumFactory()));
9097      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
9098        res.setMedication(parseType("medication", xpp));
9099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9100        res.setPatient(parseReference(xpp));
9101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
9102        res.setEncounter(parseReference(xpp));
9103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
9104        res.setDateWrittenElement(parseDateTime(xpp));
9105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
9106        res.setPrescriber(parseReference(xpp));
9107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
9108        res.getReasonCode().add(parseCodeableConcept(xpp));
9109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
9110        res.getReasonReference().add(parseReference(xpp));
9111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateEnded")) {
9112        res.setDateEndedElement(parseDateTime(xpp));
9113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonEnded")) {
9114        res.setReasonEnded(parseCodeableConcept(xpp));
9115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9116        res.getNote().add(parseAnnotation(xpp));
9117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
9118        res.getDosageInstruction().add(parseMedicationOrderMedicationOrderDosageInstructionComponent(xpp, res));
9119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseRequest")) {
9120        res.setDispenseRequest(parseMedicationOrderMedicationOrderDispenseRequestComponent(xpp, res));
9121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
9122        res.setSubstitution(parseMedicationOrderMedicationOrderSubstitutionComponent(xpp, res));
9123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorPrescription")) {
9124        res.setPriorPrescription(parseReference(xpp));
9125      } else if (!parseDomainResourceContent(eventType, xpp, res))
9126        unknownContent(xpp);
9127      eventType = nextNoWhitespace(xpp);
9128    }
9129    next(xpp);
9130    parseElementClose(res);
9131    return res;
9132  }
9133
9134  protected MedicationOrder.MedicationOrderDosageInstructionComponent parseMedicationOrderMedicationOrderDosageInstructionComponent(XmlPullParser xpp, MedicationOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
9135    MedicationOrder.MedicationOrderDosageInstructionComponent res = new MedicationOrder.MedicationOrderDosageInstructionComponent();
9136    parseBackboneAttributes(xpp, res);
9137    next(xpp);
9138    int eventType = nextNoWhitespace(xpp);
9139    while (eventType != XmlPullParser.END_TAG) {
9140      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
9141        res.setTextElement(parseString(xpp));
9142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstructions")) {
9143        res.setAdditionalInstructions(parseCodeableConcept(xpp));
9144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
9145        res.setTiming(parseTiming(xpp));
9146      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
9147        res.setAsNeeded(parseType("asNeeded", xpp));
9148      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "site")) {
9149        res.setSite(parseType("site", xpp));
9150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
9151        res.setRoute(parseCodeableConcept(xpp));
9152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
9153        res.setMethod(parseCodeableConcept(xpp));
9154      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
9155        res.setDose(parseType("dose", xpp));
9156      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
9157        res.setRate(parseType("rate", xpp));
9158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
9159        res.setMaxDosePerPeriod(parseRatio(xpp));
9160      } else if (!parseBackboneContent(eventType, xpp, res))
9161        unknownContent(xpp);
9162      eventType = nextNoWhitespace(xpp);
9163    }
9164    next(xpp);
9165    parseElementClose(res);
9166    return res;
9167  }
9168
9169  protected MedicationOrder.MedicationOrderDispenseRequestComponent parseMedicationOrderMedicationOrderDispenseRequestComponent(XmlPullParser xpp, MedicationOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
9170    MedicationOrder.MedicationOrderDispenseRequestComponent res = new MedicationOrder.MedicationOrderDispenseRequestComponent();
9171    parseBackboneAttributes(xpp, res);
9172    next(xpp);
9173    int eventType = nextNoWhitespace(xpp);
9174    while (eventType != XmlPullParser.END_TAG) {
9175      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
9176        res.setMedication(parseType("medication", xpp));
9177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
9178        res.setValidityPeriod(parsePeriod(xpp));
9179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfRepeatsAllowed")) {
9180        res.setNumberOfRepeatsAllowedElement(parsePositiveInt(xpp));
9181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9182        res.setQuantity(parseSimpleQuantity(xpp));
9183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expectedSupplyDuration")) {
9184        res.setExpectedSupplyDuration(parseDuration(xpp));
9185      } else if (!parseBackboneContent(eventType, xpp, res))
9186        unknownContent(xpp);
9187      eventType = nextNoWhitespace(xpp);
9188    }
9189    next(xpp);
9190    parseElementClose(res);
9191    return res;
9192  }
9193
9194  protected MedicationOrder.MedicationOrderSubstitutionComponent parseMedicationOrderMedicationOrderSubstitutionComponent(XmlPullParser xpp, MedicationOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
9195    MedicationOrder.MedicationOrderSubstitutionComponent res = new MedicationOrder.MedicationOrderSubstitutionComponent();
9196    parseBackboneAttributes(xpp, res);
9197    next(xpp);
9198    int eventType = nextNoWhitespace(xpp);
9199    while (eventType != XmlPullParser.END_TAG) {
9200      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9201        res.setType(parseCodeableConcept(xpp));
9202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9203        res.setReason(parseCodeableConcept(xpp));
9204      } else if (!parseBackboneContent(eventType, xpp, res))
9205        unknownContent(xpp);
9206      eventType = nextNoWhitespace(xpp);
9207    }
9208    next(xpp);
9209    parseElementClose(res);
9210    return res;
9211  }
9212
9213  protected MedicationStatement parseMedicationStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9214    MedicationStatement res = new MedicationStatement();
9215    parseDomainResourceAttributes(xpp, res);
9216    next(xpp);
9217    int eventType = nextNoWhitespace(xpp);
9218    while (eventType != XmlPullParser.END_TAG) {
9219      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9220        res.getIdentifier().add(parseIdentifier(xpp));
9221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9222        res.setStatusElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementStatus.NULL, new MedicationStatement.MedicationStatementStatusEnumFactory()));
9223      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
9224        res.setMedication(parseType("medication", xpp));
9225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9226        res.setPatient(parseReference(xpp));
9227      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
9228        res.setEffective(parseType("effective", xpp));
9229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
9230        res.setInformationSource(parseReference(xpp));
9231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
9232        res.getSupportingInformation().add(parseReference(xpp));
9233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAsserted")) {
9234        res.setDateAssertedElement(parseDateTime(xpp));
9235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasNotTaken")) {
9236        res.setWasNotTakenElement(parseBoolean(xpp));
9237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotTaken")) {
9238        res.getReasonNotTaken().add(parseCodeableConcept(xpp));
9239      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reasonForUse")) {
9240        res.setReasonForUse(parseType("reasonForUse", xpp));
9241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9242        res.getNote().add(parseAnnotation(xpp));
9243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
9244        res.getDosage().add(parseMedicationStatementMedicationStatementDosageComponent(xpp, res));
9245      } else if (!parseDomainResourceContent(eventType, xpp, res))
9246        unknownContent(xpp);
9247      eventType = nextNoWhitespace(xpp);
9248    }
9249    next(xpp);
9250    parseElementClose(res);
9251    return res;
9252  }
9253
9254  protected MedicationStatement.MedicationStatementDosageComponent parseMedicationStatementMedicationStatementDosageComponent(XmlPullParser xpp, MedicationStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
9255    MedicationStatement.MedicationStatementDosageComponent res = new MedicationStatement.MedicationStatementDosageComponent();
9256    parseBackboneAttributes(xpp, res);
9257    next(xpp);
9258    int eventType = nextNoWhitespace(xpp);
9259    while (eventType != XmlPullParser.END_TAG) {
9260      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
9261        res.setTextElement(parseString(xpp));
9262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
9263        res.setTiming(parseTiming(xpp));
9264      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
9265        res.setAsNeeded(parseType("asNeeded", xpp));
9266      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "site")) {
9267        res.setSite(parseType("site", xpp));
9268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
9269        res.setRoute(parseCodeableConcept(xpp));
9270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
9271        res.setMethod(parseCodeableConcept(xpp));
9272      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "quantity")) {
9273        res.setQuantity(parseType("quantity", xpp));
9274      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
9275        res.setRate(parseType("rate", xpp));
9276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
9277        res.setMaxDosePerPeriod(parseRatio(xpp));
9278      } else if (!parseBackboneContent(eventType, xpp, res))
9279        unknownContent(xpp);
9280      eventType = nextNoWhitespace(xpp);
9281    }
9282    next(xpp);
9283    parseElementClose(res);
9284    return res;
9285  }
9286
9287  protected MessageHeader parseMessageHeader(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9288    MessageHeader res = new MessageHeader();
9289    parseDomainResourceAttributes(xpp, res);
9290    next(xpp);
9291    int eventType = nextNoWhitespace(xpp);
9292    while (eventType != XmlPullParser.END_TAG) {
9293      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
9294        res.setTimestampElement(parseInstant(xpp));
9295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
9296        res.setEvent(parseCoding(xpp));
9297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
9298        res.setResponse(parseMessageHeaderMessageHeaderResponseComponent(xpp, res));
9299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
9300        res.setSource(parseMessageHeaderMessageSourceComponent(xpp, res));
9301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
9302        res.getDestination().add(parseMessageHeaderMessageDestinationComponent(xpp, res));
9303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
9304        res.setEnterer(parseReference(xpp));
9305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9306        res.setAuthor(parseReference(xpp));
9307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
9308        res.setReceiver(parseReference(xpp));
9309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
9310        res.setResponsible(parseReference(xpp));
9311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9312        res.setReason(parseCodeableConcept(xpp));
9313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
9314        res.getData().add(parseReference(xpp));
9315      } else if (!parseDomainResourceContent(eventType, xpp, res))
9316        unknownContent(xpp);
9317      eventType = nextNoWhitespace(xpp);
9318    }
9319    next(xpp);
9320    parseElementClose(res);
9321    return res;
9322  }
9323
9324  protected MessageHeader.MessageHeaderResponseComponent parseMessageHeaderMessageHeaderResponseComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
9325    MessageHeader.MessageHeaderResponseComponent res = new MessageHeader.MessageHeaderResponseComponent();
9326    parseBackboneAttributes(xpp, res);
9327    next(xpp);
9328    int eventType = nextNoWhitespace(xpp);
9329    while (eventType != XmlPullParser.END_TAG) {
9330      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9331        res.setIdentifierElement(parseId(xpp));
9332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9333        res.setCodeElement(parseEnumeration(xpp, MessageHeader.ResponseType.NULL, new MessageHeader.ResponseTypeEnumFactory()));
9334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
9335        res.setDetails(parseReference(xpp));
9336      } else if (!parseBackboneContent(eventType, xpp, res))
9337        unknownContent(xpp);
9338      eventType = nextNoWhitespace(xpp);
9339    }
9340    next(xpp);
9341    parseElementClose(res);
9342    return res;
9343  }
9344
9345  protected MessageHeader.MessageSourceComponent parseMessageHeaderMessageSourceComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
9346    MessageHeader.MessageSourceComponent res = new MessageHeader.MessageSourceComponent();
9347    parseBackboneAttributes(xpp, res);
9348    next(xpp);
9349    int eventType = nextNoWhitespace(xpp);
9350    while (eventType != XmlPullParser.END_TAG) {
9351      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9352        res.setNameElement(parseString(xpp));
9353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
9354        res.setSoftwareElement(parseString(xpp));
9355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9356        res.setVersionElement(parseString(xpp));
9357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9358        res.setContact(parseContactPoint(xpp));
9359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9360        res.setEndpointElement(parseUri(xpp));
9361      } else if (!parseBackboneContent(eventType, xpp, res))
9362        unknownContent(xpp);
9363      eventType = nextNoWhitespace(xpp);
9364    }
9365    next(xpp);
9366    parseElementClose(res);
9367    return res;
9368  }
9369
9370  protected MessageHeader.MessageDestinationComponent parseMessageHeaderMessageDestinationComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
9371    MessageHeader.MessageDestinationComponent res = new MessageHeader.MessageDestinationComponent();
9372    parseBackboneAttributes(xpp, res);
9373    next(xpp);
9374    int eventType = nextNoWhitespace(xpp);
9375    while (eventType != XmlPullParser.END_TAG) {
9376      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9377        res.setNameElement(parseString(xpp));
9378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
9379        res.setTarget(parseReference(xpp));
9380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9381        res.setEndpointElement(parseUri(xpp));
9382      } else if (!parseBackboneContent(eventType, xpp, res))
9383        unknownContent(xpp);
9384      eventType = nextNoWhitespace(xpp);
9385    }
9386    next(xpp);
9387    parseElementClose(res);
9388    return res;
9389  }
9390
9391  protected ModuleDefinition parseModuleDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9392    ModuleDefinition res = new ModuleDefinition();
9393    parseDomainResourceAttributes(xpp, res);
9394    next(xpp);
9395    int eventType = nextNoWhitespace(xpp);
9396    while (eventType != XmlPullParser.END_TAG) {
9397      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9398        res.getIdentifier().add(parseIdentifier(xpp));
9399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9400        res.setVersionElement(parseString(xpp));
9401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("model")) {
9402        res.getModel().add(parseModuleDefinitionModuleDefinitionModelComponent(xpp, res));
9403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
9404        res.getLibrary().add(parseModuleDefinitionModuleDefinitionLibraryComponent(xpp, res));
9405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
9406        res.getCodeSystem().add(parseModuleDefinitionModuleDefinitionCodeSystemComponent(xpp, res));
9407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
9408        res.getValueSet().add(parseModuleDefinitionModuleDefinitionValueSetComponent(xpp, res));
9409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
9410        res.getParameter().add(parseModuleDefinitionModuleDefinitionParameterComponent(xpp, res));
9411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
9412        res.getData().add(parseModuleDefinitionModuleDefinitionDataComponent(xpp, res));
9413      } else if (!parseDomainResourceContent(eventType, xpp, res))
9414        unknownContent(xpp);
9415      eventType = nextNoWhitespace(xpp);
9416    }
9417    next(xpp);
9418    parseElementClose(res);
9419    return res;
9420  }
9421
9422  protected ModuleDefinition.ModuleDefinitionModelComponent parseModuleDefinitionModuleDefinitionModelComponent(XmlPullParser xpp, ModuleDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9423    ModuleDefinition.ModuleDefinitionModelComponent res = new ModuleDefinition.ModuleDefinitionModelComponent();
9424    parseBackboneAttributes(xpp, res);
9425    next(xpp);
9426    int eventType = nextNoWhitespace(xpp);
9427    while (eventType != XmlPullParser.END_TAG) {
9428      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9429        res.setNameElement(parseString(xpp));
9430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9431        res.setIdentifierElement(parseString(xpp));
9432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9433        res.setVersionElement(parseString(xpp));
9434      } else if (!parseBackboneContent(eventType, xpp, res))
9435        unknownContent(xpp);
9436      eventType = nextNoWhitespace(xpp);
9437    }
9438    next(xpp);
9439    parseElementClose(res);
9440    return res;
9441  }
9442
9443  protected ModuleDefinition.ModuleDefinitionLibraryComponent parseModuleDefinitionModuleDefinitionLibraryComponent(XmlPullParser xpp, ModuleDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9444    ModuleDefinition.ModuleDefinitionLibraryComponent res = new ModuleDefinition.ModuleDefinitionLibraryComponent();
9445    parseBackboneAttributes(xpp, res);
9446    next(xpp);
9447    int eventType = nextNoWhitespace(xpp);
9448    while (eventType != XmlPullParser.END_TAG) {
9449      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9450        res.setNameElement(parseString(xpp));
9451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9452        res.setIdentifierElement(parseString(xpp));
9453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9454        res.setVersionElement(parseString(xpp));
9455      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "document")) {
9456        res.setDocument(parseType("document", xpp));
9457      } else if (!parseBackboneContent(eventType, xpp, res))
9458        unknownContent(xpp);
9459      eventType = nextNoWhitespace(xpp);
9460    }
9461    next(xpp);
9462    parseElementClose(res);
9463    return res;
9464  }
9465
9466  protected ModuleDefinition.ModuleDefinitionCodeSystemComponent parseModuleDefinitionModuleDefinitionCodeSystemComponent(XmlPullParser xpp, ModuleDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9467    ModuleDefinition.ModuleDefinitionCodeSystemComponent res = new ModuleDefinition.ModuleDefinitionCodeSystemComponent();
9468    parseBackboneAttributes(xpp, res);
9469    next(xpp);
9470    int eventType = nextNoWhitespace(xpp);
9471    while (eventType != XmlPullParser.END_TAG) {
9472      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9473        res.setNameElement(parseString(xpp));
9474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9475        res.setIdentifierElement(parseString(xpp));
9476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9477        res.setVersionElement(parseString(xpp));
9478      } else if (!parseBackboneContent(eventType, xpp, res))
9479        unknownContent(xpp);
9480      eventType = nextNoWhitespace(xpp);
9481    }
9482    next(xpp);
9483    parseElementClose(res);
9484    return res;
9485  }
9486
9487  protected ModuleDefinition.ModuleDefinitionValueSetComponent parseModuleDefinitionModuleDefinitionValueSetComponent(XmlPullParser xpp, ModuleDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9488    ModuleDefinition.ModuleDefinitionValueSetComponent res = new ModuleDefinition.ModuleDefinitionValueSetComponent();
9489    parseBackboneAttributes(xpp, res);
9490    next(xpp);
9491    int eventType = nextNoWhitespace(xpp);
9492    while (eventType != XmlPullParser.END_TAG) {
9493      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9494        res.setNameElement(parseString(xpp));
9495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9496        res.setIdentifierElement(parseString(xpp));
9497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9498        res.setVersionElement(parseString(xpp));
9499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
9500        res.getCodeSystem().add(parseString(xpp));
9501      } else if (!parseBackboneContent(eventType, xpp, res))
9502        unknownContent(xpp);
9503      eventType = nextNoWhitespace(xpp);
9504    }
9505    next(xpp);
9506    parseElementClose(res);
9507    return res;
9508  }
9509
9510  protected ModuleDefinition.ModuleDefinitionParameterComponent parseModuleDefinitionModuleDefinitionParameterComponent(XmlPullParser xpp, ModuleDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9511    ModuleDefinition.ModuleDefinitionParameterComponent res = new ModuleDefinition.ModuleDefinitionParameterComponent();
9512    parseBackboneAttributes(xpp, res);
9513    next(xpp);
9514    int eventType = nextNoWhitespace(xpp);
9515    while (eventType != XmlPullParser.END_TAG) {
9516      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9517        res.setNameElement(parseCode(xpp));
9518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
9519        res.setUseElement(parseCode(xpp));
9520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
9521        res.setDocumentationElement(parseString(xpp));
9522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9523        res.setTypeElement(parseCode(xpp));
9524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
9525        res.setProfile(parseReference(xpp));
9526      } else if (!parseBackboneContent(eventType, xpp, res))
9527        unknownContent(xpp);
9528      eventType = nextNoWhitespace(xpp);
9529    }
9530    next(xpp);
9531    parseElementClose(res);
9532    return res;
9533  }
9534
9535  protected ModuleDefinition.ModuleDefinitionDataComponent parseModuleDefinitionModuleDefinitionDataComponent(XmlPullParser xpp, ModuleDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9536    ModuleDefinition.ModuleDefinitionDataComponent res = new ModuleDefinition.ModuleDefinitionDataComponent();
9537    parseBackboneAttributes(xpp, res);
9538    next(xpp);
9539    int eventType = nextNoWhitespace(xpp);
9540    while (eventType != XmlPullParser.END_TAG) {
9541      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9542        res.setTypeElement(parseCode(xpp));
9543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
9544        res.setProfile(parseReference(xpp));
9545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
9546        res.getMustSupport().add(parseString(xpp));
9547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeFilter")) {
9548        res.getCodeFilter().add(parseModuleDefinitionModuleDefinitionDataCodeFilterComponent(xpp, owner));
9549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateFilter")) {
9550        res.getDateFilter().add(parseModuleDefinitionModuleDefinitionDataDateFilterComponent(xpp, owner));
9551      } else if (!parseBackboneContent(eventType, xpp, res))
9552        unknownContent(xpp);
9553      eventType = nextNoWhitespace(xpp);
9554    }
9555    next(xpp);
9556    parseElementClose(res);
9557    return res;
9558  }
9559
9560  protected ModuleDefinition.ModuleDefinitionDataCodeFilterComponent parseModuleDefinitionModuleDefinitionDataCodeFilterComponent(XmlPullParser xpp, ModuleDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9561    ModuleDefinition.ModuleDefinitionDataCodeFilterComponent res = new ModuleDefinition.ModuleDefinitionDataCodeFilterComponent();
9562    parseBackboneAttributes(xpp, res);
9563    next(xpp);
9564    int eventType = nextNoWhitespace(xpp);
9565    while (eventType != XmlPullParser.END_TAG) {
9566      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
9567        res.setPathElement(parseString(xpp));
9568      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
9569        res.setValueSet(parseType("valueSet", xpp));
9570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeableConcept")) {
9571        res.getCodeableConcept().add(parseCodeableConcept(xpp));
9572      } else if (!parseBackboneContent(eventType, xpp, res))
9573        unknownContent(xpp);
9574      eventType = nextNoWhitespace(xpp);
9575    }
9576    next(xpp);
9577    parseElementClose(res);
9578    return res;
9579  }
9580
9581  protected ModuleDefinition.ModuleDefinitionDataDateFilterComponent parseModuleDefinitionModuleDefinitionDataDateFilterComponent(XmlPullParser xpp, ModuleDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9582    ModuleDefinition.ModuleDefinitionDataDateFilterComponent res = new ModuleDefinition.ModuleDefinitionDataDateFilterComponent();
9583    parseBackboneAttributes(xpp, res);
9584    next(xpp);
9585    int eventType = nextNoWhitespace(xpp);
9586    while (eventType != XmlPullParser.END_TAG) {
9587      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
9588        res.setPathElement(parseString(xpp));
9589      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
9590        res.setValue(parseType("value", xpp));
9591      } else if (!parseBackboneContent(eventType, xpp, res))
9592        unknownContent(xpp);
9593      eventType = nextNoWhitespace(xpp);
9594    }
9595    next(xpp);
9596    parseElementClose(res);
9597    return res;
9598  }
9599
9600  protected NamingSystem parseNamingSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9601    NamingSystem res = new NamingSystem();
9602    parseDomainResourceAttributes(xpp, res);
9603    next(xpp);
9604    int eventType = nextNoWhitespace(xpp);
9605    while (eventType != XmlPullParser.END_TAG) {
9606      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9607        res.setNameElement(parseString(xpp));
9608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9609        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
9610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
9611        res.setKindElement(parseEnumeration(xpp, NamingSystem.NamingSystemType.NULL, new NamingSystem.NamingSystemTypeEnumFactory()));
9612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9613        res.setDateElement(parseDateTime(xpp));
9614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9615        res.setPublisherElement(parseString(xpp));
9616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9617        res.getContact().add(parseNamingSystemNamingSystemContactComponent(xpp, res));
9618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
9619        res.setResponsibleElement(parseString(xpp));
9620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9621        res.setType(parseCodeableConcept(xpp));
9622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9623        res.setDescriptionElement(parseString(xpp));
9624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9625        res.getUseContext().add(parseCodeableConcept(xpp));
9626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
9627        res.setUsageElement(parseString(xpp));
9628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uniqueId")) {
9629        res.getUniqueId().add(parseNamingSystemNamingSystemUniqueIdComponent(xpp, res));
9630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replacedBy")) {
9631        res.setReplacedBy(parseReference(xpp));
9632      } else if (!parseDomainResourceContent(eventType, xpp, res))
9633        unknownContent(xpp);
9634      eventType = nextNoWhitespace(xpp);
9635    }
9636    next(xpp);
9637    parseElementClose(res);
9638    return res;
9639  }
9640
9641  protected NamingSystem.NamingSystemContactComponent parseNamingSystemNamingSystemContactComponent(XmlPullParser xpp, NamingSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
9642    NamingSystem.NamingSystemContactComponent res = new NamingSystem.NamingSystemContactComponent();
9643    parseBackboneAttributes(xpp, res);
9644    next(xpp);
9645    int eventType = nextNoWhitespace(xpp);
9646    while (eventType != XmlPullParser.END_TAG) {
9647      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9648        res.setNameElement(parseString(xpp));
9649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
9650        res.getTelecom().add(parseContactPoint(xpp));
9651      } else if (!parseBackboneContent(eventType, xpp, res))
9652        unknownContent(xpp);
9653      eventType = nextNoWhitespace(xpp);
9654    }
9655    next(xpp);
9656    parseElementClose(res);
9657    return res;
9658  }
9659
9660  protected NamingSystem.NamingSystemUniqueIdComponent parseNamingSystemNamingSystemUniqueIdComponent(XmlPullParser xpp, NamingSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
9661    NamingSystem.NamingSystemUniqueIdComponent res = new NamingSystem.NamingSystemUniqueIdComponent();
9662    parseBackboneAttributes(xpp, res);
9663    next(xpp);
9664    int eventType = nextNoWhitespace(xpp);
9665    while (eventType != XmlPullParser.END_TAG) {
9666      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9667        res.setTypeElement(parseEnumeration(xpp, NamingSystem.NamingSystemIdentifierType.NULL, new NamingSystem.NamingSystemIdentifierTypeEnumFactory()));
9668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
9669        res.setValueElement(parseString(xpp));
9670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
9671        res.setPreferredElement(parseBoolean(xpp));
9672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9673        res.setPeriod(parsePeriod(xpp));
9674      } else if (!parseBackboneContent(eventType, xpp, res))
9675        unknownContent(xpp);
9676      eventType = nextNoWhitespace(xpp);
9677    }
9678    next(xpp);
9679    parseElementClose(res);
9680    return res;
9681  }
9682
9683  protected NutritionOrder parseNutritionOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9684    NutritionOrder res = new NutritionOrder();
9685    parseDomainResourceAttributes(xpp, res);
9686    next(xpp);
9687    int eventType = nextNoWhitespace(xpp);
9688    while (eventType != XmlPullParser.END_TAG) {
9689      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9690        res.getIdentifier().add(parseIdentifier(xpp));
9691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9692        res.setStatusElement(parseEnumeration(xpp, NutritionOrder.NutritionOrderStatus.NULL, new NutritionOrder.NutritionOrderStatusEnumFactory()));
9693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9694        res.setPatient(parseReference(xpp));
9695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
9696        res.setEncounter(parseReference(xpp));
9697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
9698        res.setDateTimeElement(parseDateTime(xpp));
9699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
9700        res.setOrderer(parseReference(xpp));
9701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergyIntolerance")) {
9702        res.getAllergyIntolerance().add(parseReference(xpp));
9703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodPreferenceModifier")) {
9704        res.getFoodPreferenceModifier().add(parseCodeableConcept(xpp));
9705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeFoodModifier")) {
9706        res.getExcludeFoodModifier().add(parseCodeableConcept(xpp));
9707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oralDiet")) {
9708        res.setOralDiet(parseNutritionOrderNutritionOrderOralDietComponent(xpp, res));
9709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplement")) {
9710        res.getSupplement().add(parseNutritionOrderNutritionOrderSupplementComponent(xpp, res));
9711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteralFormula")) {
9712        res.setEnteralFormula(parseNutritionOrderNutritionOrderEnteralFormulaComponent(xpp, res));
9713      } else if (!parseDomainResourceContent(eventType, xpp, res))
9714        unknownContent(xpp);
9715      eventType = nextNoWhitespace(xpp);
9716    }
9717    next(xpp);
9718    parseElementClose(res);
9719    return res;
9720  }
9721
9722  protected NutritionOrder.NutritionOrderOralDietComponent parseNutritionOrderNutritionOrderOralDietComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
9723    NutritionOrder.NutritionOrderOralDietComponent res = new NutritionOrder.NutritionOrderOralDietComponent();
9724    parseBackboneAttributes(xpp, res);
9725    next(xpp);
9726    int eventType = nextNoWhitespace(xpp);
9727    while (eventType != XmlPullParser.END_TAG) {
9728      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9729        res.getType().add(parseCodeableConcept(xpp));
9730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
9731        res.getSchedule().add(parseTiming(xpp));
9732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
9733        res.getNutrient().add(parseNutritionOrderNutritionOrderOralDietNutrientComponent(xpp, owner));
9734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("texture")) {
9735        res.getTexture().add(parseNutritionOrderNutritionOrderOralDietTextureComponent(xpp, owner));
9736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fluidConsistencyType")) {
9737        res.getFluidConsistencyType().add(parseCodeableConcept(xpp));
9738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
9739        res.setInstructionElement(parseString(xpp));
9740      } else if (!parseBackboneContent(eventType, xpp, res))
9741        unknownContent(xpp);
9742      eventType = nextNoWhitespace(xpp);
9743    }
9744    next(xpp);
9745    parseElementClose(res);
9746    return res;
9747  }
9748
9749  protected NutritionOrder.NutritionOrderOralDietNutrientComponent parseNutritionOrderNutritionOrderOralDietNutrientComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
9750    NutritionOrder.NutritionOrderOralDietNutrientComponent res = new NutritionOrder.NutritionOrderOralDietNutrientComponent();
9751    parseBackboneAttributes(xpp, res);
9752    next(xpp);
9753    int eventType = nextNoWhitespace(xpp);
9754    while (eventType != XmlPullParser.END_TAG) {
9755      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
9756        res.setModifier(parseCodeableConcept(xpp));
9757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
9758        res.setAmount(parseSimpleQuantity(xpp));
9759      } else if (!parseBackboneContent(eventType, xpp, res))
9760        unknownContent(xpp);
9761      eventType = nextNoWhitespace(xpp);
9762    }
9763    next(xpp);
9764    parseElementClose(res);
9765    return res;
9766  }
9767
9768  protected NutritionOrder.NutritionOrderOralDietTextureComponent parseNutritionOrderNutritionOrderOralDietTextureComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
9769    NutritionOrder.NutritionOrderOralDietTextureComponent res = new NutritionOrder.NutritionOrderOralDietTextureComponent();
9770    parseBackboneAttributes(xpp, res);
9771    next(xpp);
9772    int eventType = nextNoWhitespace(xpp);
9773    while (eventType != XmlPullParser.END_TAG) {
9774      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
9775        res.setModifier(parseCodeableConcept(xpp));
9776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodType")) {
9777        res.setFoodType(parseCodeableConcept(xpp));
9778      } else if (!parseBackboneContent(eventType, xpp, res))
9779        unknownContent(xpp);
9780      eventType = nextNoWhitespace(xpp);
9781    }
9782    next(xpp);
9783    parseElementClose(res);
9784    return res;
9785  }
9786
9787  protected NutritionOrder.NutritionOrderSupplementComponent parseNutritionOrderNutritionOrderSupplementComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
9788    NutritionOrder.NutritionOrderSupplementComponent res = new NutritionOrder.NutritionOrderSupplementComponent();
9789    parseBackboneAttributes(xpp, res);
9790    next(xpp);
9791    int eventType = nextNoWhitespace(xpp);
9792    while (eventType != XmlPullParser.END_TAG) {
9793      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9794        res.setType(parseCodeableConcept(xpp));
9795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
9796        res.setProductNameElement(parseString(xpp));
9797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
9798        res.getSchedule().add(parseTiming(xpp));
9799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9800        res.setQuantity(parseSimpleQuantity(xpp));
9801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
9802        res.setInstructionElement(parseString(xpp));
9803      } else if (!parseBackboneContent(eventType, xpp, res))
9804        unknownContent(xpp);
9805      eventType = nextNoWhitespace(xpp);
9806    }
9807    next(xpp);
9808    parseElementClose(res);
9809    return res;
9810  }
9811
9812  protected NutritionOrder.NutritionOrderEnteralFormulaComponent parseNutritionOrderNutritionOrderEnteralFormulaComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
9813    NutritionOrder.NutritionOrderEnteralFormulaComponent res = new NutritionOrder.NutritionOrderEnteralFormulaComponent();
9814    parseBackboneAttributes(xpp, res);
9815    next(xpp);
9816    int eventType = nextNoWhitespace(xpp);
9817    while (eventType != XmlPullParser.END_TAG) {
9818      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaType")) {
9819        res.setBaseFormulaType(parseCodeableConcept(xpp));
9820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaProductName")) {
9821        res.setBaseFormulaProductNameElement(parseString(xpp));
9822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveType")) {
9823        res.setAdditiveType(parseCodeableConcept(xpp));
9824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveProductName")) {
9825        res.setAdditiveProductNameElement(parseString(xpp));
9826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caloricDensity")) {
9827        res.setCaloricDensity(parseSimpleQuantity(xpp));
9828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeofAdministration")) {
9829        res.setRouteofAdministration(parseCodeableConcept(xpp));
9830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administration")) {
9831        res.getAdministration().add(parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(xpp, owner));
9832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxVolumeToDeliver")) {
9833        res.setMaxVolumeToDeliver(parseSimpleQuantity(xpp));
9834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationInstruction")) {
9835        res.setAdministrationInstructionElement(parseString(xpp));
9836      } else if (!parseBackboneContent(eventType, xpp, res))
9837        unknownContent(xpp);
9838      eventType = nextNoWhitespace(xpp);
9839    }
9840    next(xpp);
9841    parseElementClose(res);
9842    return res;
9843  }
9844
9845  protected NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
9846    NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res = new NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent();
9847    parseBackboneAttributes(xpp, res);
9848    next(xpp);
9849    int eventType = nextNoWhitespace(xpp);
9850    while (eventType != XmlPullParser.END_TAG) {
9851      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
9852        res.setSchedule(parseTiming(xpp));
9853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9854        res.setQuantity(parseSimpleQuantity(xpp));
9855      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
9856        res.setRate(parseType("rate", xpp));
9857      } else if (!parseBackboneContent(eventType, xpp, res))
9858        unknownContent(xpp);
9859      eventType = nextNoWhitespace(xpp);
9860    }
9861    next(xpp);
9862    parseElementClose(res);
9863    return res;
9864  }
9865
9866  protected Observation parseObservation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9867    Observation res = new Observation();
9868    parseDomainResourceAttributes(xpp, res);
9869    next(xpp);
9870    int eventType = nextNoWhitespace(xpp);
9871    while (eventType != XmlPullParser.END_TAG) {
9872      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9873        res.getIdentifier().add(parseIdentifier(xpp));
9874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9875        res.setStatusElement(parseEnumeration(xpp, Observation.ObservationStatus.NULL, new Observation.ObservationStatusEnumFactory()));
9876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9877        res.setCategory(parseCodeableConcept(xpp));
9878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9879        res.setCode(parseCodeableConcept(xpp));
9880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
9881        res.setSubject(parseReference(xpp));
9882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
9883        res.setEncounter(parseReference(xpp));
9884      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
9885        res.setEffective(parseType("effective", xpp));
9886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
9887        res.setIssuedElement(parseInstant(xpp));
9888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
9889        res.getPerformer().add(parseReference(xpp));
9890      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
9891        res.setValue(parseType("value", xpp));
9892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
9893        res.setDataAbsentReason(parseCodeableConcept(xpp));
9894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
9895        res.setInterpretation(parseCodeableConcept(xpp));
9896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
9897        res.setCommentElement(parseString(xpp));
9898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
9899        res.setBodySite(parseCodeableConcept(xpp));
9900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
9901        res.setMethod(parseCodeableConcept(xpp));
9902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
9903        res.setSpecimen(parseReference(xpp));
9904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
9905        res.setDevice(parseReference(xpp));
9906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
9907        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, res));
9908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
9909        res.getRelated().add(parseObservationObservationRelatedComponent(xpp, res));
9910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
9911        res.getComponent().add(parseObservationObservationComponentComponent(xpp, res));
9912      } else if (!parseDomainResourceContent(eventType, xpp, res))
9913        unknownContent(xpp);
9914      eventType = nextNoWhitespace(xpp);
9915    }
9916    next(xpp);
9917    parseElementClose(res);
9918    return res;
9919  }
9920
9921  protected Observation.ObservationReferenceRangeComponent parseObservationObservationReferenceRangeComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
9922    Observation.ObservationReferenceRangeComponent res = new Observation.ObservationReferenceRangeComponent();
9923    parseBackboneAttributes(xpp, res);
9924    next(xpp);
9925    int eventType = nextNoWhitespace(xpp);
9926    while (eventType != XmlPullParser.END_TAG) {
9927      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
9928        res.setLow(parseSimpleQuantity(xpp));
9929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
9930        res.setHigh(parseSimpleQuantity(xpp));
9931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
9932        res.setMeaning(parseCodeableConcept(xpp));
9933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
9934        res.setAge(parseRange(xpp));
9935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
9936        res.setTextElement(parseString(xpp));
9937      } else if (!parseBackboneContent(eventType, xpp, res))
9938        unknownContent(xpp);
9939      eventType = nextNoWhitespace(xpp);
9940    }
9941    next(xpp);
9942    parseElementClose(res);
9943    return res;
9944  }
9945
9946  protected Observation.ObservationRelatedComponent parseObservationObservationRelatedComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
9947    Observation.ObservationRelatedComponent res = new Observation.ObservationRelatedComponent();
9948    parseBackboneAttributes(xpp, res);
9949    next(xpp);
9950    int eventType = nextNoWhitespace(xpp);
9951    while (eventType != XmlPullParser.END_TAG) {
9952      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9953        res.setTypeElement(parseEnumeration(xpp, Observation.ObservationRelationshipType.NULL, new Observation.ObservationRelationshipTypeEnumFactory()));
9954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
9955        res.setTarget(parseReference(xpp));
9956      } else if (!parseBackboneContent(eventType, xpp, res))
9957        unknownContent(xpp);
9958      eventType = nextNoWhitespace(xpp);
9959    }
9960    next(xpp);
9961    parseElementClose(res);
9962    return res;
9963  }
9964
9965  protected Observation.ObservationComponentComponent parseObservationObservationComponentComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
9966    Observation.ObservationComponentComponent res = new Observation.ObservationComponentComponent();
9967    parseBackboneAttributes(xpp, res);
9968    next(xpp);
9969    int eventType = nextNoWhitespace(xpp);
9970    while (eventType != XmlPullParser.END_TAG) {
9971      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9972        res.setCode(parseCodeableConcept(xpp));
9973      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
9974        res.setValue(parseType("value", xpp));
9975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
9976        res.setDataAbsentReason(parseCodeableConcept(xpp));
9977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
9978        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, owner));
9979      } else if (!parseBackboneContent(eventType, xpp, res))
9980        unknownContent(xpp);
9981      eventType = nextNoWhitespace(xpp);
9982    }
9983    next(xpp);
9984    parseElementClose(res);
9985    return res;
9986  }
9987
9988  protected OperationDefinition parseOperationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9989    OperationDefinition res = new OperationDefinition();
9990    parseDomainResourceAttributes(xpp, res);
9991    next(xpp);
9992    int eventType = nextNoWhitespace(xpp);
9993    while (eventType != XmlPullParser.END_TAG) {
9994      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9995        res.setUrlElement(parseUri(xpp));
9996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9997        res.setVersionElement(parseString(xpp));
9998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9999        res.setNameElement(parseString(xpp));
10000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10001        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
10002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
10003        res.setKindElement(parseEnumeration(xpp, OperationDefinition.OperationKind.NULL, new OperationDefinition.OperationKindEnumFactory()));
10004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
10005        res.setExperimentalElement(parseBoolean(xpp));
10006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10007        res.setDateElement(parseDateTime(xpp));
10008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10009        res.setPublisherElement(parseString(xpp));
10010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10011        res.getContact().add(parseOperationDefinitionOperationDefinitionContactComponent(xpp, res));
10012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10013        res.setDescriptionElement(parseString(xpp));
10014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10015        res.getUseContext().add(parseCodeableConcept(xpp));
10016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
10017        res.setRequirementsElement(parseString(xpp));
10018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("idempotent")) {
10019        res.setIdempotentElement(parseBoolean(xpp));
10020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10021        res.setCodeElement(parseCode(xpp));
10022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
10023        res.setCommentElement(parseString(xpp));
10024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
10025        res.setBase(parseReference(xpp));
10026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
10027        res.setSystemElement(parseBoolean(xpp));
10028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10029        res.getType().add(parseCode(xpp));
10030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
10031        res.setInstanceElement(parseBoolean(xpp));
10032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
10033        res.getParameter().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, res));
10034      } else if (!parseDomainResourceContent(eventType, xpp, res))
10035        unknownContent(xpp);
10036      eventType = nextNoWhitespace(xpp);
10037    }
10038    next(xpp);
10039    parseElementClose(res);
10040    return res;
10041  }
10042
10043  protected OperationDefinition.OperationDefinitionContactComponent parseOperationDefinitionOperationDefinitionContactComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
10044    OperationDefinition.OperationDefinitionContactComponent res = new OperationDefinition.OperationDefinitionContactComponent();
10045    parseBackboneAttributes(xpp, res);
10046    next(xpp);
10047    int eventType = nextNoWhitespace(xpp);
10048    while (eventType != XmlPullParser.END_TAG) {
10049      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10050        res.setNameElement(parseString(xpp));
10051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10052        res.getTelecom().add(parseContactPoint(xpp));
10053      } else if (!parseBackboneContent(eventType, xpp, res))
10054        unknownContent(xpp);
10055      eventType = nextNoWhitespace(xpp);
10056    }
10057    next(xpp);
10058    parseElementClose(res);
10059    return res;
10060  }
10061
10062  protected OperationDefinition.OperationDefinitionParameterComponent parseOperationDefinitionOperationDefinitionParameterComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
10063    OperationDefinition.OperationDefinitionParameterComponent res = new OperationDefinition.OperationDefinitionParameterComponent();
10064    parseBackboneAttributes(xpp, res);
10065    next(xpp);
10066    int eventType = nextNoWhitespace(xpp);
10067    while (eventType != XmlPullParser.END_TAG) {
10068      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10069        res.setNameElement(parseCode(xpp));
10070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
10071        res.setUseElement(parseEnumeration(xpp, OperationDefinition.OperationParameterUse.NULL, new OperationDefinition.OperationParameterUseEnumFactory()));
10072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
10073        res.setMinElement(parseInteger(xpp));
10074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
10075        res.setMaxElement(parseString(xpp));
10076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
10077        res.setDocumentationElement(parseString(xpp));
10078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10079        res.setTypeElement(parseCode(xpp));
10080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchType")) {
10081        res.setSearchTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
10082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
10083        res.setProfile(parseReference(xpp));
10084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
10085        res.setBinding(parseOperationDefinitionOperationDefinitionParameterBindingComponent(xpp, owner));
10086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
10087        res.getPart().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, owner));
10088      } else if (!parseBackboneContent(eventType, xpp, res))
10089        unknownContent(xpp);
10090      eventType = nextNoWhitespace(xpp);
10091    }
10092    next(xpp);
10093    parseElementClose(res);
10094    return res;
10095  }
10096
10097  protected OperationDefinition.OperationDefinitionParameterBindingComponent parseOperationDefinitionOperationDefinitionParameterBindingComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
10098    OperationDefinition.OperationDefinitionParameterBindingComponent res = new OperationDefinition.OperationDefinitionParameterBindingComponent();
10099    parseBackboneAttributes(xpp, res);
10100    next(xpp);
10101    int eventType = nextNoWhitespace(xpp);
10102    while (eventType != XmlPullParser.END_TAG) {
10103      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
10104        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
10105      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
10106        res.setValueSet(parseType("valueSet", xpp));
10107      } else if (!parseBackboneContent(eventType, xpp, res))
10108        unknownContent(xpp);
10109      eventType = nextNoWhitespace(xpp);
10110    }
10111    next(xpp);
10112    parseElementClose(res);
10113    return res;
10114  }
10115
10116  protected OperationOutcome parseOperationOutcome(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10117    OperationOutcome res = new OperationOutcome();
10118    parseDomainResourceAttributes(xpp, res);
10119    next(xpp);
10120    int eventType = nextNoWhitespace(xpp);
10121    while (eventType != XmlPullParser.END_TAG) {
10122      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
10123        res.getIssue().add(parseOperationOutcomeOperationOutcomeIssueComponent(xpp, res));
10124      } else if (!parseDomainResourceContent(eventType, xpp, res))
10125        unknownContent(xpp);
10126      eventType = nextNoWhitespace(xpp);
10127    }
10128    next(xpp);
10129    parseElementClose(res);
10130    return res;
10131  }
10132
10133  protected OperationOutcome.OperationOutcomeIssueComponent parseOperationOutcomeOperationOutcomeIssueComponent(XmlPullParser xpp, OperationOutcome owner) throws XmlPullParserException, IOException, FHIRFormatError {
10134    OperationOutcome.OperationOutcomeIssueComponent res = new OperationOutcome.OperationOutcomeIssueComponent();
10135    parseBackboneAttributes(xpp, res);
10136    next(xpp);
10137    int eventType = nextNoWhitespace(xpp);
10138    while (eventType != XmlPullParser.END_TAG) {
10139      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
10140        res.setSeverityElement(parseEnumeration(xpp, OperationOutcome.IssueSeverity.NULL, new OperationOutcome.IssueSeverityEnumFactory()));
10141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10142        res.setCodeElement(parseEnumeration(xpp, OperationOutcome.IssueType.NULL, new OperationOutcome.IssueTypeEnumFactory()));
10143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
10144        res.setDetails(parseCodeableConcept(xpp));
10145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnostics")) {
10146        res.setDiagnosticsElement(parseString(xpp));
10147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
10148        res.getLocation().add(parseString(xpp));
10149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
10150        res.getExpression().add(parseString(xpp));
10151      } else if (!parseBackboneContent(eventType, xpp, res))
10152        unknownContent(xpp);
10153      eventType = nextNoWhitespace(xpp);
10154    }
10155    next(xpp);
10156    parseElementClose(res);
10157    return res;
10158  }
10159
10160  protected Order parseOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10161    Order res = new Order();
10162    parseDomainResourceAttributes(xpp, res);
10163    next(xpp);
10164    int eventType = nextNoWhitespace(xpp);
10165    while (eventType != XmlPullParser.END_TAG) {
10166      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10167        res.getIdentifier().add(parseIdentifier(xpp));
10168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10169        res.setDateElement(parseDateTime(xpp));
10170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10171        res.setSubject(parseReference(xpp));
10172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
10173        res.setSource(parseReference(xpp));
10174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
10175        res.setTarget(parseReference(xpp));
10176      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
10177        res.setReason(parseType("reason", xpp));
10178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
10179        res.setWhen(parseOrderOrderWhenComponent(xpp, res));
10180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
10181        res.getDetail().add(parseReference(xpp));
10182      } else if (!parseDomainResourceContent(eventType, xpp, res))
10183        unknownContent(xpp);
10184      eventType = nextNoWhitespace(xpp);
10185    }
10186    next(xpp);
10187    parseElementClose(res);
10188    return res;
10189  }
10190
10191  protected Order.OrderWhenComponent parseOrderOrderWhenComponent(XmlPullParser xpp, Order owner) throws XmlPullParserException, IOException, FHIRFormatError {
10192    Order.OrderWhenComponent res = new Order.OrderWhenComponent();
10193    parseBackboneAttributes(xpp, res);
10194    next(xpp);
10195    int eventType = nextNoWhitespace(xpp);
10196    while (eventType != XmlPullParser.END_TAG) {
10197      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10198        res.setCode(parseCodeableConcept(xpp));
10199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
10200        res.setSchedule(parseTiming(xpp));
10201      } else if (!parseBackboneContent(eventType, xpp, res))
10202        unknownContent(xpp);
10203      eventType = nextNoWhitespace(xpp);
10204    }
10205    next(xpp);
10206    parseElementClose(res);
10207    return res;
10208  }
10209
10210  protected OrderResponse parseOrderResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10211    OrderResponse res = new OrderResponse();
10212    parseDomainResourceAttributes(xpp, res);
10213    next(xpp);
10214    int eventType = nextNoWhitespace(xpp);
10215    while (eventType != XmlPullParser.END_TAG) {
10216      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10217        res.getIdentifier().add(parseIdentifier(xpp));
10218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
10219        res.setRequest(parseReference(xpp));
10220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10221        res.setDateElement(parseDateTime(xpp));
10222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
10223        res.setWho(parseReference(xpp));
10224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderStatus")) {
10225        res.setOrderStatusElement(parseEnumeration(xpp, OrderResponse.OrderStatus.NULL, new OrderResponse.OrderStatusEnumFactory()));
10226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10227        res.setDescriptionElement(parseString(xpp));
10228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fulfillment")) {
10229        res.getFulfillment().add(parseReference(xpp));
10230      } else if (!parseDomainResourceContent(eventType, xpp, res))
10231        unknownContent(xpp);
10232      eventType = nextNoWhitespace(xpp);
10233    }
10234    next(xpp);
10235    parseElementClose(res);
10236    return res;
10237  }
10238
10239  protected OrderSet parseOrderSet(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10240    OrderSet res = new OrderSet();
10241    parseDomainResourceAttributes(xpp, res);
10242    next(xpp);
10243    int eventType = nextNoWhitespace(xpp);
10244    while (eventType != XmlPullParser.END_TAG) {
10245      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("moduleMetadata")) {
10246        res.setModuleMetadata(parseModuleMetadata(xpp));
10247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
10248        res.getLibrary().add(parseReference(xpp));
10249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
10250        res.getAction().add(parseActionDefinition(xpp));
10251      } else if (!parseDomainResourceContent(eventType, xpp, res))
10252        unknownContent(xpp);
10253      eventType = nextNoWhitespace(xpp);
10254    }
10255    next(xpp);
10256    parseElementClose(res);
10257    return res;
10258  }
10259
10260  protected Organization parseOrganization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10261    Organization res = new Organization();
10262    parseDomainResourceAttributes(xpp, res);
10263    next(xpp);
10264    int eventType = nextNoWhitespace(xpp);
10265    while (eventType != XmlPullParser.END_TAG) {
10266      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10267        res.getIdentifier().add(parseIdentifier(xpp));
10268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
10269        res.setActiveElement(parseBoolean(xpp));
10270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10271        res.setType(parseCodeableConcept(xpp));
10272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10273        res.setNameElement(parseString(xpp));
10274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10275        res.getTelecom().add(parseContactPoint(xpp));
10276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
10277        res.getAddress().add(parseAddress(xpp));
10278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
10279        res.setPartOf(parseReference(xpp));
10280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10281        res.getContact().add(parseOrganizationOrganizationContactComponent(xpp, res));
10282      } else if (!parseDomainResourceContent(eventType, xpp, res))
10283        unknownContent(xpp);
10284      eventType = nextNoWhitespace(xpp);
10285    }
10286    next(xpp);
10287    parseElementClose(res);
10288    return res;
10289  }
10290
10291  protected Organization.OrganizationContactComponent parseOrganizationOrganizationContactComponent(XmlPullParser xpp, Organization owner) throws XmlPullParserException, IOException, FHIRFormatError {
10292    Organization.OrganizationContactComponent res = new Organization.OrganizationContactComponent();
10293    parseBackboneAttributes(xpp, res);
10294    next(xpp);
10295    int eventType = nextNoWhitespace(xpp);
10296    while (eventType != XmlPullParser.END_TAG) {
10297      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
10298        res.setPurpose(parseCodeableConcept(xpp));
10299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10300        res.setName(parseHumanName(xpp));
10301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10302        res.getTelecom().add(parseContactPoint(xpp));
10303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
10304        res.setAddress(parseAddress(xpp));
10305      } else if (!parseBackboneContent(eventType, xpp, res))
10306        unknownContent(xpp);
10307      eventType = nextNoWhitespace(xpp);
10308    }
10309    next(xpp);
10310    parseElementClose(res);
10311    return res;
10312  }
10313
10314  protected Patient parsePatient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10315    Patient res = new Patient();
10316    parseDomainResourceAttributes(xpp, res);
10317    next(xpp);
10318    int eventType = nextNoWhitespace(xpp);
10319    while (eventType != XmlPullParser.END_TAG) {
10320      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10321        res.getIdentifier().add(parseIdentifier(xpp));
10322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
10323        res.setActiveElement(parseBoolean(xpp));
10324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10325        res.getName().add(parseHumanName(xpp));
10326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10327        res.getTelecom().add(parseContactPoint(xpp));
10328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
10329        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
10330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
10331        res.setBirthDateElement(parseDate(xpp));
10332      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
10333        res.setDeceased(parseType("deceased", xpp));
10334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
10335        res.getAddress().add(parseAddress(xpp));
10336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maritalStatus")) {
10337        res.setMaritalStatus(parseCodeableConcept(xpp));
10338      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "multipleBirth")) {
10339        res.setMultipleBirth(parseType("multipleBirth", xpp));
10340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
10341        res.getPhoto().add(parseAttachment(xpp));
10342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10343        res.getContact().add(parsePatientContactComponent(xpp, res));
10344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("animal")) {
10345        res.setAnimal(parsePatientAnimalComponent(xpp, res));
10346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
10347        res.getCommunication().add(parsePatientPatientCommunicationComponent(xpp, res));
10348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careProvider")) {
10349        res.getCareProvider().add(parseReference(xpp));
10350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
10351        res.setManagingOrganization(parseReference(xpp));
10352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
10353        res.getLink().add(parsePatientPatientLinkComponent(xpp, res));
10354      } else if (!parseDomainResourceContent(eventType, xpp, res))
10355        unknownContent(xpp);
10356      eventType = nextNoWhitespace(xpp);
10357    }
10358    next(xpp);
10359    parseElementClose(res);
10360    return res;
10361  }
10362
10363  protected Patient.ContactComponent parsePatientContactComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
10364    Patient.ContactComponent res = new Patient.ContactComponent();
10365    parseBackboneAttributes(xpp, res);
10366    next(xpp);
10367    int eventType = nextNoWhitespace(xpp);
10368    while (eventType != XmlPullParser.END_TAG) {
10369      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
10370        res.getRelationship().add(parseCodeableConcept(xpp));
10371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10372        res.setName(parseHumanName(xpp));
10373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10374        res.getTelecom().add(parseContactPoint(xpp));
10375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
10376        res.setAddress(parseAddress(xpp));
10377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
10378        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
10379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
10380        res.setOrganization(parseReference(xpp));
10381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10382        res.setPeriod(parsePeriod(xpp));
10383      } else if (!parseBackboneContent(eventType, xpp, res))
10384        unknownContent(xpp);
10385      eventType = nextNoWhitespace(xpp);
10386    }
10387    next(xpp);
10388    parseElementClose(res);
10389    return res;
10390  }
10391
10392  protected Patient.AnimalComponent parsePatientAnimalComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
10393    Patient.AnimalComponent res = new Patient.AnimalComponent();
10394    parseBackboneAttributes(xpp, res);
10395    next(xpp);
10396    int eventType = nextNoWhitespace(xpp);
10397    while (eventType != XmlPullParser.END_TAG) {
10398      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
10399        res.setSpecies(parseCodeableConcept(xpp));
10400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("breed")) {
10401        res.setBreed(parseCodeableConcept(xpp));
10402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genderStatus")) {
10403        res.setGenderStatus(parseCodeableConcept(xpp));
10404      } else if (!parseBackboneContent(eventType, xpp, res))
10405        unknownContent(xpp);
10406      eventType = nextNoWhitespace(xpp);
10407    }
10408    next(xpp);
10409    parseElementClose(res);
10410    return res;
10411  }
10412
10413  protected Patient.PatientCommunicationComponent parsePatientPatientCommunicationComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
10414    Patient.PatientCommunicationComponent res = new Patient.PatientCommunicationComponent();
10415    parseBackboneAttributes(xpp, res);
10416    next(xpp);
10417    int eventType = nextNoWhitespace(xpp);
10418    while (eventType != XmlPullParser.END_TAG) {
10419      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
10420        res.setLanguage(parseCodeableConcept(xpp));
10421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
10422        res.setPreferredElement(parseBoolean(xpp));
10423      } else if (!parseBackboneContent(eventType, xpp, res))
10424        unknownContent(xpp);
10425      eventType = nextNoWhitespace(xpp);
10426    }
10427    next(xpp);
10428    parseElementClose(res);
10429    return res;
10430  }
10431
10432  protected Patient.PatientLinkComponent parsePatientPatientLinkComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
10433    Patient.PatientLinkComponent res = new Patient.PatientLinkComponent();
10434    parseBackboneAttributes(xpp, res);
10435    next(xpp);
10436    int eventType = nextNoWhitespace(xpp);
10437    while (eventType != XmlPullParser.END_TAG) {
10438      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
10439        res.setOther(parseReference(xpp));
10440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10441        res.setTypeElement(parseEnumeration(xpp, Patient.LinkType.NULL, new Patient.LinkTypeEnumFactory()));
10442      } else if (!parseBackboneContent(eventType, xpp, res))
10443        unknownContent(xpp);
10444      eventType = nextNoWhitespace(xpp);
10445    }
10446    next(xpp);
10447    parseElementClose(res);
10448    return res;
10449  }
10450
10451  protected PaymentNotice parsePaymentNotice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10452    PaymentNotice res = new PaymentNotice();
10453    parseDomainResourceAttributes(xpp, res);
10454    next(xpp);
10455    int eventType = nextNoWhitespace(xpp);
10456    while (eventType != XmlPullParser.END_TAG) {
10457      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10458        res.getIdentifier().add(parseIdentifier(xpp));
10459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
10460        res.setRuleset(parseCoding(xpp));
10461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
10462        res.setOriginalRuleset(parseCoding(xpp));
10463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
10464        res.setCreatedElement(parseDateTime(xpp));
10465      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
10466        res.setTarget(parseType("target", xpp));
10467      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "provider")) {
10468        res.setProvider(parseType("provider", xpp));
10469      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "organization")) {
10470        res.setOrganization(parseType("organization", xpp));
10471      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "request")) {
10472        res.setRequest(parseType("request", xpp));
10473      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "response")) {
10474        res.setResponse(parseType("response", xpp));
10475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentStatus")) {
10476        res.setPaymentStatus(parseCoding(xpp));
10477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
10478        res.setStatusDateElement(parseDate(xpp));
10479      } else if (!parseDomainResourceContent(eventType, xpp, res))
10480        unknownContent(xpp);
10481      eventType = nextNoWhitespace(xpp);
10482    }
10483    next(xpp);
10484    parseElementClose(res);
10485    return res;
10486  }
10487
10488  protected PaymentReconciliation parsePaymentReconciliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10489    PaymentReconciliation res = new PaymentReconciliation();
10490    parseDomainResourceAttributes(xpp, res);
10491    next(xpp);
10492    int eventType = nextNoWhitespace(xpp);
10493    while (eventType != XmlPullParser.END_TAG) {
10494      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10495        res.getIdentifier().add(parseIdentifier(xpp));
10496      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "request")) {
10497        res.setRequest(parseType("request", xpp));
10498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
10499        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
10500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
10501        res.setDispositionElement(parseString(xpp));
10502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
10503        res.setRuleset(parseCoding(xpp));
10504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
10505        res.setOriginalRuleset(parseCoding(xpp));
10506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
10507        res.setCreatedElement(parseDateTime(xpp));
10508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10509        res.setPeriod(parsePeriod(xpp));
10510      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "organization")) {
10511        res.setOrganization(parseType("organization", xpp));
10512      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "requestProvider")) {
10513        res.setRequestProvider(parseType("requestProvider", xpp));
10514      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "requestOrganization")) {
10515        res.setRequestOrganization(parseType("requestOrganization", xpp));
10516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
10517        res.getDetail().add(parsePaymentReconciliationDetailsComponent(xpp, res));
10518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
10519        res.setForm(parseCoding(xpp));
10520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
10521        res.setTotal(parseMoney(xpp));
10522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10523        res.getNote().add(parsePaymentReconciliationNotesComponent(xpp, res));
10524      } else if (!parseDomainResourceContent(eventType, xpp, res))
10525        unknownContent(xpp);
10526      eventType = nextNoWhitespace(xpp);
10527    }
10528    next(xpp);
10529    parseElementClose(res);
10530    return res;
10531  }
10532
10533  protected PaymentReconciliation.DetailsComponent parsePaymentReconciliationDetailsComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
10534    PaymentReconciliation.DetailsComponent res = new PaymentReconciliation.DetailsComponent();
10535    parseBackboneAttributes(xpp, res);
10536    next(xpp);
10537    int eventType = nextNoWhitespace(xpp);
10538    while (eventType != XmlPullParser.END_TAG) {
10539      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10540        res.setType(parseCoding(xpp));
10541      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "request")) {
10542        res.setRequest(parseType("request", xpp));
10543      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "responce")) {
10544        res.setResponce(parseType("responce", xpp));
10545      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "submitter")) {
10546        res.setSubmitter(parseType("submitter", xpp));
10547      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "payee")) {
10548        res.setPayee(parseType("payee", xpp));
10549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10550        res.setDateElement(parseDate(xpp));
10551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10552        res.setAmount(parseMoney(xpp));
10553      } else if (!parseBackboneContent(eventType, xpp, res))
10554        unknownContent(xpp);
10555      eventType = nextNoWhitespace(xpp);
10556    }
10557    next(xpp);
10558    parseElementClose(res);
10559    return res;
10560  }
10561
10562  protected PaymentReconciliation.NotesComponent parsePaymentReconciliationNotesComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
10563    PaymentReconciliation.NotesComponent res = new PaymentReconciliation.NotesComponent();
10564    parseBackboneAttributes(xpp, res);
10565    next(xpp);
10566    int eventType = nextNoWhitespace(xpp);
10567    while (eventType != XmlPullParser.END_TAG) {
10568      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10569        res.setType(parseCoding(xpp));
10570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
10571        res.setTextElement(parseString(xpp));
10572      } else if (!parseBackboneContent(eventType, xpp, res))
10573        unknownContent(xpp);
10574      eventType = nextNoWhitespace(xpp);
10575    }
10576    next(xpp);
10577    parseElementClose(res);
10578    return res;
10579  }
10580
10581  protected Person parsePerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10582    Person res = new Person();
10583    parseDomainResourceAttributes(xpp, res);
10584    next(xpp);
10585    int eventType = nextNoWhitespace(xpp);
10586    while (eventType != XmlPullParser.END_TAG) {
10587      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10588        res.getIdentifier().add(parseIdentifier(xpp));
10589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10590        res.getName().add(parseHumanName(xpp));
10591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10592        res.getTelecom().add(parseContactPoint(xpp));
10593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
10594        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
10595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
10596        res.setBirthDateElement(parseDate(xpp));
10597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
10598        res.getAddress().add(parseAddress(xpp));
10599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
10600        res.setPhoto(parseAttachment(xpp));
10601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
10602        res.setManagingOrganization(parseReference(xpp));
10603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
10604        res.setActiveElement(parseBoolean(xpp));
10605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
10606        res.getLink().add(parsePersonPersonLinkComponent(xpp, res));
10607      } else if (!parseDomainResourceContent(eventType, xpp, res))
10608        unknownContent(xpp);
10609      eventType = nextNoWhitespace(xpp);
10610    }
10611    next(xpp);
10612    parseElementClose(res);
10613    return res;
10614  }
10615
10616  protected Person.PersonLinkComponent parsePersonPersonLinkComponent(XmlPullParser xpp, Person owner) throws XmlPullParserException, IOException, FHIRFormatError {
10617    Person.PersonLinkComponent res = new Person.PersonLinkComponent();
10618    parseBackboneAttributes(xpp, res);
10619    next(xpp);
10620    int eventType = nextNoWhitespace(xpp);
10621    while (eventType != XmlPullParser.END_TAG) {
10622      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
10623        res.setTarget(parseReference(xpp));
10624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assurance")) {
10625        res.setAssuranceElement(parseEnumeration(xpp, Person.IdentityAssuranceLevel.NULL, new Person.IdentityAssuranceLevelEnumFactory()));
10626      } else if (!parseBackboneContent(eventType, xpp, res))
10627        unknownContent(xpp);
10628      eventType = nextNoWhitespace(xpp);
10629    }
10630    next(xpp);
10631    parseElementClose(res);
10632    return res;
10633  }
10634
10635  protected Practitioner parsePractitioner(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10636    Practitioner res = new Practitioner();
10637    parseDomainResourceAttributes(xpp, res);
10638    next(xpp);
10639    int eventType = nextNoWhitespace(xpp);
10640    while (eventType != XmlPullParser.END_TAG) {
10641      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10642        res.getIdentifier().add(parseIdentifier(xpp));
10643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
10644        res.setActiveElement(parseBoolean(xpp));
10645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10646        res.getName().add(parseHumanName(xpp));
10647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10648        res.getTelecom().add(parseContactPoint(xpp));
10649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
10650        res.getAddress().add(parseAddress(xpp));
10651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
10652        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
10653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
10654        res.setBirthDateElement(parseDate(xpp));
10655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
10656        res.getPhoto().add(parseAttachment(xpp));
10657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitionerRole")) {
10658        res.getPractitionerRole().add(parsePractitionerPractitionerPractitionerRoleComponent(xpp, res));
10659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
10660        res.getQualification().add(parsePractitionerPractitionerQualificationComponent(xpp, res));
10661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
10662        res.getCommunication().add(parseCodeableConcept(xpp));
10663      } else if (!parseDomainResourceContent(eventType, xpp, res))
10664        unknownContent(xpp);
10665      eventType = nextNoWhitespace(xpp);
10666    }
10667    next(xpp);
10668    parseElementClose(res);
10669    return res;
10670  }
10671
10672  protected Practitioner.PractitionerPractitionerRoleComponent parsePractitionerPractitionerPractitionerRoleComponent(XmlPullParser xpp, Practitioner owner) throws XmlPullParserException, IOException, FHIRFormatError {
10673    Practitioner.PractitionerPractitionerRoleComponent res = new Practitioner.PractitionerPractitionerRoleComponent();
10674    parseBackboneAttributes(xpp, res);
10675    next(xpp);
10676    int eventType = nextNoWhitespace(xpp);
10677    while (eventType != XmlPullParser.END_TAG) {
10678      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
10679        res.setOrganization(parseReference(xpp));
10680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
10681        res.setRole(parseCodeableConcept(xpp));
10682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
10683        res.getSpecialty().add(parseCodeableConcept(xpp));
10684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10685        res.getIdentifier().add(parseIdentifier(xpp));
10686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10687        res.getTelecom().add(parseContactPoint(xpp));
10688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10689        res.setPeriod(parsePeriod(xpp));
10690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
10691        res.getLocation().add(parseReference(xpp));
10692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
10693        res.getHealthcareService().add(parseReference(xpp));
10694      } else if (!parseBackboneContent(eventType, xpp, res))
10695        unknownContent(xpp);
10696      eventType = nextNoWhitespace(xpp);
10697    }
10698    next(xpp);
10699    parseElementClose(res);
10700    return res;
10701  }
10702
10703  protected Practitioner.PractitionerQualificationComponent parsePractitionerPractitionerQualificationComponent(XmlPullParser xpp, Practitioner owner) throws XmlPullParserException, IOException, FHIRFormatError {
10704    Practitioner.PractitionerQualificationComponent res = new Practitioner.PractitionerQualificationComponent();
10705    parseBackboneAttributes(xpp, res);
10706    next(xpp);
10707    int eventType = nextNoWhitespace(xpp);
10708    while (eventType != XmlPullParser.END_TAG) {
10709      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10710        res.getIdentifier().add(parseIdentifier(xpp));
10711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10712        res.setCode(parseCodeableConcept(xpp));
10713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10714        res.setPeriod(parsePeriod(xpp));
10715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
10716        res.setIssuer(parseReference(xpp));
10717      } else if (!parseBackboneContent(eventType, xpp, res))
10718        unknownContent(xpp);
10719      eventType = nextNoWhitespace(xpp);
10720    }
10721    next(xpp);
10722    parseElementClose(res);
10723    return res;
10724  }
10725
10726  protected PractitionerRole parsePractitionerRole(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10727    PractitionerRole res = new PractitionerRole();
10728    parseDomainResourceAttributes(xpp, res);
10729    next(xpp);
10730    int eventType = nextNoWhitespace(xpp);
10731    while (eventType != XmlPullParser.END_TAG) {
10732      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10733        res.getIdentifier().add(parseIdentifier(xpp));
10734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
10735        res.setActiveElement(parseBoolean(xpp));
10736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
10737        res.setPractitioner(parseReference(xpp));
10738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
10739        res.setOrganization(parseReference(xpp));
10740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
10741        res.getRole().add(parseCodeableConcept(xpp));
10742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
10743        res.getSpecialty().add(parseCodeableConcept(xpp));
10744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
10745        res.getLocation().add(parseReference(xpp));
10746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
10747        res.getHealthcareService().add(parseReference(xpp));
10748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10749        res.getTelecom().add(parseContactPoint(xpp));
10750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10751        res.setPeriod(parsePeriod(xpp));
10752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
10753        res.getAvailableTime().add(parsePractitionerRolePractitionerRoleAvailableTimeComponent(xpp, res));
10754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
10755        res.getNotAvailable().add(parsePractitionerRolePractitionerRoleNotAvailableComponent(xpp, res));
10756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
10757        res.setAvailabilityExceptionsElement(parseString(xpp));
10758      } else if (!parseDomainResourceContent(eventType, xpp, res))
10759        unknownContent(xpp);
10760      eventType = nextNoWhitespace(xpp);
10761    }
10762    next(xpp);
10763    parseElementClose(res);
10764    return res;
10765  }
10766
10767  protected PractitionerRole.PractitionerRoleAvailableTimeComponent parsePractitionerRolePractitionerRoleAvailableTimeComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
10768    PractitionerRole.PractitionerRoleAvailableTimeComponent res = new PractitionerRole.PractitionerRoleAvailableTimeComponent();
10769    parseBackboneAttributes(xpp, res);
10770    next(xpp);
10771    int eventType = nextNoWhitespace(xpp);
10772    while (eventType != XmlPullParser.END_TAG) {
10773      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
10774        res.getDaysOfWeek().add(parseCode(xpp));
10775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
10776        res.setAllDayElement(parseBoolean(xpp));
10777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
10778        res.setAvailableStartTimeElement(parseTime(xpp));
10779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
10780        res.setAvailableEndTimeElement(parseTime(xpp));
10781      } else if (!parseBackboneContent(eventType, xpp, res))
10782        unknownContent(xpp);
10783      eventType = nextNoWhitespace(xpp);
10784    }
10785    next(xpp);
10786    parseElementClose(res);
10787    return res;
10788  }
10789
10790  protected PractitionerRole.PractitionerRoleNotAvailableComponent parsePractitionerRolePractitionerRoleNotAvailableComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
10791    PractitionerRole.PractitionerRoleNotAvailableComponent res = new PractitionerRole.PractitionerRoleNotAvailableComponent();
10792    parseBackboneAttributes(xpp, res);
10793    next(xpp);
10794    int eventType = nextNoWhitespace(xpp);
10795    while (eventType != XmlPullParser.END_TAG) {
10796      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10797        res.setDescriptionElement(parseString(xpp));
10798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
10799        res.setDuring(parsePeriod(xpp));
10800      } else if (!parseBackboneContent(eventType, xpp, res))
10801        unknownContent(xpp);
10802      eventType = nextNoWhitespace(xpp);
10803    }
10804    next(xpp);
10805    parseElementClose(res);
10806    return res;
10807  }
10808
10809  protected Procedure parseProcedure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10810    Procedure res = new Procedure();
10811    parseDomainResourceAttributes(xpp, res);
10812    next(xpp);
10813    int eventType = nextNoWhitespace(xpp);
10814    while (eventType != XmlPullParser.END_TAG) {
10815      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10816        res.getIdentifier().add(parseIdentifier(xpp));
10817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10818        res.setSubject(parseReference(xpp));
10819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10820        res.setStatusElement(parseEnumeration(xpp, Procedure.ProcedureStatus.NULL, new Procedure.ProcedureStatusEnumFactory()));
10821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10822        res.setCategory(parseCodeableConcept(xpp));
10823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10824        res.setCode(parseCodeableConcept(xpp));
10825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notPerformed")) {
10826        res.setNotPerformedElement(parseBoolean(xpp));
10827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotPerformed")) {
10828        res.getReasonNotPerformed().add(parseCodeableConcept(xpp));
10829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
10830        res.getBodySite().add(parseCodeableConcept(xpp));
10831      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
10832        res.setReason(parseType("reason", xpp));
10833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
10834        res.getPerformer().add(parseProcedureProcedurePerformerComponent(xpp, res));
10835      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "performed")) {
10836        res.setPerformed(parseType("performed", xpp));
10837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10838        res.setEncounter(parseReference(xpp));
10839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
10840        res.setLocation(parseReference(xpp));
10841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
10842        res.setOutcome(parseCodeableConcept(xpp));
10843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("report")) {
10844        res.getReport().add(parseReference(xpp));
10845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complication")) {
10846        res.getComplication().add(parseCodeableConcept(xpp));
10847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("followUp")) {
10848        res.getFollowUp().add(parseCodeableConcept(xpp));
10849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
10850        res.setRequest(parseReference(xpp));
10851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
10852        res.getNotes().add(parseAnnotation(xpp));
10853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focalDevice")) {
10854        res.getFocalDevice().add(parseProcedureProcedureFocalDeviceComponent(xpp, res));
10855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("used")) {
10856        res.getUsed().add(parseReference(xpp));
10857      } else if (!parseDomainResourceContent(eventType, xpp, res))
10858        unknownContent(xpp);
10859      eventType = nextNoWhitespace(xpp);
10860    }
10861    next(xpp);
10862    parseElementClose(res);
10863    return res;
10864  }
10865
10866  protected Procedure.ProcedurePerformerComponent parseProcedureProcedurePerformerComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
10867    Procedure.ProcedurePerformerComponent res = new Procedure.ProcedurePerformerComponent();
10868    parseBackboneAttributes(xpp, res);
10869    next(xpp);
10870    int eventType = nextNoWhitespace(xpp);
10871    while (eventType != XmlPullParser.END_TAG) {
10872      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
10873        res.setActor(parseReference(xpp));
10874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
10875        res.setRole(parseCodeableConcept(xpp));
10876      } else if (!parseBackboneContent(eventType, xpp, res))
10877        unknownContent(xpp);
10878      eventType = nextNoWhitespace(xpp);
10879    }
10880    next(xpp);
10881    parseElementClose(res);
10882    return res;
10883  }
10884
10885  protected Procedure.ProcedureFocalDeviceComponent parseProcedureProcedureFocalDeviceComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
10886    Procedure.ProcedureFocalDeviceComponent res = new Procedure.ProcedureFocalDeviceComponent();
10887    parseBackboneAttributes(xpp, res);
10888    next(xpp);
10889    int eventType = nextNoWhitespace(xpp);
10890    while (eventType != XmlPullParser.END_TAG) {
10891      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
10892        res.setAction(parseCodeableConcept(xpp));
10893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulated")) {
10894        res.setManipulated(parseReference(xpp));
10895      } else if (!parseBackboneContent(eventType, xpp, res))
10896        unknownContent(xpp);
10897      eventType = nextNoWhitespace(xpp);
10898    }
10899    next(xpp);
10900    parseElementClose(res);
10901    return res;
10902  }
10903
10904  protected ProcedureRequest parseProcedureRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10905    ProcedureRequest res = new ProcedureRequest();
10906    parseDomainResourceAttributes(xpp, res);
10907    next(xpp);
10908    int eventType = nextNoWhitespace(xpp);
10909    while (eventType != XmlPullParser.END_TAG) {
10910      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10911        res.getIdentifier().add(parseIdentifier(xpp));
10912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10913        res.setSubject(parseReference(xpp));
10914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10915        res.setCode(parseCodeableConcept(xpp));
10916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
10917        res.getBodySite().add(parseCodeableConcept(xpp));
10918      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
10919        res.setReason(parseType("reason", xpp));
10920      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
10921        res.setScheduled(parseType("scheduled", xpp));
10922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10923        res.setEncounter(parseReference(xpp));
10924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
10925        res.setPerformer(parseReference(xpp));
10926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10927        res.setStatusElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestStatus.NULL, new ProcedureRequest.ProcedureRequestStatusEnumFactory()));
10928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
10929        res.getNotes().add(parseAnnotation(xpp));
10930      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
10931        res.setAsNeeded(parseType("asNeeded", xpp));
10932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedOn")) {
10933        res.setOrderedOnElement(parseDateTime(xpp));
10934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
10935        res.setOrderer(parseReference(xpp));
10936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
10937        res.setPriorityElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestPriority.NULL, new ProcedureRequest.ProcedureRequestPriorityEnumFactory()));
10938      } else if (!parseDomainResourceContent(eventType, xpp, res))
10939        unknownContent(xpp);
10940      eventType = nextNoWhitespace(xpp);
10941    }
10942    next(xpp);
10943    parseElementClose(res);
10944    return res;
10945  }
10946
10947  protected ProcessRequest parseProcessRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10948    ProcessRequest res = new ProcessRequest();
10949    parseDomainResourceAttributes(xpp, res);
10950    next(xpp);
10951    int eventType = nextNoWhitespace(xpp);
10952    while (eventType != XmlPullParser.END_TAG) {
10953      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
10954        res.setActionElement(parseEnumeration(xpp, ProcessRequest.ActionList.NULL, new ProcessRequest.ActionListEnumFactory()));
10955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10956        res.getIdentifier().add(parseIdentifier(xpp));
10957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
10958        res.setRuleset(parseCoding(xpp));
10959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
10960        res.setOriginalRuleset(parseCoding(xpp));
10961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
10962        res.setCreatedElement(parseDateTime(xpp));
10963      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
10964        res.setTarget(parseType("target", xpp));
10965      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "provider")) {
10966        res.setProvider(parseType("provider", xpp));
10967      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "organization")) {
10968        res.setOrganization(parseType("organization", xpp));
10969      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "request")) {
10970        res.setRequest(parseType("request", xpp));
10971      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "response")) {
10972        res.setResponse(parseType("response", xpp));
10973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nullify")) {
10974        res.setNullifyElement(parseBoolean(xpp));
10975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
10976        res.setReferenceElement(parseString(xpp));
10977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
10978        res.getItem().add(parseProcessRequestItemsComponent(xpp, res));
10979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
10980        res.getInclude().add(parseString(xpp));
10981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
10982        res.getExclude().add(parseString(xpp));
10983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10984        res.setPeriod(parsePeriod(xpp));
10985      } else if (!parseDomainResourceContent(eventType, xpp, res))
10986        unknownContent(xpp);
10987      eventType = nextNoWhitespace(xpp);
10988    }
10989    next(xpp);
10990    parseElementClose(res);
10991    return res;
10992  }
10993
10994  protected ProcessRequest.ItemsComponent parseProcessRequestItemsComponent(XmlPullParser xpp, ProcessRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
10995    ProcessRequest.ItemsComponent res = new ProcessRequest.ItemsComponent();
10996    parseBackboneAttributes(xpp, res);
10997    next(xpp);
10998    int eventType = nextNoWhitespace(xpp);
10999    while (eventType != XmlPullParser.END_TAG) {
11000      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
11001        res.setSequenceLinkIdElement(parseInteger(xpp));
11002      } else if (!parseBackboneContent(eventType, xpp, res))
11003        unknownContent(xpp);
11004      eventType = nextNoWhitespace(xpp);
11005    }
11006    next(xpp);
11007    parseElementClose(res);
11008    return res;
11009  }
11010
11011  protected ProcessResponse parseProcessResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11012    ProcessResponse res = new ProcessResponse();
11013    parseDomainResourceAttributes(xpp, res);
11014    next(xpp);
11015    int eventType = nextNoWhitespace(xpp);
11016    while (eventType != XmlPullParser.END_TAG) {
11017      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11018        res.getIdentifier().add(parseIdentifier(xpp));
11019      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "request")) {
11020        res.setRequest(parseType("request", xpp));
11021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
11022        res.setOutcome(parseCoding(xpp));
11023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
11024        res.setDispositionElement(parseString(xpp));
11025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
11026        res.setRuleset(parseCoding(xpp));
11027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
11028        res.setOriginalRuleset(parseCoding(xpp));
11029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
11030        res.setCreatedElement(parseDateTime(xpp));
11031      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "organization")) {
11032        res.setOrganization(parseType("organization", xpp));
11033      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "requestProvider")) {
11034        res.setRequestProvider(parseType("requestProvider", xpp));
11035      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "requestOrganization")) {
11036        res.setRequestOrganization(parseType("requestOrganization", xpp));
11037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
11038        res.setForm(parseCoding(xpp));
11039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
11040        res.getNotes().add(parseProcessResponseProcessResponseNotesComponent(xpp, res));
11041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
11042        res.getError().add(parseCoding(xpp));
11043      } else if (!parseDomainResourceContent(eventType, xpp, res))
11044        unknownContent(xpp);
11045      eventType = nextNoWhitespace(xpp);
11046    }
11047    next(xpp);
11048    parseElementClose(res);
11049    return res;
11050  }
11051
11052  protected ProcessResponse.ProcessResponseNotesComponent parseProcessResponseProcessResponseNotesComponent(XmlPullParser xpp, ProcessResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
11053    ProcessResponse.ProcessResponseNotesComponent res = new ProcessResponse.ProcessResponseNotesComponent();
11054    parseBackboneAttributes(xpp, res);
11055    next(xpp);
11056    int eventType = nextNoWhitespace(xpp);
11057    while (eventType != XmlPullParser.END_TAG) {
11058      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11059        res.setType(parseCoding(xpp));
11060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
11061        res.setTextElement(parseString(xpp));
11062      } else if (!parseBackboneContent(eventType, xpp, res))
11063        unknownContent(xpp);
11064      eventType = nextNoWhitespace(xpp);
11065    }
11066    next(xpp);
11067    parseElementClose(res);
11068    return res;
11069  }
11070
11071  protected Protocol parseProtocol(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11072    Protocol res = new Protocol();
11073    parseDomainResourceAttributes(xpp, res);
11074    next(xpp);
11075    int eventType = nextNoWhitespace(xpp);
11076    while (eventType != XmlPullParser.END_TAG) {
11077      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11078        res.getIdentifier().add(parseIdentifier(xpp));
11079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11080        res.setTitleElement(parseString(xpp));
11081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11082        res.setStatusElement(parseEnumeration(xpp, Protocol.ProtocolStatus.NULL, new Protocol.ProtocolStatusEnumFactory()));
11083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11084        res.setTypeElement(parseEnumeration(xpp, Protocol.ProtocolType.NULL, new Protocol.ProtocolTypeEnumFactory()));
11085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11086        res.setSubject(parseReference(xpp));
11087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
11088        res.setGroup(parseReference(xpp));
11089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
11090        res.setPurposeElement(parseString(xpp));
11091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
11092        res.setAuthor(parseReference(xpp));
11093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
11094        res.getStep().add(parseProtocolProtocolStepComponent(xpp, res));
11095      } else if (!parseDomainResourceContent(eventType, xpp, res))
11096        unknownContent(xpp);
11097      eventType = nextNoWhitespace(xpp);
11098    }
11099    next(xpp);
11100    parseElementClose(res);
11101    return res;
11102  }
11103
11104  protected Protocol.ProtocolStepComponent parseProtocolProtocolStepComponent(XmlPullParser xpp, Protocol owner) throws XmlPullParserException, IOException, FHIRFormatError {
11105    Protocol.ProtocolStepComponent res = new Protocol.ProtocolStepComponent();
11106    parseBackboneAttributes(xpp, res);
11107    next(xpp);
11108    int eventType = nextNoWhitespace(xpp);
11109    while (eventType != XmlPullParser.END_TAG) {
11110      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11111        res.setNameElement(parseString(xpp));
11112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11113        res.setDescriptionElement(parseString(xpp));
11114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
11115        res.setDuration(parseDuration(xpp));
11116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precondition")) {
11117        res.setPrecondition(parseProtocolProtocolStepPreconditionComponent(xpp, owner));
11118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exit")) {
11119        res.setExit(parseProtocolProtocolStepPreconditionComponent(xpp, owner));
11120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("firstActivity")) {
11121        res.setFirstActivityElement(parseUri(xpp));
11122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
11123        res.getActivity().add(parseProtocolProtocolStepActivityComponent(xpp, owner));
11124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("next")) {
11125        res.getNext().add(parseProtocolProtocolStepNextComponent(xpp, owner));
11126      } else if (!parseBackboneContent(eventType, xpp, res))
11127        unknownContent(xpp);
11128      eventType = nextNoWhitespace(xpp);
11129    }
11130    next(xpp);
11131    parseElementClose(res);
11132    return res;
11133  }
11134
11135  protected Protocol.ProtocolStepPreconditionComponent parseProtocolProtocolStepPreconditionComponent(XmlPullParser xpp, Protocol owner) throws XmlPullParserException, IOException, FHIRFormatError {
11136    Protocol.ProtocolStepPreconditionComponent res = new Protocol.ProtocolStepPreconditionComponent();
11137    parseBackboneAttributes(xpp, res);
11138    next(xpp);
11139    int eventType = nextNoWhitespace(xpp);
11140    while (eventType != XmlPullParser.END_TAG) {
11141      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11142        res.setDescriptionElement(parseString(xpp));
11143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
11144        res.setCondition(parseProtocolProtocolStepPreconditionConditionComponent(xpp, owner));
11145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intersection")) {
11146        res.getIntersection().add(parseProtocolProtocolStepPreconditionComponent(xpp, owner));
11147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("union")) {
11148        res.getUnion().add(parseProtocolProtocolStepPreconditionComponent(xpp, owner));
11149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
11150        res.getExclude().add(parseProtocolProtocolStepPreconditionComponent(xpp, owner));
11151      } else if (!parseBackboneContent(eventType, xpp, res))
11152        unknownContent(xpp);
11153      eventType = nextNoWhitespace(xpp);
11154    }
11155    next(xpp);
11156    parseElementClose(res);
11157    return res;
11158  }
11159
11160  protected Protocol.ProtocolStepPreconditionConditionComponent parseProtocolProtocolStepPreconditionConditionComponent(XmlPullParser xpp, Protocol owner) throws XmlPullParserException, IOException, FHIRFormatError {
11161    Protocol.ProtocolStepPreconditionConditionComponent res = new Protocol.ProtocolStepPreconditionConditionComponent();
11162    parseBackboneAttributes(xpp, res);
11163    next(xpp);
11164    int eventType = nextNoWhitespace(xpp);
11165    while (eventType != XmlPullParser.END_TAG) {
11166      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11167        res.setType(parseCodeableConcept(xpp));
11168      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
11169        res.setValue(parseType("value", xpp));
11170      } else if (!parseBackboneContent(eventType, xpp, res))
11171        unknownContent(xpp);
11172      eventType = nextNoWhitespace(xpp);
11173    }
11174    next(xpp);
11175    parseElementClose(res);
11176    return res;
11177  }
11178
11179  protected Protocol.ProtocolStepActivityComponent parseProtocolProtocolStepActivityComponent(XmlPullParser xpp, Protocol owner) throws XmlPullParserException, IOException, FHIRFormatError {
11180    Protocol.ProtocolStepActivityComponent res = new Protocol.ProtocolStepActivityComponent();
11181    parseBackboneAttributes(xpp, res);
11182    next(xpp);
11183    int eventType = nextNoWhitespace(xpp);
11184    while (eventType != XmlPullParser.END_TAG) {
11185      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternative")) {
11186        res.getAlternative().add(parseUri(xpp));
11187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
11188        res.getComponent().add(parseProtocolProtocolStepActivityComponentComponent(xpp, owner));
11189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("following")) {
11190        res.getFollowing().add(parseUri(xpp));
11191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wait")) {
11192        res.setWait(parseDuration(xpp));
11193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
11194        res.setDetail(parseProtocolProtocolStepActivityDetailComponent(xpp, owner));
11195      } else if (!parseBackboneContent(eventType, xpp, res))
11196        unknownContent(xpp);
11197      eventType = nextNoWhitespace(xpp);
11198    }
11199    next(xpp);
11200    parseElementClose(res);
11201    return res;
11202  }
11203
11204  protected Protocol.ProtocolStepActivityComponentComponent parseProtocolProtocolStepActivityComponentComponent(XmlPullParser xpp, Protocol owner) throws XmlPullParserException, IOException, FHIRFormatError {
11205    Protocol.ProtocolStepActivityComponentComponent res = new Protocol.ProtocolStepActivityComponentComponent();
11206    parseBackboneAttributes(xpp, res);
11207    next(xpp);
11208    int eventType = nextNoWhitespace(xpp);
11209    while (eventType != XmlPullParser.END_TAG) {
11210      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
11211        res.setSequenceElement(parseInteger(xpp));
11212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
11213        res.setActivityElement(parseUri(xpp));
11214      } else if (!parseBackboneContent(eventType, xpp, res))
11215        unknownContent(xpp);
11216      eventType = nextNoWhitespace(xpp);
11217    }
11218    next(xpp);
11219    parseElementClose(res);
11220    return res;
11221  }
11222
11223  protected Protocol.ProtocolStepActivityDetailComponent parseProtocolProtocolStepActivityDetailComponent(XmlPullParser xpp, Protocol owner) throws XmlPullParserException, IOException, FHIRFormatError {
11224    Protocol.ProtocolStepActivityDetailComponent res = new Protocol.ProtocolStepActivityDetailComponent();
11225    parseBackboneAttributes(xpp, res);
11226    next(xpp);
11227    int eventType = nextNoWhitespace(xpp);
11228    while (eventType != XmlPullParser.END_TAG) {
11229      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11230        res.setCategoryElement(parseEnumeration(xpp, Protocol.ActivityDefinitionCategory.NULL, new Protocol.ActivityDefinitionCategoryEnumFactory()));
11231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11232        res.setCode(parseCodeableConcept(xpp));
11233      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
11234        res.setTiming(parseType("timing", xpp));
11235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11236        res.setLocation(parseReference(xpp));
11237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11238        res.getPerformer().add(parseReference(xpp));
11239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
11240        res.setProduct(parseReference(xpp));
11241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11242        res.setQuantity(parseSimpleQuantity(xpp));
11243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11244        res.setDescriptionElement(parseString(xpp));
11245      } else if (!parseBackboneContent(eventType, xpp, res))
11246        unknownContent(xpp);
11247      eventType = nextNoWhitespace(xpp);
11248    }
11249    next(xpp);
11250    parseElementClose(res);
11251    return res;
11252  }
11253
11254  protected Protocol.ProtocolStepNextComponent parseProtocolProtocolStepNextComponent(XmlPullParser xpp, Protocol owner) throws XmlPullParserException, IOException, FHIRFormatError {
11255    Protocol.ProtocolStepNextComponent res = new Protocol.ProtocolStepNextComponent();
11256    parseBackboneAttributes(xpp, res);
11257    next(xpp);
11258    int eventType = nextNoWhitespace(xpp);
11259    while (eventType != XmlPullParser.END_TAG) {
11260      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11261        res.setDescriptionElement(parseString(xpp));
11262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
11263        res.setReferenceElement(parseUri(xpp));
11264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
11265        res.setCondition(parseProtocolProtocolStepPreconditionComponent(xpp, owner));
11266      } else if (!parseBackboneContent(eventType, xpp, res))
11267        unknownContent(xpp);
11268      eventType = nextNoWhitespace(xpp);
11269    }
11270    next(xpp);
11271    parseElementClose(res);
11272    return res;
11273  }
11274
11275  protected Provenance parseProvenance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11276    Provenance res = new Provenance();
11277    parseDomainResourceAttributes(xpp, res);
11278    next(xpp);
11279    int eventType = nextNoWhitespace(xpp);
11280    while (eventType != XmlPullParser.END_TAG) {
11281      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
11282        res.getTarget().add(parseReference(xpp));
11283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11284        res.setPeriod(parsePeriod(xpp));
11285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
11286        res.setRecordedElement(parseInstant(xpp));
11287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11288        res.getReason().add(parseCoding(xpp));
11289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
11290        res.setActivity(parseCoding(xpp));
11291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11292        res.setLocation(parseReference(xpp));
11293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
11294        res.getPolicy().add(parseUri(xpp));
11295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
11296        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, res));
11297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
11298        res.getEntity().add(parseProvenanceProvenanceEntityComponent(xpp, res));
11299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
11300        res.getSignature().add(parseSignature(xpp));
11301      } else if (!parseDomainResourceContent(eventType, xpp, res))
11302        unknownContent(xpp);
11303      eventType = nextNoWhitespace(xpp);
11304    }
11305    next(xpp);
11306    parseElementClose(res);
11307    return res;
11308  }
11309
11310  protected Provenance.ProvenanceAgentComponent parseProvenanceProvenanceAgentComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
11311    Provenance.ProvenanceAgentComponent res = new Provenance.ProvenanceAgentComponent();
11312    parseBackboneAttributes(xpp, res);
11313    next(xpp);
11314    int eventType = nextNoWhitespace(xpp);
11315    while (eventType != XmlPullParser.END_TAG) {
11316      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
11317        res.setRole(parseCoding(xpp));
11318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11319        res.setActor(parseReference(xpp));
11320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userId")) {
11321        res.setUserId(parseIdentifier(xpp));
11322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAgent")) {
11323        res.getRelatedAgent().add(parseProvenanceProvenanceAgentRelatedAgentComponent(xpp, owner));
11324      } else if (!parseBackboneContent(eventType, xpp, res))
11325        unknownContent(xpp);
11326      eventType = nextNoWhitespace(xpp);
11327    }
11328    next(xpp);
11329    parseElementClose(res);
11330    return res;
11331  }
11332
11333  protected Provenance.ProvenanceAgentRelatedAgentComponent parseProvenanceProvenanceAgentRelatedAgentComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
11334    Provenance.ProvenanceAgentRelatedAgentComponent res = new Provenance.ProvenanceAgentRelatedAgentComponent();
11335    parseBackboneAttributes(xpp, res);
11336    next(xpp);
11337    int eventType = nextNoWhitespace(xpp);
11338    while (eventType != XmlPullParser.END_TAG) {
11339      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11340        res.setType(parseCodeableConcept(xpp));
11341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
11342        res.setTargetElement(parseUri(xpp));
11343      } else if (!parseBackboneContent(eventType, xpp, res))
11344        unknownContent(xpp);
11345      eventType = nextNoWhitespace(xpp);
11346    }
11347    next(xpp);
11348    parseElementClose(res);
11349    return res;
11350  }
11351
11352  protected Provenance.ProvenanceEntityComponent parseProvenanceProvenanceEntityComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
11353    Provenance.ProvenanceEntityComponent res = new Provenance.ProvenanceEntityComponent();
11354    parseBackboneAttributes(xpp, res);
11355    next(xpp);
11356    int eventType = nextNoWhitespace(xpp);
11357    while (eventType != XmlPullParser.END_TAG) {
11358      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
11359        res.setRoleElement(parseEnumeration(xpp, Provenance.ProvenanceEntityRole.NULL, new Provenance.ProvenanceEntityRoleEnumFactory()));
11360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11361        res.setType(parseCoding(xpp));
11362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
11363        res.setReferenceElement(parseUri(xpp));
11364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
11365        res.setDisplayElement(parseString(xpp));
11366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
11367        res.setAgent(parseProvenanceProvenanceAgentComponent(xpp, owner));
11368      } else if (!parseBackboneContent(eventType, xpp, res))
11369        unknownContent(xpp);
11370      eventType = nextNoWhitespace(xpp);
11371    }
11372    next(xpp);
11373    parseElementClose(res);
11374    return res;
11375  }
11376
11377  protected Questionnaire parseQuestionnaire(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11378    Questionnaire res = new Questionnaire();
11379    parseDomainResourceAttributes(xpp, res);
11380    next(xpp);
11381    int eventType = nextNoWhitespace(xpp);
11382    while (eventType != XmlPullParser.END_TAG) {
11383      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
11384        res.setUrlElement(parseUri(xpp));
11385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11386        res.getIdentifier().add(parseIdentifier(xpp));
11387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11388        res.setVersionElement(parseString(xpp));
11389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11390        res.setStatusElement(parseEnumeration(xpp, Questionnaire.QuestionnaireStatus.NULL, new Questionnaire.QuestionnaireStatusEnumFactory()));
11391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11392        res.setDateElement(parseDateTime(xpp));
11393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11394        res.setPublisherElement(parseString(xpp));
11395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
11396        res.getTelecom().add(parseContactPoint(xpp));
11397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11398        res.getUseContext().add(parseCodeableConcept(xpp));
11399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11400        res.setTitleElement(parseString(xpp));
11401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
11402        res.getConcept().add(parseCoding(xpp));
11403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectType")) {
11404        res.getSubjectType().add(parseCode(xpp));
11405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
11406        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, res));
11407      } else if (!parseDomainResourceContent(eventType, xpp, res))
11408        unknownContent(xpp);
11409      eventType = nextNoWhitespace(xpp);
11410    }
11411    next(xpp);
11412    parseElementClose(res);
11413    return res;
11414  }
11415
11416  protected Questionnaire.QuestionnaireItemComponent parseQuestionnaireQuestionnaireItemComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
11417    Questionnaire.QuestionnaireItemComponent res = new Questionnaire.QuestionnaireItemComponent();
11418    parseBackboneAttributes(xpp, res);
11419    next(xpp);
11420    int eventType = nextNoWhitespace(xpp);
11421    while (eventType != XmlPullParser.END_TAG) {
11422      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
11423        res.setLinkIdElement(parseString(xpp));
11424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
11425        res.getConcept().add(parseCoding(xpp));
11426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
11427        res.setPrefixElement(parseString(xpp));
11428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
11429        res.setTextElement(parseString(xpp));
11430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11431        res.setTypeElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemType.NULL, new Questionnaire.QuestionnaireItemTypeEnumFactory()));
11432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableWhen")) {
11433        res.getEnableWhen().add(parseQuestionnaireQuestionnaireItemEnableWhenComponent(xpp, owner));
11434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
11435        res.setRequiredElement(parseBoolean(xpp));
11436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
11437        res.setRepeatsElement(parseBoolean(xpp));
11438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readOnly")) {
11439        res.setReadOnlyElement(parseBoolean(xpp));
11440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
11441        res.setMaxLengthElement(parseInteger(xpp));
11442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("options")) {
11443        res.setOptions(parseReference(xpp));
11444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("option")) {
11445        res.getOption().add(parseQuestionnaireQuestionnaireItemOptionComponent(xpp, owner));
11446      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "initial")) {
11447        res.setInitial(parseType("initial", xpp));
11448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
11449        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, owner));
11450      } else if (!parseBackboneContent(eventType, xpp, res))
11451        unknownContent(xpp);
11452      eventType = nextNoWhitespace(xpp);
11453    }
11454    next(xpp);
11455    parseElementClose(res);
11456    return res;
11457  }
11458
11459  protected Questionnaire.QuestionnaireItemEnableWhenComponent parseQuestionnaireQuestionnaireItemEnableWhenComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
11460    Questionnaire.QuestionnaireItemEnableWhenComponent res = new Questionnaire.QuestionnaireItemEnableWhenComponent();
11461    parseBackboneAttributes(xpp, res);
11462    next(xpp);
11463    int eventType = nextNoWhitespace(xpp);
11464    while (eventType != XmlPullParser.END_TAG) {
11465      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
11466        res.setQuestionElement(parseString(xpp));
11467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answered")) {
11468        res.setAnsweredElement(parseBoolean(xpp));
11469      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "answer")) {
11470        res.setAnswer(parseType("answer", xpp));
11471      } else if (!parseBackboneContent(eventType, xpp, res))
11472        unknownContent(xpp);
11473      eventType = nextNoWhitespace(xpp);
11474    }
11475    next(xpp);
11476    parseElementClose(res);
11477    return res;
11478  }
11479
11480  protected Questionnaire.QuestionnaireItemOptionComponent parseQuestionnaireQuestionnaireItemOptionComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
11481    Questionnaire.QuestionnaireItemOptionComponent res = new Questionnaire.QuestionnaireItemOptionComponent();
11482    parseBackboneAttributes(xpp, res);
11483    next(xpp);
11484    int eventType = nextNoWhitespace(xpp);
11485    while (eventType != XmlPullParser.END_TAG) {
11486      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
11487        res.setValue(parseType("value", xpp));
11488      } else if (!parseBackboneContent(eventType, xpp, res))
11489        unknownContent(xpp);
11490      eventType = nextNoWhitespace(xpp);
11491    }
11492    next(xpp);
11493    parseElementClose(res);
11494    return res;
11495  }
11496
11497  protected QuestionnaireResponse parseQuestionnaireResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11498    QuestionnaireResponse res = new QuestionnaireResponse();
11499    parseDomainResourceAttributes(xpp, res);
11500    next(xpp);
11501    int eventType = nextNoWhitespace(xpp);
11502    while (eventType != XmlPullParser.END_TAG) {
11503      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11504        res.setIdentifier(parseIdentifier(xpp));
11505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("questionnaire")) {
11506        res.setQuestionnaire(parseReference(xpp));
11507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11508        res.setStatusElement(parseEnumeration(xpp, QuestionnaireResponse.QuestionnaireResponseStatus.NULL, new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory()));
11509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11510        res.setSubject(parseReference(xpp));
11511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
11512        res.setAuthor(parseReference(xpp));
11513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authored")) {
11514        res.setAuthoredElement(parseDateTime(xpp));
11515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
11516        res.setSource(parseReference(xpp));
11517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11518        res.setEncounter(parseReference(xpp));
11519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
11520        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, res));
11521      } else if (!parseDomainResourceContent(eventType, xpp, res))
11522        unknownContent(xpp);
11523      eventType = nextNoWhitespace(xpp);
11524    }
11525    next(xpp);
11526    parseElementClose(res);
11527    return res;
11528  }
11529
11530  protected QuestionnaireResponse.QuestionnaireResponseItemComponent parseQuestionnaireResponseQuestionnaireResponseItemComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
11531    QuestionnaireResponse.QuestionnaireResponseItemComponent res = new QuestionnaireResponse.QuestionnaireResponseItemComponent();
11532    parseBackboneAttributes(xpp, res);
11533    next(xpp);
11534    int eventType = nextNoWhitespace(xpp);
11535    while (eventType != XmlPullParser.END_TAG) {
11536      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
11537        res.setLinkIdElement(parseString(xpp));
11538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
11539        res.setTextElement(parseString(xpp));
11540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11541        res.setSubject(parseReference(xpp));
11542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
11543        res.getAnswer().add(parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(xpp, owner));
11544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
11545        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
11546      } else if (!parseBackboneContent(eventType, xpp, res))
11547        unknownContent(xpp);
11548      eventType = nextNoWhitespace(xpp);
11549    }
11550    next(xpp);
11551    parseElementClose(res);
11552    return res;
11553  }
11554
11555  protected QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
11556    QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res = new QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent();
11557    parseBackboneAttributes(xpp, res);
11558    next(xpp);
11559    int eventType = nextNoWhitespace(xpp);
11560    while (eventType != XmlPullParser.END_TAG) {
11561      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
11562        res.setValue(parseType("value", xpp));
11563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
11564        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
11565      } else if (!parseBackboneContent(eventType, xpp, res))
11566        unknownContent(xpp);
11567      eventType = nextNoWhitespace(xpp);
11568    }
11569    next(xpp);
11570    parseElementClose(res);
11571    return res;
11572  }
11573
11574  protected ReferralRequest parseReferralRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11575    ReferralRequest res = new ReferralRequest();
11576    parseDomainResourceAttributes(xpp, res);
11577    next(xpp);
11578    int eventType = nextNoWhitespace(xpp);
11579    while (eventType != XmlPullParser.END_TAG) {
11580      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11581        res.getIdentifier().add(parseIdentifier(xpp));
11582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11583        res.getBasedOn().add(parseReference(xpp));
11584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
11585        res.setParent(parseIdentifier(xpp));
11586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11587        res.setStatusElement(parseEnumeration(xpp, ReferralRequest.ReferralStatus.NULL, new ReferralRequest.ReferralStatusEnumFactory()));
11588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11589        res.setCategoryElement(parseEnumeration(xpp, ReferralRequest.ReferralCategory.NULL, new ReferralRequest.ReferralCategoryEnumFactory()));
11590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11591        res.setType(parseCodeableConcept(xpp));
11592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
11593        res.setPriority(parseCodeableConcept(xpp));
11594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11595        res.setPatient(parseReference(xpp));
11596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11597        res.setContext(parseReference(xpp));
11598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fulfillmentTime")) {
11599        res.setFulfillmentTime(parsePeriod(xpp));
11600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authored")) {
11601        res.setAuthoredElement(parseDateTime(xpp));
11602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
11603        res.setRequester(parseReference(xpp));
11604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
11605        res.setSpecialty(parseCodeableConcept(xpp));
11606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
11607        res.getRecipient().add(parseReference(xpp));
11608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11609        res.setReason(parseCodeableConcept(xpp));
11610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11611        res.setDescriptionElement(parseString(xpp));
11612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceRequested")) {
11613        res.getServiceRequested().add(parseCodeableConcept(xpp));
11614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
11615        res.getSupportingInformation().add(parseReference(xpp));
11616      } else if (!parseDomainResourceContent(eventType, xpp, res))
11617        unknownContent(xpp);
11618      eventType = nextNoWhitespace(xpp);
11619    }
11620    next(xpp);
11621    parseElementClose(res);
11622    return res;
11623  }
11624
11625  protected RelatedPerson parseRelatedPerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11626    RelatedPerson res = new RelatedPerson();
11627    parseDomainResourceAttributes(xpp, res);
11628    next(xpp);
11629    int eventType = nextNoWhitespace(xpp);
11630    while (eventType != XmlPullParser.END_TAG) {
11631      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11632        res.getIdentifier().add(parseIdentifier(xpp));
11633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11634        res.setPatient(parseReference(xpp));
11635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
11636        res.setRelationship(parseCodeableConcept(xpp));
11637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11638        res.setName(parseHumanName(xpp));
11639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
11640        res.getTelecom().add(parseContactPoint(xpp));
11641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
11642        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
11643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
11644        res.setBirthDateElement(parseDate(xpp));
11645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
11646        res.getAddress().add(parseAddress(xpp));
11647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
11648        res.getPhoto().add(parseAttachment(xpp));
11649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11650        res.setPeriod(parsePeriod(xpp));
11651      } else if (!parseDomainResourceContent(eventType, xpp, res))
11652        unknownContent(xpp);
11653      eventType = nextNoWhitespace(xpp);
11654    }
11655    next(xpp);
11656    parseElementClose(res);
11657    return res;
11658  }
11659
11660  protected RiskAssessment parseRiskAssessment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11661    RiskAssessment res = new RiskAssessment();
11662    parseDomainResourceAttributes(xpp, res);
11663    next(xpp);
11664    int eventType = nextNoWhitespace(xpp);
11665    while (eventType != XmlPullParser.END_TAG) {
11666      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11667        res.setSubject(parseReference(xpp));
11668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11669        res.setDateElement(parseDateTime(xpp));
11670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
11671        res.setCondition(parseReference(xpp));
11672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11673        res.setEncounter(parseReference(xpp));
11674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11675        res.setPerformer(parseReference(xpp));
11676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11677        res.setIdentifier(parseIdentifier(xpp));
11678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
11679        res.setMethod(parseCodeableConcept(xpp));
11680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
11681        res.getBasis().add(parseReference(xpp));
11682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prediction")) {
11683        res.getPrediction().add(parseRiskAssessmentRiskAssessmentPredictionComponent(xpp, res));
11684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
11685        res.setMitigationElement(parseString(xpp));
11686      } else if (!parseDomainResourceContent(eventType, xpp, res))
11687        unknownContent(xpp);
11688      eventType = nextNoWhitespace(xpp);
11689    }
11690    next(xpp);
11691    parseElementClose(res);
11692    return res;
11693  }
11694
11695  protected RiskAssessment.RiskAssessmentPredictionComponent parseRiskAssessmentRiskAssessmentPredictionComponent(XmlPullParser xpp, RiskAssessment owner) throws XmlPullParserException, IOException, FHIRFormatError {
11696    RiskAssessment.RiskAssessmentPredictionComponent res = new RiskAssessment.RiskAssessmentPredictionComponent();
11697    parseBackboneAttributes(xpp, res);
11698    next(xpp);
11699    int eventType = nextNoWhitespace(xpp);
11700    while (eventType != XmlPullParser.END_TAG) {
11701      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
11702        res.setOutcome(parseCodeableConcept(xpp));
11703      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "probability")) {
11704        res.setProbability(parseType("probability", xpp));
11705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativeRisk")) {
11706        res.setRelativeRiskElement(parseDecimal(xpp));
11707      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
11708        res.setWhen(parseType("when", xpp));
11709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
11710        res.setRationaleElement(parseString(xpp));
11711      } else if (!parseBackboneContent(eventType, xpp, res))
11712        unknownContent(xpp);
11713      eventType = nextNoWhitespace(xpp);
11714    }
11715    next(xpp);
11716    parseElementClose(res);
11717    return res;
11718  }
11719
11720  protected Schedule parseSchedule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11721    Schedule res = new Schedule();
11722    parseDomainResourceAttributes(xpp, res);
11723    next(xpp);
11724    int eventType = nextNoWhitespace(xpp);
11725    while (eventType != XmlPullParser.END_TAG) {
11726      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11727        res.getIdentifier().add(parseIdentifier(xpp));
11728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
11729        res.setServiceCategory(parseCodeableConcept(xpp));
11730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
11731        res.getServiceType().add(parseCodeableConcept(xpp));
11732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
11733        res.getSpecialty().add(parseCodeableConcept(xpp));
11734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11735        res.setActor(parseReference(xpp));
11736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planningHorizon")) {
11737        res.setPlanningHorizon(parsePeriod(xpp));
11738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
11739        res.setCommentElement(parseString(xpp));
11740      } else if (!parseDomainResourceContent(eventType, xpp, res))
11741        unknownContent(xpp);
11742      eventType = nextNoWhitespace(xpp);
11743    }
11744    next(xpp);
11745    parseElementClose(res);
11746    return res;
11747  }
11748
11749  protected SearchParameter parseSearchParameter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11750    SearchParameter res = new SearchParameter();
11751    parseDomainResourceAttributes(xpp, res);
11752    next(xpp);
11753    int eventType = nextNoWhitespace(xpp);
11754    while (eventType != XmlPullParser.END_TAG) {
11755      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
11756        res.setUrlElement(parseUri(xpp));
11757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11758        res.setNameElement(parseString(xpp));
11759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11760        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
11761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
11762        res.setExperimentalElement(parseBoolean(xpp));
11763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11764        res.setDateElement(parseDateTime(xpp));
11765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11766        res.setPublisherElement(parseString(xpp));
11767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11768        res.getContact().add(parseSearchParameterSearchParameterContactComponent(xpp, res));
11769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11770        res.getUseContext().add(parseCodeableConcept(xpp));
11771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
11772        res.setRequirementsElement(parseString(xpp));
11773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11774        res.setCodeElement(parseCode(xpp));
11775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
11776        res.setBaseElement(parseCode(xpp));
11777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11778        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
11779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11780        res.setDescriptionElement(parseString(xpp));
11781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
11782        res.setExpressionElement(parseString(xpp));
11783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
11784        res.setXpathElement(parseString(xpp));
11785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpathUsage")) {
11786        res.setXpathUsageElement(parseEnumeration(xpp, SearchParameter.XPathUsageType.NULL, new SearchParameter.XPathUsageTypeEnumFactory()));
11787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
11788        res.getTarget().add(parseCode(xpp));
11789      } else if (!parseDomainResourceContent(eventType, xpp, res))
11790        unknownContent(xpp);
11791      eventType = nextNoWhitespace(xpp);
11792    }
11793    next(xpp);
11794    parseElementClose(res);
11795    return res;
11796  }
11797
11798  protected SearchParameter.SearchParameterContactComponent parseSearchParameterSearchParameterContactComponent(XmlPullParser xpp, SearchParameter owner) throws XmlPullParserException, IOException, FHIRFormatError {
11799    SearchParameter.SearchParameterContactComponent res = new SearchParameter.SearchParameterContactComponent();
11800    parseBackboneAttributes(xpp, res);
11801    next(xpp);
11802    int eventType = nextNoWhitespace(xpp);
11803    while (eventType != XmlPullParser.END_TAG) {
11804      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11805        res.setNameElement(parseString(xpp));
11806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
11807        res.getTelecom().add(parseContactPoint(xpp));
11808      } else if (!parseBackboneContent(eventType, xpp, res))
11809        unknownContent(xpp);
11810      eventType = nextNoWhitespace(xpp);
11811    }
11812    next(xpp);
11813    parseElementClose(res);
11814    return res;
11815  }
11816
11817  protected Sequence parseSequence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11818    Sequence res = new Sequence();
11819    parseDomainResourceAttributes(xpp, res);
11820    next(xpp);
11821    int eventType = nextNoWhitespace(xpp);
11822    while (eventType != XmlPullParser.END_TAG) {
11823      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11824        res.setTypeElement(parseEnumeration(xpp, Sequence.SequenceType.NULL, new Sequence.SequenceTypeEnumFactory()));
11825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11826        res.setPatient(parseReference(xpp));
11827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
11828        res.setSpecimen(parseReference(xpp));
11829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
11830        res.setDevice(parseReference(xpp));
11831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11832        res.setQuantity(parseQuantity(xpp));
11833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
11834        res.setSpecies(parseCodeableConcept(xpp));
11835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeq")) {
11836        res.getReferenceSeq().add(parseSequenceSequenceReferenceSeqComponent(xpp, res));
11837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variation")) {
11838        res.setVariation(parseSequenceSequenceVariationComponent(xpp, res));
11839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quality")) {
11840        res.getQuality().add(parseSequenceSequenceQualityComponent(xpp, res));
11841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allelicState")) {
11842        res.setAllelicState(parseCodeableConcept(xpp));
11843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allelicFrequency")) {
11844        res.setAllelicFrequencyElement(parseDecimal(xpp));
11845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyNumberEvent")) {
11846        res.setCopyNumberEvent(parseCodeableConcept(xpp));
11847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readCoverage")) {
11848        res.setReadCoverageElement(parseInteger(xpp));
11849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repository")) {
11850        res.getRepository().add(parseSequenceSequenceRepositoryComponent(xpp, res));
11851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pointer")) {
11852        res.getPointer().add(parseReference(xpp));
11853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedSeq")) {
11854        res.setObservedSeqElement(parseString(xpp));
11855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observation")) {
11856        res.setObservation(parseReference(xpp));
11857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structureVariation")) {
11858        res.setStructureVariation(parseSequenceSequenceStructureVariationComponent(xpp, res));
11859      } else if (!parseDomainResourceContent(eventType, xpp, res))
11860        unknownContent(xpp);
11861      eventType = nextNoWhitespace(xpp);
11862    }
11863    next(xpp);
11864    parseElementClose(res);
11865    return res;
11866  }
11867
11868  protected Sequence.SequenceReferenceSeqComponent parseSequenceSequenceReferenceSeqComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
11869    Sequence.SequenceReferenceSeqComponent res = new Sequence.SequenceReferenceSeqComponent();
11870    parseBackboneAttributes(xpp, res);
11871    next(xpp);
11872    int eventType = nextNoWhitespace(xpp);
11873    while (eventType != XmlPullParser.END_TAG) {
11874      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chromosome")) {
11875        res.setChromosome(parseCodeableConcept(xpp));
11876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genomeBuild")) {
11877        res.setGenomeBuildElement(parseString(xpp));
11878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqId")) {
11879        res.setReferenceSeqId(parseCodeableConcept(xpp));
11880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqPointer")) {
11881        res.setReferenceSeqPointer(parseReference(xpp));
11882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqString")) {
11883        res.setReferenceSeqStringElement(parseString(xpp));
11884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowStart")) {
11885        res.setWindowStartElement(parseInteger(xpp));
11886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowEnd")) {
11887        res.setWindowEndElement(parseInteger(xpp));
11888      } else if (!parseBackboneContent(eventType, xpp, res))
11889        unknownContent(xpp);
11890      eventType = nextNoWhitespace(xpp);
11891    }
11892    next(xpp);
11893    parseElementClose(res);
11894    return res;
11895  }
11896
11897  protected Sequence.SequenceVariationComponent parseSequenceSequenceVariationComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
11898    Sequence.SequenceVariationComponent res = new Sequence.SequenceVariationComponent();
11899    parseBackboneAttributes(xpp, res);
11900    next(xpp);
11901    int eventType = nextNoWhitespace(xpp);
11902    while (eventType != XmlPullParser.END_TAG) {
11903      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
11904        res.setStartElement(parseInteger(xpp));
11905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
11906        res.setEndElement(parseInteger(xpp));
11907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedAllele")) {
11908        res.setObservedAlleleElement(parseString(xpp));
11909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceAllele")) {
11910        res.setReferenceAlleleElement(parseString(xpp));
11911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cigar")) {
11912        res.setCigarElement(parseString(xpp));
11913      } else if (!parseBackboneContent(eventType, xpp, res))
11914        unknownContent(xpp);
11915      eventType = nextNoWhitespace(xpp);
11916    }
11917    next(xpp);
11918    parseElementClose(res);
11919    return res;
11920  }
11921
11922  protected Sequence.SequenceQualityComponent parseSequenceSequenceQualityComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
11923    Sequence.SequenceQualityComponent res = new Sequence.SequenceQualityComponent();
11924    parseBackboneAttributes(xpp, res);
11925    next(xpp);
11926    int eventType = nextNoWhitespace(xpp);
11927    while (eventType != XmlPullParser.END_TAG) {
11928      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
11929        res.setStartElement(parseInteger(xpp));
11930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
11931        res.setEndElement(parseInteger(xpp));
11932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
11933        res.setScore(parseQuantity(xpp));
11934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
11935        res.setMethodElement(parseString(xpp));
11936      } else if (!parseBackboneContent(eventType, xpp, res))
11937        unknownContent(xpp);
11938      eventType = nextNoWhitespace(xpp);
11939    }
11940    next(xpp);
11941    parseElementClose(res);
11942    return res;
11943  }
11944
11945  protected Sequence.SequenceRepositoryComponent parseSequenceSequenceRepositoryComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
11946    Sequence.SequenceRepositoryComponent res = new Sequence.SequenceRepositoryComponent();
11947    parseBackboneAttributes(xpp, res);
11948    next(xpp);
11949    int eventType = nextNoWhitespace(xpp);
11950    while (eventType != XmlPullParser.END_TAG) {
11951      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
11952        res.setUrlElement(parseUri(xpp));
11953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11954        res.setNameElement(parseString(xpp));
11955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantId")) {
11956        res.setVariantIdElement(parseString(xpp));
11957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readId")) {
11958        res.setReadIdElement(parseString(xpp));
11959      } else if (!parseBackboneContent(eventType, xpp, res))
11960        unknownContent(xpp);
11961      eventType = nextNoWhitespace(xpp);
11962    }
11963    next(xpp);
11964    parseElementClose(res);
11965    return res;
11966  }
11967
11968  protected Sequence.SequenceStructureVariationComponent parseSequenceSequenceStructureVariationComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
11969    Sequence.SequenceStructureVariationComponent res = new Sequence.SequenceStructureVariationComponent();
11970    parseBackboneAttributes(xpp, res);
11971    next(xpp);
11972    int eventType = nextNoWhitespace(xpp);
11973    while (eventType != XmlPullParser.END_TAG) {
11974      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precisionOfBoundaries")) {
11975        res.setPrecisionOfBoundariesElement(parseString(xpp));
11976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportedaCGHRatio")) {
11977        res.setReportedaCGHRatioElement(parseDecimal(xpp));
11978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
11979        res.setLengthElement(parseInteger(xpp));
11980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outer")) {
11981        res.setOuter(parseSequenceSequenceStructureVariationOuterComponent(xpp, owner));
11982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inner")) {
11983        res.setInner(parseSequenceSequenceStructureVariationInnerComponent(xpp, owner));
11984      } else if (!parseBackboneContent(eventType, xpp, res))
11985        unknownContent(xpp);
11986      eventType = nextNoWhitespace(xpp);
11987    }
11988    next(xpp);
11989    parseElementClose(res);
11990    return res;
11991  }
11992
11993  protected Sequence.SequenceStructureVariationOuterComponent parseSequenceSequenceStructureVariationOuterComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
11994    Sequence.SequenceStructureVariationOuterComponent res = new Sequence.SequenceStructureVariationOuterComponent();
11995    parseBackboneAttributes(xpp, res);
11996    next(xpp);
11997    int eventType = nextNoWhitespace(xpp);
11998    while (eventType != XmlPullParser.END_TAG) {
11999      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
12000        res.setStartElement(parseInteger(xpp));
12001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
12002        res.setEndElement(parseInteger(xpp));
12003      } else if (!parseBackboneContent(eventType, xpp, res))
12004        unknownContent(xpp);
12005      eventType = nextNoWhitespace(xpp);
12006    }
12007    next(xpp);
12008    parseElementClose(res);
12009    return res;
12010  }
12011
12012  protected Sequence.SequenceStructureVariationInnerComponent parseSequenceSequenceStructureVariationInnerComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
12013    Sequence.SequenceStructureVariationInnerComponent res = new Sequence.SequenceStructureVariationInnerComponent();
12014    parseBackboneAttributes(xpp, res);
12015    next(xpp);
12016    int eventType = nextNoWhitespace(xpp);
12017    while (eventType != XmlPullParser.END_TAG) {
12018      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
12019        res.setStartElement(parseInteger(xpp));
12020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
12021        res.setEndElement(parseInteger(xpp));
12022      } else if (!parseBackboneContent(eventType, xpp, res))
12023        unknownContent(xpp);
12024      eventType = nextNoWhitespace(xpp);
12025    }
12026    next(xpp);
12027    parseElementClose(res);
12028    return res;
12029  }
12030
12031  protected Slot parseSlot(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12032    Slot res = new Slot();
12033    parseDomainResourceAttributes(xpp, res);
12034    next(xpp);
12035    int eventType = nextNoWhitespace(xpp);
12036    while (eventType != XmlPullParser.END_TAG) {
12037      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12038        res.getIdentifier().add(parseIdentifier(xpp));
12039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
12040        res.setServiceCategory(parseCodeableConcept(xpp));
12041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
12042        res.getServiceType().add(parseCodeableConcept(xpp));
12043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
12044        res.getSpecialty().add(parseCodeableConcept(xpp));
12045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
12046        res.setAppointmentType(parseCodeableConcept(xpp));
12047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
12048        res.setSchedule(parseReference(xpp));
12049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12050        res.setStatusElement(parseEnumeration(xpp, Slot.SlotStatus.NULL, new Slot.SlotStatusEnumFactory()));
12051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
12052        res.setStartElement(parseInstant(xpp));
12053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
12054        res.setEndElement(parseInstant(xpp));
12055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overbooked")) {
12056        res.setOverbookedElement(parseBoolean(xpp));
12057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12058        res.setCommentElement(parseString(xpp));
12059      } else if (!parseDomainResourceContent(eventType, xpp, res))
12060        unknownContent(xpp);
12061      eventType = nextNoWhitespace(xpp);
12062    }
12063    next(xpp);
12064    parseElementClose(res);
12065    return res;
12066  }
12067
12068  protected Specimen parseSpecimen(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12069    Specimen res = new Specimen();
12070    parseDomainResourceAttributes(xpp, res);
12071    next(xpp);
12072    int eventType = nextNoWhitespace(xpp);
12073    while (eventType != XmlPullParser.END_TAG) {
12074      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12075        res.getIdentifier().add(parseIdentifier(xpp));
12076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionIdentifier")) {
12077        res.setAccessionIdentifier(parseIdentifier(xpp));
12078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12079        res.setStatusElement(parseEnumeration(xpp, Specimen.SpecimenStatus.NULL, new Specimen.SpecimenStatusEnumFactory()));
12080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12081        res.setType(parseCodeableConcept(xpp));
12082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12083        res.setSubject(parseReference(xpp));
12084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receivedTime")) {
12085        res.setReceivedTimeElement(parseDateTime(xpp));
12086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
12087        res.getParent().add(parseReference(xpp));
12088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
12089        res.setCollection(parseSpecimenSpecimenCollectionComponent(xpp, res));
12090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("treatment")) {
12091        res.getTreatment().add(parseSpecimenSpecimenTreatmentComponent(xpp, res));
12092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
12093        res.getContainer().add(parseSpecimenSpecimenContainerComponent(xpp, res));
12094      } else if (!parseDomainResourceContent(eventType, xpp, res))
12095        unknownContent(xpp);
12096      eventType = nextNoWhitespace(xpp);
12097    }
12098    next(xpp);
12099    parseElementClose(res);
12100    return res;
12101  }
12102
12103  protected Specimen.SpecimenCollectionComponent parseSpecimenSpecimenCollectionComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
12104    Specimen.SpecimenCollectionComponent res = new Specimen.SpecimenCollectionComponent();
12105    parseBackboneAttributes(xpp, res);
12106    next(xpp);
12107    int eventType = nextNoWhitespace(xpp);
12108    while (eventType != XmlPullParser.END_TAG) {
12109      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
12110        res.setCollector(parseReference(xpp));
12111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12112        res.setCommentElement(parseString(xpp));
12113      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
12114        res.setCollected(parseType("collected", xpp));
12115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
12116        res.setQuantity(parseSimpleQuantity(xpp));
12117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
12118        res.setMethod(parseCodeableConcept(xpp));
12119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
12120        res.setBodySite(parseCodeableConcept(xpp));
12121      } else if (!parseBackboneContent(eventType, xpp, res))
12122        unknownContent(xpp);
12123      eventType = nextNoWhitespace(xpp);
12124    }
12125    next(xpp);
12126    parseElementClose(res);
12127    return res;
12128  }
12129
12130  protected Specimen.SpecimenTreatmentComponent parseSpecimenSpecimenTreatmentComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
12131    Specimen.SpecimenTreatmentComponent res = new Specimen.SpecimenTreatmentComponent();
12132    parseBackboneAttributes(xpp, res);
12133    next(xpp);
12134    int eventType = nextNoWhitespace(xpp);
12135    while (eventType != XmlPullParser.END_TAG) {
12136      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12137        res.setDescriptionElement(parseString(xpp));
12138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
12139        res.setProcedure(parseCodeableConcept(xpp));
12140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
12141        res.getAdditive().add(parseReference(xpp));
12142      } else if (!parseBackboneContent(eventType, xpp, res))
12143        unknownContent(xpp);
12144      eventType = nextNoWhitespace(xpp);
12145    }
12146    next(xpp);
12147    parseElementClose(res);
12148    return res;
12149  }
12150
12151  protected Specimen.SpecimenContainerComponent parseSpecimenSpecimenContainerComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
12152    Specimen.SpecimenContainerComponent res = new Specimen.SpecimenContainerComponent();
12153    parseBackboneAttributes(xpp, res);
12154    next(xpp);
12155    int eventType = nextNoWhitespace(xpp);
12156    while (eventType != XmlPullParser.END_TAG) {
12157      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12158        res.getIdentifier().add(parseIdentifier(xpp));
12159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12160        res.setDescriptionElement(parseString(xpp));
12161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12162        res.setType(parseCodeableConcept(xpp));
12163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
12164        res.setCapacity(parseSimpleQuantity(xpp));
12165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenQuantity")) {
12166        res.setSpecimenQuantity(parseSimpleQuantity(xpp));
12167      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
12168        res.setAdditive(parseType("additive", xpp));
12169      } else if (!parseBackboneContent(eventType, xpp, res))
12170        unknownContent(xpp);
12171      eventType = nextNoWhitespace(xpp);
12172    }
12173    next(xpp);
12174    parseElementClose(res);
12175    return res;
12176  }
12177
12178  protected StructureDefinition parseStructureDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12179    StructureDefinition res = new StructureDefinition();
12180    parseDomainResourceAttributes(xpp, res);
12181    next(xpp);
12182    int eventType = nextNoWhitespace(xpp);
12183    while (eventType != XmlPullParser.END_TAG) {
12184      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12185        res.setUrlElement(parseUri(xpp));
12186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12187        res.getIdentifier().add(parseIdentifier(xpp));
12188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12189        res.setVersionElement(parseString(xpp));
12190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12191        res.setNameElement(parseString(xpp));
12192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
12193        res.setDisplayElement(parseString(xpp));
12194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12195        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
12196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12197        res.setExperimentalElement(parseBoolean(xpp));
12198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12199        res.setPublisherElement(parseString(xpp));
12200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12201        res.getContact().add(parseStructureDefinitionStructureDefinitionContactComponent(xpp, res));
12202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12203        res.setDateElement(parseDateTime(xpp));
12204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12205        res.setDescriptionElement(parseString(xpp));
12206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12207        res.getUseContext().add(parseCodeableConcept(xpp));
12208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
12209        res.setRequirementsElement(parseString(xpp));
12210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
12211        res.setCopyrightElement(parseString(xpp));
12212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12213        res.getCode().add(parseCoding(xpp));
12214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
12215        res.setFhirVersionElement(parseId(xpp));
12216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
12217        res.getMapping().add(parseStructureDefinitionStructureDefinitionMappingComponent(xpp, res));
12218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
12219        res.setKindElement(parseEnumeration(xpp, StructureDefinition.StructureDefinitionKind.NULL, new StructureDefinition.StructureDefinitionKindEnumFactory()));
12220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
12221        res.setAbstractElement(parseBoolean(xpp));
12222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
12223        res.setContextTypeElement(parseEnumeration(xpp, StructureDefinition.ExtensionContext.NULL, new StructureDefinition.ExtensionContextEnumFactory()));
12224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
12225        res.getContext().add(parseString(xpp));
12226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseType")) {
12227        res.setBaseTypeElement(parseCode(xpp));
12228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseDefinition")) {
12229        res.setBaseDefinitionElement(parseUri(xpp));
12230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivation")) {
12231        res.setDerivationElement(parseEnumeration(xpp, StructureDefinition.TypeDerivationRule.NULL, new StructureDefinition.TypeDerivationRuleEnumFactory()));
12232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("snapshot")) {
12233        res.setSnapshot(parseStructureDefinitionStructureDefinitionSnapshotComponent(xpp, res));
12234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("differential")) {
12235        res.setDifferential(parseStructureDefinitionStructureDefinitionDifferentialComponent(xpp, res));
12236      } else if (!parseDomainResourceContent(eventType, xpp, res))
12237        unknownContent(xpp);
12238      eventType = nextNoWhitespace(xpp);
12239    }
12240    next(xpp);
12241    parseElementClose(res);
12242    return res;
12243  }
12244
12245  protected StructureDefinition.StructureDefinitionContactComponent parseStructureDefinitionStructureDefinitionContactComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12246    StructureDefinition.StructureDefinitionContactComponent res = new StructureDefinition.StructureDefinitionContactComponent();
12247    parseBackboneAttributes(xpp, res);
12248    next(xpp);
12249    int eventType = nextNoWhitespace(xpp);
12250    while (eventType != XmlPullParser.END_TAG) {
12251      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12252        res.setNameElement(parseString(xpp));
12253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12254        res.getTelecom().add(parseContactPoint(xpp));
12255      } else if (!parseBackboneContent(eventType, xpp, res))
12256        unknownContent(xpp);
12257      eventType = nextNoWhitespace(xpp);
12258    }
12259    next(xpp);
12260    parseElementClose(res);
12261    return res;
12262  }
12263
12264  protected StructureDefinition.StructureDefinitionMappingComponent parseStructureDefinitionStructureDefinitionMappingComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12265    StructureDefinition.StructureDefinitionMappingComponent res = new StructureDefinition.StructureDefinitionMappingComponent();
12266    parseBackboneAttributes(xpp, res);
12267    next(xpp);
12268    int eventType = nextNoWhitespace(xpp);
12269    while (eventType != XmlPullParser.END_TAG) {
12270      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
12271        res.setIdentityElement(parseId(xpp));
12272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
12273        res.setUriElement(parseUri(xpp));
12274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12275        res.setNameElement(parseString(xpp));
12276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comments")) {
12277        res.setCommentsElement(parseString(xpp));
12278      } else if (!parseBackboneContent(eventType, xpp, res))
12279        unknownContent(xpp);
12280      eventType = nextNoWhitespace(xpp);
12281    }
12282    next(xpp);
12283    parseElementClose(res);
12284    return res;
12285  }
12286
12287  protected StructureDefinition.StructureDefinitionSnapshotComponent parseStructureDefinitionStructureDefinitionSnapshotComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12288    StructureDefinition.StructureDefinitionSnapshotComponent res = new StructureDefinition.StructureDefinitionSnapshotComponent();
12289    parseBackboneAttributes(xpp, res);
12290    next(xpp);
12291    int eventType = nextNoWhitespace(xpp);
12292    while (eventType != XmlPullParser.END_TAG) {
12293      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
12294        res.getElement().add(parseElementDefinition(xpp));
12295      } else if (!parseBackboneContent(eventType, xpp, res))
12296        unknownContent(xpp);
12297      eventType = nextNoWhitespace(xpp);
12298    }
12299    next(xpp);
12300    parseElementClose(res);
12301    return res;
12302  }
12303
12304  protected StructureDefinition.StructureDefinitionDifferentialComponent parseStructureDefinitionStructureDefinitionDifferentialComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12305    StructureDefinition.StructureDefinitionDifferentialComponent res = new StructureDefinition.StructureDefinitionDifferentialComponent();
12306    parseBackboneAttributes(xpp, res);
12307    next(xpp);
12308    int eventType = nextNoWhitespace(xpp);
12309    while (eventType != XmlPullParser.END_TAG) {
12310      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
12311        res.getElement().add(parseElementDefinition(xpp));
12312      } else if (!parseBackboneContent(eventType, xpp, res))
12313        unknownContent(xpp);
12314      eventType = nextNoWhitespace(xpp);
12315    }
12316    next(xpp);
12317    parseElementClose(res);
12318    return res;
12319  }
12320
12321  protected StructureMap parseStructureMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12322    StructureMap res = new StructureMap();
12323    parseDomainResourceAttributes(xpp, res);
12324    next(xpp);
12325    int eventType = nextNoWhitespace(xpp);
12326    while (eventType != XmlPullParser.END_TAG) {
12327      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12328        res.setUrlElement(parseUri(xpp));
12329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12330        res.getIdentifier().add(parseIdentifier(xpp));
12331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12332        res.setVersionElement(parseString(xpp));
12333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12334        res.setNameElement(parseString(xpp));
12335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12336        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
12337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12338        res.setExperimentalElement(parseBoolean(xpp));
12339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12340        res.setPublisherElement(parseString(xpp));
12341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12342        res.getContact().add(parseStructureMapStructureMapContactComponent(xpp, res));
12343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12344        res.setDateElement(parseDateTime(xpp));
12345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12346        res.setDescriptionElement(parseString(xpp));
12347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12348        res.getUseContext().add(parseCodeableConcept(xpp));
12349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
12350        res.setRequirementsElement(parseString(xpp));
12351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
12352        res.setCopyrightElement(parseString(xpp));
12353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
12354        res.getStructure().add(parseStructureMapStructureMapStructureComponent(xpp, res));
12355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("import")) {
12356        res.getImport().add(parseUri(xpp));
12357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
12358        res.getGroup().add(parseStructureMapStructureMapGroupComponent(xpp, res));
12359      } else if (!parseDomainResourceContent(eventType, xpp, res))
12360        unknownContent(xpp);
12361      eventType = nextNoWhitespace(xpp);
12362    }
12363    next(xpp);
12364    parseElementClose(res);
12365    return res;
12366  }
12367
12368  protected StructureMap.StructureMapContactComponent parseStructureMapStructureMapContactComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
12369    StructureMap.StructureMapContactComponent res = new StructureMap.StructureMapContactComponent();
12370    parseBackboneAttributes(xpp, res);
12371    next(xpp);
12372    int eventType = nextNoWhitespace(xpp);
12373    while (eventType != XmlPullParser.END_TAG) {
12374      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12375        res.setNameElement(parseString(xpp));
12376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12377        res.getTelecom().add(parseContactPoint(xpp));
12378      } else if (!parseBackboneContent(eventType, xpp, res))
12379        unknownContent(xpp);
12380      eventType = nextNoWhitespace(xpp);
12381    }
12382    next(xpp);
12383    parseElementClose(res);
12384    return res;
12385  }
12386
12387  protected StructureMap.StructureMapStructureComponent parseStructureMapStructureMapStructureComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
12388    StructureMap.StructureMapStructureComponent res = new StructureMap.StructureMapStructureComponent();
12389    parseBackboneAttributes(xpp, res);
12390    next(xpp);
12391    int eventType = nextNoWhitespace(xpp);
12392    while (eventType != XmlPullParser.END_TAG) {
12393      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12394        res.setUrlElement(parseUri(xpp));
12395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
12396        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapModelMode.NULL, new StructureMap.StructureMapModelModeEnumFactory()));
12397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
12398        res.setDocumentationElement(parseString(xpp));
12399      } else if (!parseBackboneContent(eventType, xpp, res))
12400        unknownContent(xpp);
12401      eventType = nextNoWhitespace(xpp);
12402    }
12403    next(xpp);
12404    parseElementClose(res);
12405    return res;
12406  }
12407
12408  protected StructureMap.StructureMapGroupComponent parseStructureMapStructureMapGroupComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
12409    StructureMap.StructureMapGroupComponent res = new StructureMap.StructureMapGroupComponent();
12410    parseBackboneAttributes(xpp, res);
12411    next(xpp);
12412    int eventType = nextNoWhitespace(xpp);
12413    while (eventType != XmlPullParser.END_TAG) {
12414      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12415        res.setNameElement(parseId(xpp));
12416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extends")) {
12417        res.setExtendsElement(parseId(xpp));
12418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
12419        res.setDocumentationElement(parseString(xpp));
12420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
12421        res.getInput().add(parseStructureMapStructureMapGroupInputComponent(xpp, owner));
12422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
12423        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
12424      } else if (!parseBackboneContent(eventType, xpp, res))
12425        unknownContent(xpp);
12426      eventType = nextNoWhitespace(xpp);
12427    }
12428    next(xpp);
12429    parseElementClose(res);
12430    return res;
12431  }
12432
12433  protected StructureMap.StructureMapGroupInputComponent parseStructureMapStructureMapGroupInputComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
12434    StructureMap.StructureMapGroupInputComponent res = new StructureMap.StructureMapGroupInputComponent();
12435    parseBackboneAttributes(xpp, res);
12436    next(xpp);
12437    int eventType = nextNoWhitespace(xpp);
12438    while (eventType != XmlPullParser.END_TAG) {
12439      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12440        res.setNameElement(parseId(xpp));
12441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12442        res.setTypeElement(parseString(xpp));
12443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
12444        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapInputMode.NULL, new StructureMap.StructureMapInputModeEnumFactory()));
12445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
12446        res.setDocumentationElement(parseString(xpp));
12447      } else if (!parseBackboneContent(eventType, xpp, res))
12448        unknownContent(xpp);
12449      eventType = nextNoWhitespace(xpp);
12450    }
12451    next(xpp);
12452    parseElementClose(res);
12453    return res;
12454  }
12455
12456  protected StructureMap.StructureMapGroupRuleComponent parseStructureMapStructureMapGroupRuleComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
12457    StructureMap.StructureMapGroupRuleComponent res = new StructureMap.StructureMapGroupRuleComponent();
12458    parseBackboneAttributes(xpp, res);
12459    next(xpp);
12460    int eventType = nextNoWhitespace(xpp);
12461    while (eventType != XmlPullParser.END_TAG) {
12462      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12463        res.setNameElement(parseId(xpp));
12464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
12465        res.getSource().add(parseStructureMapStructureMapGroupRuleSourceComponent(xpp, owner));
12466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12467        res.getTarget().add(parseStructureMapStructureMapGroupRuleTargetComponent(xpp, owner));
12468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
12469        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
12470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
12471        res.getDependent().add(parseStructureMapStructureMapGroupRuleDependentComponent(xpp, owner));
12472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
12473        res.setDocumentationElement(parseString(xpp));
12474      } else if (!parseBackboneContent(eventType, xpp, res))
12475        unknownContent(xpp);
12476      eventType = nextNoWhitespace(xpp);
12477    }
12478    next(xpp);
12479    parseElementClose(res);
12480    return res;
12481  }
12482
12483  protected StructureMap.StructureMapGroupRuleSourceComponent parseStructureMapStructureMapGroupRuleSourceComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
12484    StructureMap.StructureMapGroupRuleSourceComponent res = new StructureMap.StructureMapGroupRuleSourceComponent();
12485    parseBackboneAttributes(xpp, res);
12486    next(xpp);
12487    int eventType = nextNoWhitespace(xpp);
12488    while (eventType != XmlPullParser.END_TAG) {
12489      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
12490        res.setRequiredElement(parseBoolean(xpp));
12491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
12492        res.setContextElement(parseId(xpp));
12493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
12494        res.setContextTypeElement(parseEnumeration(xpp, StructureMap.StructureMapContextType.NULL, new StructureMap.StructureMapContextTypeEnumFactory()));
12495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
12496        res.setElementElement(parseString(xpp));
12497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
12498        res.setListModeElement(parseEnumeration(xpp, StructureMap.StructureMapListMode.NULL, new StructureMap.StructureMapListModeEnumFactory()));
12499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
12500        res.setVariableElement(parseId(xpp));
12501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
12502        res.setConditionElement(parseString(xpp));
12503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("check")) {
12504        res.setCheckElement(parseString(xpp));
12505      } else if (!parseBackboneContent(eventType, xpp, res))
12506        unknownContent(xpp);
12507      eventType = nextNoWhitespace(xpp);
12508    }
12509    next(xpp);
12510    parseElementClose(res);
12511    return res;
12512  }
12513
12514  protected StructureMap.StructureMapGroupRuleTargetComponent parseStructureMapStructureMapGroupRuleTargetComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
12515    StructureMap.StructureMapGroupRuleTargetComponent res = new StructureMap.StructureMapGroupRuleTargetComponent();
12516    parseBackboneAttributes(xpp, res);
12517    next(xpp);
12518    int eventType = nextNoWhitespace(xpp);
12519    while (eventType != XmlPullParser.END_TAG) {
12520      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
12521        res.setContextElement(parseId(xpp));
12522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
12523        res.setContextTypeElement(parseEnumeration(xpp, StructureMap.StructureMapContextType.NULL, new StructureMap.StructureMapContextTypeEnumFactory()));
12524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
12525        res.setElementElement(parseString(xpp));
12526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
12527        res.setVariableElement(parseId(xpp));
12528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
12529        res.getListMode().add(parseEnumeration(xpp, StructureMap.StructureMapListMode.NULL, new StructureMap.StructureMapListModeEnumFactory()));
12530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listRuleId")) {
12531        res.setListRuleIdElement(parseId(xpp));
12532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
12533        res.setTransformElement(parseEnumeration(xpp, StructureMap.StructureMapTransform.NULL, new StructureMap.StructureMapTransformEnumFactory()));
12534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
12535        res.getParameter().add(parseStructureMapStructureMapGroupRuleTargetParameterComponent(xpp, owner));
12536      } else if (!parseBackboneContent(eventType, xpp, res))
12537        unknownContent(xpp);
12538      eventType = nextNoWhitespace(xpp);
12539    }
12540    next(xpp);
12541    parseElementClose(res);
12542    return res;
12543  }
12544
12545  protected StructureMap.StructureMapGroupRuleTargetParameterComponent parseStructureMapStructureMapGroupRuleTargetParameterComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
12546    StructureMap.StructureMapGroupRuleTargetParameterComponent res = new StructureMap.StructureMapGroupRuleTargetParameterComponent();
12547    parseBackboneAttributes(xpp, res);
12548    next(xpp);
12549    int eventType = nextNoWhitespace(xpp);
12550    while (eventType != XmlPullParser.END_TAG) {
12551      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
12552        res.setValue(parseType("value", xpp));
12553      } else if (!parseBackboneContent(eventType, xpp, res))
12554        unknownContent(xpp);
12555      eventType = nextNoWhitespace(xpp);
12556    }
12557    next(xpp);
12558    parseElementClose(res);
12559    return res;
12560  }
12561
12562  protected StructureMap.StructureMapGroupRuleDependentComponent parseStructureMapStructureMapGroupRuleDependentComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
12563    StructureMap.StructureMapGroupRuleDependentComponent res = new StructureMap.StructureMapGroupRuleDependentComponent();
12564    parseBackboneAttributes(xpp, res);
12565    next(xpp);
12566    int eventType = nextNoWhitespace(xpp);
12567    while (eventType != XmlPullParser.END_TAG) {
12568      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12569        res.setNameElement(parseId(xpp));
12570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
12571        res.getVariable().add(parseString(xpp));
12572      } else if (!parseBackboneContent(eventType, xpp, res))
12573        unknownContent(xpp);
12574      eventType = nextNoWhitespace(xpp);
12575    }
12576    next(xpp);
12577    parseElementClose(res);
12578    return res;
12579  }
12580
12581  protected Subscription parseSubscription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12582    Subscription res = new Subscription();
12583    parseDomainResourceAttributes(xpp, res);
12584    next(xpp);
12585    int eventType = nextNoWhitespace(xpp);
12586    while (eventType != XmlPullParser.END_TAG) {
12587      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
12588        res.setCriteriaElement(parseString(xpp));
12589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12590        res.getContact().add(parseContactPoint(xpp));
12591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
12592        res.setReasonElement(parseString(xpp));
12593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12594        res.setStatusElement(parseEnumeration(xpp, Subscription.SubscriptionStatus.NULL, new Subscription.SubscriptionStatusEnumFactory()));
12595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
12596        res.setErrorElement(parseString(xpp));
12597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("channel")) {
12598        res.setChannel(parseSubscriptionSubscriptionChannelComponent(xpp, res));
12599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
12600        res.setEndElement(parseInstant(xpp));
12601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
12602        res.getTag().add(parseCoding(xpp));
12603      } else if (!parseDomainResourceContent(eventType, xpp, res))
12604        unknownContent(xpp);
12605      eventType = nextNoWhitespace(xpp);
12606    }
12607    next(xpp);
12608    parseElementClose(res);
12609    return res;
12610  }
12611
12612  protected Subscription.SubscriptionChannelComponent parseSubscriptionSubscriptionChannelComponent(XmlPullParser xpp, Subscription owner) throws XmlPullParserException, IOException, FHIRFormatError {
12613    Subscription.SubscriptionChannelComponent res = new Subscription.SubscriptionChannelComponent();
12614    parseBackboneAttributes(xpp, res);
12615    next(xpp);
12616    int eventType = nextNoWhitespace(xpp);
12617    while (eventType != XmlPullParser.END_TAG) {
12618      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12619        res.setTypeElement(parseEnumeration(xpp, Subscription.SubscriptionChannelType.NULL, new Subscription.SubscriptionChannelTypeEnumFactory()));
12620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
12621        res.setEndpointElement(parseUri(xpp));
12622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
12623        res.setPayloadElement(parseString(xpp));
12624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
12625        res.setHeaderElement(parseString(xpp));
12626      } else if (!parseBackboneContent(eventType, xpp, res))
12627        unknownContent(xpp);
12628      eventType = nextNoWhitespace(xpp);
12629    }
12630    next(xpp);
12631    parseElementClose(res);
12632    return res;
12633  }
12634
12635  protected Substance parseSubstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12636    Substance res = new Substance();
12637    parseDomainResourceAttributes(xpp, res);
12638    next(xpp);
12639    int eventType = nextNoWhitespace(xpp);
12640    while (eventType != XmlPullParser.END_TAG) {
12641      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12642        res.getIdentifier().add(parseIdentifier(xpp));
12643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12644        res.getCategory().add(parseCodeableConcept(xpp));
12645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12646        res.setCode(parseCodeableConcept(xpp));
12647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12648        res.setDescriptionElement(parseString(xpp));
12649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
12650        res.getInstance().add(parseSubstanceSubstanceInstanceComponent(xpp, res));
12651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
12652        res.getIngredient().add(parseSubstanceSubstanceIngredientComponent(xpp, res));
12653      } else if (!parseDomainResourceContent(eventType, xpp, res))
12654        unknownContent(xpp);
12655      eventType = nextNoWhitespace(xpp);
12656    }
12657    next(xpp);
12658    parseElementClose(res);
12659    return res;
12660  }
12661
12662  protected Substance.SubstanceInstanceComponent parseSubstanceSubstanceInstanceComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
12663    Substance.SubstanceInstanceComponent res = new Substance.SubstanceInstanceComponent();
12664    parseBackboneAttributes(xpp, res);
12665    next(xpp);
12666    int eventType = nextNoWhitespace(xpp);
12667    while (eventType != XmlPullParser.END_TAG) {
12668      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12669        res.setIdentifier(parseIdentifier(xpp));
12670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
12671        res.setExpiryElement(parseDateTime(xpp));
12672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
12673        res.setQuantity(parseSimpleQuantity(xpp));
12674      } else if (!parseBackboneContent(eventType, xpp, res))
12675        unknownContent(xpp);
12676      eventType = nextNoWhitespace(xpp);
12677    }
12678    next(xpp);
12679    parseElementClose(res);
12680    return res;
12681  }
12682
12683  protected Substance.SubstanceIngredientComponent parseSubstanceSubstanceIngredientComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
12684    Substance.SubstanceIngredientComponent res = new Substance.SubstanceIngredientComponent();
12685    parseBackboneAttributes(xpp, res);
12686    next(xpp);
12687    int eventType = nextNoWhitespace(xpp);
12688    while (eventType != XmlPullParser.END_TAG) {
12689      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
12690        res.setQuantity(parseRatio(xpp));
12691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
12692        res.setSubstance(parseReference(xpp));
12693      } else if (!parseBackboneContent(eventType, xpp, res))
12694        unknownContent(xpp);
12695      eventType = nextNoWhitespace(xpp);
12696    }
12697    next(xpp);
12698    parseElementClose(res);
12699    return res;
12700  }
12701
12702  protected SupplyDelivery parseSupplyDelivery(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12703    SupplyDelivery res = new SupplyDelivery();
12704    parseDomainResourceAttributes(xpp, res);
12705    next(xpp);
12706    int eventType = nextNoWhitespace(xpp);
12707    while (eventType != XmlPullParser.END_TAG) {
12708      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12709        res.setIdentifier(parseIdentifier(xpp));
12710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12711        res.setStatusElement(parseEnumeration(xpp, SupplyDelivery.SupplyDeliveryStatus.NULL, new SupplyDelivery.SupplyDeliveryStatusEnumFactory()));
12712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
12713        res.setPatient(parseReference(xpp));
12714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12715        res.setType(parseCodeableConcept(xpp));
12716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
12717        res.setQuantity(parseSimpleQuantity(xpp));
12718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suppliedItem")) {
12719        res.setSuppliedItem(parseReference(xpp));
12720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
12721        res.setSupplier(parseReference(xpp));
12722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
12723        res.setWhenPrepared(parsePeriod(xpp));
12724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
12725        res.setTimeElement(parseDateTime(xpp));
12726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
12727        res.setDestination(parseReference(xpp));
12728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
12729        res.getReceiver().add(parseReference(xpp));
12730      } else if (!parseDomainResourceContent(eventType, xpp, res))
12731        unknownContent(xpp);
12732      eventType = nextNoWhitespace(xpp);
12733    }
12734    next(xpp);
12735    parseElementClose(res);
12736    return res;
12737  }
12738
12739  protected SupplyRequest parseSupplyRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12740    SupplyRequest res = new SupplyRequest();
12741    parseDomainResourceAttributes(xpp, res);
12742    next(xpp);
12743    int eventType = nextNoWhitespace(xpp);
12744    while (eventType != XmlPullParser.END_TAG) {
12745      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
12746        res.setPatient(parseReference(xpp));
12747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
12748        res.setSource(parseReference(xpp));
12749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12750        res.setDateElement(parseDateTime(xpp));
12751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12752        res.setIdentifier(parseIdentifier(xpp));
12753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12754        res.setStatusElement(parseEnumeration(xpp, SupplyRequest.SupplyRequestStatus.NULL, new SupplyRequest.SupplyRequestStatusEnumFactory()));
12755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
12756        res.setKind(parseCodeableConcept(xpp));
12757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedItem")) {
12758        res.setOrderedItem(parseReference(xpp));
12759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
12760        res.getSupplier().add(parseReference(xpp));
12761      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
12762        res.setReason(parseType("reason", xpp));
12763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
12764        res.setWhen(parseSupplyRequestSupplyRequestWhenComponent(xpp, res));
12765      } else if (!parseDomainResourceContent(eventType, xpp, res))
12766        unknownContent(xpp);
12767      eventType = nextNoWhitespace(xpp);
12768    }
12769    next(xpp);
12770    parseElementClose(res);
12771    return res;
12772  }
12773
12774  protected SupplyRequest.SupplyRequestWhenComponent parseSupplyRequestSupplyRequestWhenComponent(XmlPullParser xpp, SupplyRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
12775    SupplyRequest.SupplyRequestWhenComponent res = new SupplyRequest.SupplyRequestWhenComponent();
12776    parseBackboneAttributes(xpp, res);
12777    next(xpp);
12778    int eventType = nextNoWhitespace(xpp);
12779    while (eventType != XmlPullParser.END_TAG) {
12780      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12781        res.setCode(parseCodeableConcept(xpp));
12782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
12783        res.setSchedule(parseTiming(xpp));
12784      } else if (!parseBackboneContent(eventType, xpp, res))
12785        unknownContent(xpp);
12786      eventType = nextNoWhitespace(xpp);
12787    }
12788    next(xpp);
12789    parseElementClose(res);
12790    return res;
12791  }
12792
12793  protected Task parseTask(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12794    Task res = new Task();
12795    parseDomainResourceAttributes(xpp, res);
12796    next(xpp);
12797    int eventType = nextNoWhitespace(xpp);
12798    while (eventType != XmlPullParser.END_TAG) {
12799      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12800        res.setIdentifier(parseIdentifier(xpp));
12801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12802        res.setType(parseCodeableConcept(xpp));
12803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12804        res.setDescriptionElement(parseString(xpp));
12805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
12806        res.getPerformerType().add(parseCoding(xpp));
12807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
12808        res.setPriorityElement(parseEnumeration(xpp, Task.TaskPriority.NULL, new Task.TaskPriorityEnumFactory()));
12809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12810        res.setStatusElement(parseEnumeration(xpp, Task.TaskStatus.NULL, new Task.TaskStatusEnumFactory()));
12811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("failureReason")) {
12812        res.setFailureReason(parseCodeableConcept(xpp));
12813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12814        res.setSubject(parseReference(xpp));
12815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("for")) {
12816        res.setFor(parseReference(xpp));
12817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
12818        res.setDefinitionElement(parseUri(xpp));
12819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
12820        res.setCreatedElement(parseDateTime(xpp));
12821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
12822        res.setLastModifiedElement(parseDateTime(xpp));
12823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("creator")) {
12824        res.setCreator(parseReference(xpp));
12825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
12826        res.setOwner(parseReference(xpp));
12827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
12828        res.setParent(parseReference(xpp));
12829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
12830        res.getInput().add(parseTaskParameterComponent(xpp, res));
12831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
12832        res.getOutput().add(parseTaskTaskOutputComponent(xpp, res));
12833      } else if (!parseDomainResourceContent(eventType, xpp, res))
12834        unknownContent(xpp);
12835      eventType = nextNoWhitespace(xpp);
12836    }
12837    next(xpp);
12838    parseElementClose(res);
12839    return res;
12840  }
12841
12842  protected Task.ParameterComponent parseTaskParameterComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
12843    Task.ParameterComponent res = new Task.ParameterComponent();
12844    parseBackboneAttributes(xpp, res);
12845    next(xpp);
12846    int eventType = nextNoWhitespace(xpp);
12847    while (eventType != XmlPullParser.END_TAG) {
12848      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12849        res.setNameElement(parseString(xpp));
12850      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
12851        res.setValue(parseType("value", xpp));
12852      } else if (!parseBackboneContent(eventType, xpp, res))
12853        unknownContent(xpp);
12854      eventType = nextNoWhitespace(xpp);
12855    }
12856    next(xpp);
12857    parseElementClose(res);
12858    return res;
12859  }
12860
12861  protected Task.TaskOutputComponent parseTaskTaskOutputComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
12862    Task.TaskOutputComponent res = new Task.TaskOutputComponent();
12863    parseBackboneAttributes(xpp, res);
12864    next(xpp);
12865    int eventType = nextNoWhitespace(xpp);
12866    while (eventType != XmlPullParser.END_TAG) {
12867      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12868        res.setNameElement(parseString(xpp));
12869      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
12870        res.setValue(parseType("value", xpp));
12871      } else if (!parseBackboneContent(eventType, xpp, res))
12872        unknownContent(xpp);
12873      eventType = nextNoWhitespace(xpp);
12874    }
12875    next(xpp);
12876    parseElementClose(res);
12877    return res;
12878  }
12879
12880  protected TestScript parseTestScript(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12881    TestScript res = new TestScript();
12882    parseDomainResourceAttributes(xpp, res);
12883    next(xpp);
12884    int eventType = nextNoWhitespace(xpp);
12885    while (eventType != XmlPullParser.END_TAG) {
12886      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12887        res.setUrlElement(parseUri(xpp));
12888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12889        res.setVersionElement(parseString(xpp));
12890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12891        res.setNameElement(parseString(xpp));
12892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12893        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
12894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12895        res.setIdentifier(parseIdentifier(xpp));
12896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12897        res.setExperimentalElement(parseBoolean(xpp));
12898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12899        res.setPublisherElement(parseString(xpp));
12900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12901        res.getContact().add(parseTestScriptTestScriptContactComponent(xpp, res));
12902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12903        res.setDateElement(parseDateTime(xpp));
12904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12905        res.setDescriptionElement(parseString(xpp));
12906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12907        res.getUseContext().add(parseCodeableConcept(xpp));
12908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
12909        res.setRequirementsElement(parseString(xpp));
12910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
12911        res.setCopyrightElement(parseString(xpp));
12912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
12913        res.getOrigin().add(parseTestScriptTestScriptOriginComponent(xpp, res));
12914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
12915        res.getDestination().add(parseTestScriptTestScriptDestinationComponent(xpp, res));
12916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
12917        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, res));
12918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixture")) {
12919        res.getFixture().add(parseTestScriptTestScriptFixtureComponent(xpp, res));
12920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
12921        res.getProfile().add(parseReference(xpp));
12922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
12923        res.getVariable().add(parseTestScriptTestScriptVariableComponent(xpp, res));
12924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
12925        res.getRule().add(parseTestScriptTestScriptRuleComponent(xpp, res));
12926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
12927        res.getRuleset().add(parseTestScriptTestScriptRulesetComponent(xpp, res));
12928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
12929        res.setSetup(parseTestScriptTestScriptSetupComponent(xpp, res));
12930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
12931        res.getTest().add(parseTestScriptTestScriptTestComponent(xpp, res));
12932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
12933        res.setTeardown(parseTestScriptTestScriptTeardownComponent(xpp, res));
12934      } else if (!parseDomainResourceContent(eventType, xpp, res))
12935        unknownContent(xpp);
12936      eventType = nextNoWhitespace(xpp);
12937    }
12938    next(xpp);
12939    parseElementClose(res);
12940    return res;
12941  }
12942
12943  protected TestScript.TestScriptContactComponent parseTestScriptTestScriptContactComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
12944    TestScript.TestScriptContactComponent res = new TestScript.TestScriptContactComponent();
12945    parseBackboneAttributes(xpp, res);
12946    next(xpp);
12947    int eventType = nextNoWhitespace(xpp);
12948    while (eventType != XmlPullParser.END_TAG) {
12949      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12950        res.setNameElement(parseString(xpp));
12951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12952        res.getTelecom().add(parseContactPoint(xpp));
12953      } else if (!parseBackboneContent(eventType, xpp, res))
12954        unknownContent(xpp);
12955      eventType = nextNoWhitespace(xpp);
12956    }
12957    next(xpp);
12958    parseElementClose(res);
12959    return res;
12960  }
12961
12962  protected TestScript.TestScriptOriginComponent parseTestScriptTestScriptOriginComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
12963    TestScript.TestScriptOriginComponent res = new TestScript.TestScriptOriginComponent();
12964    parseBackboneAttributes(xpp, res);
12965    next(xpp);
12966    int eventType = nextNoWhitespace(xpp);
12967    while (eventType != XmlPullParser.END_TAG) {
12968      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
12969        res.setIndexElement(parseInteger(xpp));
12970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
12971        res.setProfile(parseCoding(xpp));
12972      } else if (!parseBackboneContent(eventType, xpp, res))
12973        unknownContent(xpp);
12974      eventType = nextNoWhitespace(xpp);
12975    }
12976    next(xpp);
12977    parseElementClose(res);
12978    return res;
12979  }
12980
12981  protected TestScript.TestScriptDestinationComponent parseTestScriptTestScriptDestinationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
12982    TestScript.TestScriptDestinationComponent res = new TestScript.TestScriptDestinationComponent();
12983    parseBackboneAttributes(xpp, res);
12984    next(xpp);
12985    int eventType = nextNoWhitespace(xpp);
12986    while (eventType != XmlPullParser.END_TAG) {
12987      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
12988        res.setIndexElement(parseInteger(xpp));
12989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
12990        res.setProfile(parseCoding(xpp));
12991      } else if (!parseBackboneContent(eventType, xpp, res))
12992        unknownContent(xpp);
12993      eventType = nextNoWhitespace(xpp);
12994    }
12995    next(xpp);
12996    parseElementClose(res);
12997    return res;
12998  }
12999
13000  protected TestScript.TestScriptMetadataComponent parseTestScriptTestScriptMetadataComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13001    TestScript.TestScriptMetadataComponent res = new TestScript.TestScriptMetadataComponent();
13002    parseBackboneAttributes(xpp, res);
13003    next(xpp);
13004    int eventType = nextNoWhitespace(xpp);
13005    while (eventType != XmlPullParser.END_TAG) {
13006      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
13007        res.getLink().add(parseTestScriptTestScriptMetadataLinkComponent(xpp, owner));
13008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
13009        res.getCapability().add(parseTestScriptTestScriptMetadataCapabilityComponent(xpp, owner));
13010      } else if (!parseBackboneContent(eventType, xpp, res))
13011        unknownContent(xpp);
13012      eventType = nextNoWhitespace(xpp);
13013    }
13014    next(xpp);
13015    parseElementClose(res);
13016    return res;
13017  }
13018
13019  protected TestScript.TestScriptMetadataLinkComponent parseTestScriptTestScriptMetadataLinkComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13020    TestScript.TestScriptMetadataLinkComponent res = new TestScript.TestScriptMetadataLinkComponent();
13021    parseBackboneAttributes(xpp, res);
13022    next(xpp);
13023    int eventType = nextNoWhitespace(xpp);
13024    while (eventType != XmlPullParser.END_TAG) {
13025      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
13026        res.setUrlElement(parseUri(xpp));
13027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13028        res.setDescriptionElement(parseString(xpp));
13029      } else if (!parseBackboneContent(eventType, xpp, res))
13030        unknownContent(xpp);
13031      eventType = nextNoWhitespace(xpp);
13032    }
13033    next(xpp);
13034    parseElementClose(res);
13035    return res;
13036  }
13037
13038  protected TestScript.TestScriptMetadataCapabilityComponent parseTestScriptTestScriptMetadataCapabilityComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13039    TestScript.TestScriptMetadataCapabilityComponent res = new TestScript.TestScriptMetadataCapabilityComponent();
13040    parseBackboneAttributes(xpp, res);
13041    next(xpp);
13042    int eventType = nextNoWhitespace(xpp);
13043    while (eventType != XmlPullParser.END_TAG) {
13044      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
13045        res.setRequiredElement(parseBoolean(xpp));
13046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validated")) {
13047        res.setValidatedElement(parseBoolean(xpp));
13048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13049        res.setDescriptionElement(parseString(xpp));
13050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
13051        res.getOrigin().add(parseInteger(xpp));
13052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
13053        res.setDestinationElement(parseInteger(xpp));
13054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
13055        res.getLink().add(parseUri(xpp));
13056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conformance")) {
13057        res.setConformance(parseReference(xpp));
13058      } else if (!parseBackboneContent(eventType, xpp, res))
13059        unknownContent(xpp);
13060      eventType = nextNoWhitespace(xpp);
13061    }
13062    next(xpp);
13063    parseElementClose(res);
13064    return res;
13065  }
13066
13067  protected TestScript.TestScriptFixtureComponent parseTestScriptTestScriptFixtureComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13068    TestScript.TestScriptFixtureComponent res = new TestScript.TestScriptFixtureComponent();
13069    parseBackboneAttributes(xpp, res);
13070    next(xpp);
13071    int eventType = nextNoWhitespace(xpp);
13072    while (eventType != XmlPullParser.END_TAG) {
13073      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autocreate")) {
13074        res.setAutocreateElement(parseBoolean(xpp));
13075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autodelete")) {
13076        res.setAutodeleteElement(parseBoolean(xpp));
13077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
13078        res.setResource(parseReference(xpp));
13079      } else if (!parseBackboneContent(eventType, xpp, res))
13080        unknownContent(xpp);
13081      eventType = nextNoWhitespace(xpp);
13082    }
13083    next(xpp);
13084    parseElementClose(res);
13085    return res;
13086  }
13087
13088  protected TestScript.TestScriptVariableComponent parseTestScriptTestScriptVariableComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13089    TestScript.TestScriptVariableComponent res = new TestScript.TestScriptVariableComponent();
13090    parseBackboneAttributes(xpp, res);
13091    next(xpp);
13092    int eventType = nextNoWhitespace(xpp);
13093    while (eventType != XmlPullParser.END_TAG) {
13094      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13095        res.setNameElement(parseString(xpp));
13096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("defaultValue")) {
13097        res.setDefaultValueElement(parseString(xpp));
13098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
13099        res.setHeaderFieldElement(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("sourceId")) {
13103        res.setSourceIdElement(parseId(xpp));
13104      } else if (!parseBackboneContent(eventType, xpp, res))
13105        unknownContent(xpp);
13106      eventType = nextNoWhitespace(xpp);
13107    }
13108    next(xpp);
13109    parseElementClose(res);
13110    return res;
13111  }
13112
13113  protected TestScript.TestScriptRuleComponent parseTestScriptTestScriptRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13114    TestScript.TestScriptRuleComponent res = new TestScript.TestScriptRuleComponent();
13115    parseBackboneAttributes(xpp, res);
13116    next(xpp);
13117    int eventType = nextNoWhitespace(xpp);
13118    while (eventType != XmlPullParser.END_TAG) {
13119      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
13120        res.setResource(parseReference(xpp));
13121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
13122        res.getParam().add(parseTestScriptTestScriptRuleParamComponent(xpp, owner));
13123      } else if (!parseBackboneContent(eventType, xpp, res))
13124        unknownContent(xpp);
13125      eventType = nextNoWhitespace(xpp);
13126    }
13127    next(xpp);
13128    parseElementClose(res);
13129    return res;
13130  }
13131
13132  protected TestScript.TestScriptRuleParamComponent parseTestScriptTestScriptRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13133    TestScript.TestScriptRuleParamComponent res = new TestScript.TestScriptRuleParamComponent();
13134    parseBackboneAttributes(xpp, res);
13135    next(xpp);
13136    int eventType = nextNoWhitespace(xpp);
13137    while (eventType != XmlPullParser.END_TAG) {
13138      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13139        res.setNameElement(parseString(xpp));
13140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13141        res.setValueElement(parseString(xpp));
13142      } else if (!parseBackboneContent(eventType, xpp, res))
13143        unknownContent(xpp);
13144      eventType = nextNoWhitespace(xpp);
13145    }
13146    next(xpp);
13147    parseElementClose(res);
13148    return res;
13149  }
13150
13151  protected TestScript.TestScriptRulesetComponent parseTestScriptTestScriptRulesetComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13152    TestScript.TestScriptRulesetComponent res = new TestScript.TestScriptRulesetComponent();
13153    parseBackboneAttributes(xpp, res);
13154    next(xpp);
13155    int eventType = nextNoWhitespace(xpp);
13156    while (eventType != XmlPullParser.END_TAG) {
13157      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
13158        res.setResource(parseReference(xpp));
13159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
13160        res.getRule().add(parseTestScriptTestScriptRulesetRuleComponent(xpp, owner));
13161      } else if (!parseBackboneContent(eventType, xpp, res))
13162        unknownContent(xpp);
13163      eventType = nextNoWhitespace(xpp);
13164    }
13165    next(xpp);
13166    parseElementClose(res);
13167    return res;
13168  }
13169
13170  protected TestScript.TestScriptRulesetRuleComponent parseTestScriptTestScriptRulesetRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13171    TestScript.TestScriptRulesetRuleComponent res = new TestScript.TestScriptRulesetRuleComponent();
13172    parseBackboneAttributes(xpp, res);
13173    next(xpp);
13174    int eventType = nextNoWhitespace(xpp);
13175    while (eventType != XmlPullParser.END_TAG) {
13176      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
13177        res.setRuleIdElement(parseId(xpp));
13178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
13179        res.getParam().add(parseTestScriptTestScriptRulesetRuleParamComponent(xpp, owner));
13180      } else if (!parseBackboneContent(eventType, xpp, res))
13181        unknownContent(xpp);
13182      eventType = nextNoWhitespace(xpp);
13183    }
13184    next(xpp);
13185    parseElementClose(res);
13186    return res;
13187  }
13188
13189  protected TestScript.TestScriptRulesetRuleParamComponent parseTestScriptTestScriptRulesetRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13190    TestScript.TestScriptRulesetRuleParamComponent res = new TestScript.TestScriptRulesetRuleParamComponent();
13191    parseBackboneAttributes(xpp, res);
13192    next(xpp);
13193    int eventType = nextNoWhitespace(xpp);
13194    while (eventType != XmlPullParser.END_TAG) {
13195      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13196        res.setNameElement(parseString(xpp));
13197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13198        res.setValueElement(parseString(xpp));
13199      } else if (!parseBackboneContent(eventType, xpp, res))
13200        unknownContent(xpp);
13201      eventType = nextNoWhitespace(xpp);
13202    }
13203    next(xpp);
13204    parseElementClose(res);
13205    return res;
13206  }
13207
13208  protected TestScript.TestScriptSetupComponent parseTestScriptTestScriptSetupComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13209    TestScript.TestScriptSetupComponent res = new TestScript.TestScriptSetupComponent();
13210    parseBackboneAttributes(xpp, res);
13211    next(xpp);
13212    int eventType = nextNoWhitespace(xpp);
13213    while (eventType != XmlPullParser.END_TAG) {
13214      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
13215        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, owner));
13216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
13217        res.getAction().add(parseTestScriptSetupActionComponent(xpp, owner));
13218      } else if (!parseBackboneContent(eventType, xpp, res))
13219        unknownContent(xpp);
13220      eventType = nextNoWhitespace(xpp);
13221    }
13222    next(xpp);
13223    parseElementClose(res);
13224    return res;
13225  }
13226
13227  protected TestScript.SetupActionComponent parseTestScriptSetupActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13228    TestScript.SetupActionComponent res = new TestScript.SetupActionComponent();
13229    parseBackboneAttributes(xpp, res);
13230    next(xpp);
13231    int eventType = nextNoWhitespace(xpp);
13232    while (eventType != XmlPullParser.END_TAG) {
13233      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
13234        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
13235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
13236        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
13237      } else if (!parseBackboneContent(eventType, xpp, res))
13238        unknownContent(xpp);
13239      eventType = nextNoWhitespace(xpp);
13240    }
13241    next(xpp);
13242    parseElementClose(res);
13243    return res;
13244  }
13245
13246  protected TestScript.SetupActionOperationComponent parseTestScriptSetupActionOperationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13247    TestScript.SetupActionOperationComponent res = new TestScript.SetupActionOperationComponent();
13248    parseBackboneAttributes(xpp, res);
13249    next(xpp);
13250    int eventType = nextNoWhitespace(xpp);
13251    while (eventType != XmlPullParser.END_TAG) {
13252      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13253        res.setType(parseCoding(xpp));
13254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
13255        res.setResourceElement(parseCode(xpp));
13256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
13257        res.setLabelElement(parseString(xpp));
13258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13259        res.setDescriptionElement(parseString(xpp));
13260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accept")) {
13261        res.setAcceptElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
13262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
13263        res.setContentTypeElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
13264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
13265        res.setDestinationElement(parseInteger(xpp));
13266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encodeRequestUrl")) {
13267        res.setEncodeRequestUrlElement(parseBoolean(xpp));
13268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
13269        res.setOriginElement(parseInteger(xpp));
13270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
13271        res.setParamsElement(parseString(xpp));
13272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestHeader")) {
13273        res.getRequestHeader().add(parseTestScriptSetupActionOperationRequestHeaderComponent(xpp, owner));
13274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseId")) {
13275        res.setResponseIdElement(parseId(xpp));
13276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
13277        res.setSourceIdElement(parseId(xpp));
13278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
13279        res.setTargetIdElement(parseId(xpp));
13280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
13281        res.setUrlElement(parseString(xpp));
13282      } else if (!parseBackboneContent(eventType, xpp, res))
13283        unknownContent(xpp);
13284      eventType = nextNoWhitespace(xpp);
13285    }
13286    next(xpp);
13287    parseElementClose(res);
13288    return res;
13289  }
13290
13291  protected TestScript.SetupActionOperationRequestHeaderComponent parseTestScriptSetupActionOperationRequestHeaderComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13292    TestScript.SetupActionOperationRequestHeaderComponent res = new TestScript.SetupActionOperationRequestHeaderComponent();
13293    parseBackboneAttributes(xpp, res);
13294    next(xpp);
13295    int eventType = nextNoWhitespace(xpp);
13296    while (eventType != XmlPullParser.END_TAG) {
13297      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("field")) {
13298        res.setFieldElement(parseString(xpp));
13299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13300        res.setValueElement(parseString(xpp));
13301      } else if (!parseBackboneContent(eventType, xpp, res))
13302        unknownContent(xpp);
13303      eventType = nextNoWhitespace(xpp);
13304    }
13305    next(xpp);
13306    parseElementClose(res);
13307    return res;
13308  }
13309
13310  protected TestScript.SetupActionAssertComponent parseTestScriptSetupActionAssertComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13311    TestScript.SetupActionAssertComponent res = new TestScript.SetupActionAssertComponent();
13312    parseBackboneAttributes(xpp, res);
13313    next(xpp);
13314    int eventType = nextNoWhitespace(xpp);
13315    while (eventType != XmlPullParser.END_TAG) {
13316      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
13317        res.setLabelElement(parseString(xpp));
13318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13319        res.setDescriptionElement(parseString(xpp));
13320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
13321        res.setDirectionElement(parseEnumeration(xpp, TestScript.AssertionDirectionType.NULL, new TestScript.AssertionDirectionTypeEnumFactory()));
13322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceId")) {
13323        res.setCompareToSourceIdElement(parseString(xpp));
13324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourcePath")) {
13325        res.setCompareToSourcePathElement(parseString(xpp));
13326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
13327        res.setContentTypeElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
13328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
13329        res.setHeaderFieldElement(parseString(xpp));
13330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minimumId")) {
13331        res.setMinimumIdElement(parseString(xpp));
13332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("navigationLinks")) {
13333        res.setNavigationLinksElement(parseBoolean(xpp));
13334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
13335        res.setOperatorElement(parseEnumeration(xpp, TestScript.AssertionOperatorType.NULL, new TestScript.AssertionOperatorTypeEnumFactory()));
13336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
13337        res.setPathElement(parseString(xpp));
13338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
13339        res.setResourceElement(parseCode(xpp));
13340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
13341        res.setResponseElement(parseEnumeration(xpp, TestScript.AssertionResponseTypes.NULL, new TestScript.AssertionResponseTypesEnumFactory()));
13342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseCode")) {
13343        res.setResponseCodeElement(parseString(xpp));
13344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
13345        res.setRule(parseTestScriptSetupActionAssertRuleComponent(xpp, owner));
13346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
13347        res.setRuleset(parseTestScriptSetupActionAssertRulesetComponent(xpp, owner));
13348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
13349        res.setSourceIdElement(parseId(xpp));
13350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateProfileId")) {
13351        res.setValidateProfileIdElement(parseId(xpp));
13352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13353        res.setValueElement(parseString(xpp));
13354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warningOnly")) {
13355        res.setWarningOnlyElement(parseBoolean(xpp));
13356      } else if (!parseBackboneContent(eventType, xpp, res))
13357        unknownContent(xpp);
13358      eventType = nextNoWhitespace(xpp);
13359    }
13360    next(xpp);
13361    parseElementClose(res);
13362    return res;
13363  }
13364
13365  protected TestScript.SetupActionAssertRuleComponent parseTestScriptSetupActionAssertRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13366    TestScript.SetupActionAssertRuleComponent res = new TestScript.SetupActionAssertRuleComponent();
13367    parseBackboneAttributes(xpp, res);
13368    next(xpp);
13369    int eventType = nextNoWhitespace(xpp);
13370    while (eventType != XmlPullParser.END_TAG) {
13371      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
13372        res.setRuleIdElement(parseId(xpp));
13373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
13374        res.getParam().add(parseTestScriptSetupActionAssertRuleParamComponent(xpp, owner));
13375      } else if (!parseBackboneContent(eventType, xpp, res))
13376        unknownContent(xpp);
13377      eventType = nextNoWhitespace(xpp);
13378    }
13379    next(xpp);
13380    parseElementClose(res);
13381    return res;
13382  }
13383
13384  protected TestScript.SetupActionAssertRuleParamComponent parseTestScriptSetupActionAssertRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13385    TestScript.SetupActionAssertRuleParamComponent res = new TestScript.SetupActionAssertRuleParamComponent();
13386    parseBackboneAttributes(xpp, res);
13387    next(xpp);
13388    int eventType = nextNoWhitespace(xpp);
13389    while (eventType != XmlPullParser.END_TAG) {
13390      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13391        res.setNameElement(parseString(xpp));
13392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13393        res.setValueElement(parseString(xpp));
13394      } else if (!parseBackboneContent(eventType, xpp, res))
13395        unknownContent(xpp);
13396      eventType = nextNoWhitespace(xpp);
13397    }
13398    next(xpp);
13399    parseElementClose(res);
13400    return res;
13401  }
13402
13403  protected TestScript.SetupActionAssertRulesetComponent parseTestScriptSetupActionAssertRulesetComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13404    TestScript.SetupActionAssertRulesetComponent res = new TestScript.SetupActionAssertRulesetComponent();
13405    parseBackboneAttributes(xpp, res);
13406    next(xpp);
13407    int eventType = nextNoWhitespace(xpp);
13408    while (eventType != XmlPullParser.END_TAG) {
13409      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rulesetId")) {
13410        res.setRulesetIdElement(parseId(xpp));
13411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
13412        res.getRule().add(parseTestScriptSetupActionAssertRulesetRuleComponent(xpp, owner));
13413      } else if (!parseBackboneContent(eventType, xpp, res))
13414        unknownContent(xpp);
13415      eventType = nextNoWhitespace(xpp);
13416    }
13417    next(xpp);
13418    parseElementClose(res);
13419    return res;
13420  }
13421
13422  protected TestScript.SetupActionAssertRulesetRuleComponent parseTestScriptSetupActionAssertRulesetRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13423    TestScript.SetupActionAssertRulesetRuleComponent res = new TestScript.SetupActionAssertRulesetRuleComponent();
13424    parseBackboneAttributes(xpp, res);
13425    next(xpp);
13426    int eventType = nextNoWhitespace(xpp);
13427    while (eventType != XmlPullParser.END_TAG) {
13428      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
13429        res.setRuleIdElement(parseId(xpp));
13430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
13431        res.getParam().add(parseTestScriptSetupActionAssertRulesetRuleParamComponent(xpp, owner));
13432      } else if (!parseBackboneContent(eventType, xpp, res))
13433        unknownContent(xpp);
13434      eventType = nextNoWhitespace(xpp);
13435    }
13436    next(xpp);
13437    parseElementClose(res);
13438    return res;
13439  }
13440
13441  protected TestScript.SetupActionAssertRulesetRuleParamComponent parseTestScriptSetupActionAssertRulesetRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13442    TestScript.SetupActionAssertRulesetRuleParamComponent res = new TestScript.SetupActionAssertRulesetRuleParamComponent();
13443    parseBackboneAttributes(xpp, res);
13444    next(xpp);
13445    int eventType = nextNoWhitespace(xpp);
13446    while (eventType != XmlPullParser.END_TAG) {
13447      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13448        res.setNameElement(parseString(xpp));
13449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13450        res.setValueElement(parseString(xpp));
13451      } else if (!parseBackboneContent(eventType, xpp, res))
13452        unknownContent(xpp);
13453      eventType = nextNoWhitespace(xpp);
13454    }
13455    next(xpp);
13456    parseElementClose(res);
13457    return res;
13458  }
13459
13460  protected TestScript.TestScriptTestComponent parseTestScriptTestScriptTestComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13461    TestScript.TestScriptTestComponent res = new TestScript.TestScriptTestComponent();
13462    parseBackboneAttributes(xpp, res);
13463    next(xpp);
13464    int eventType = nextNoWhitespace(xpp);
13465    while (eventType != XmlPullParser.END_TAG) {
13466      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13467        res.setNameElement(parseString(xpp));
13468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13469        res.setDescriptionElement(parseString(xpp));
13470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
13471        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, owner));
13472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
13473        res.getAction().add(parseTestScriptTestActionComponent(xpp, owner));
13474      } else if (!parseBackboneContent(eventType, xpp, res))
13475        unknownContent(xpp);
13476      eventType = nextNoWhitespace(xpp);
13477    }
13478    next(xpp);
13479    parseElementClose(res);
13480    return res;
13481  }
13482
13483  protected TestScript.TestActionComponent parseTestScriptTestActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13484    TestScript.TestActionComponent res = new TestScript.TestActionComponent();
13485    parseBackboneAttributes(xpp, res);
13486    next(xpp);
13487    int eventType = nextNoWhitespace(xpp);
13488    while (eventType != XmlPullParser.END_TAG) {
13489      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
13490        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
13491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
13492        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
13493      } else if (!parseBackboneContent(eventType, xpp, res))
13494        unknownContent(xpp);
13495      eventType = nextNoWhitespace(xpp);
13496    }
13497    next(xpp);
13498    parseElementClose(res);
13499    return res;
13500  }
13501
13502  protected TestScript.TestScriptTeardownComponent parseTestScriptTestScriptTeardownComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13503    TestScript.TestScriptTeardownComponent res = new TestScript.TestScriptTeardownComponent();
13504    parseBackboneAttributes(xpp, res);
13505    next(xpp);
13506    int eventType = nextNoWhitespace(xpp);
13507    while (eventType != XmlPullParser.END_TAG) {
13508      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
13509        res.getAction().add(parseTestScriptTeardownActionComponent(xpp, owner));
13510      } else if (!parseBackboneContent(eventType, xpp, res))
13511        unknownContent(xpp);
13512      eventType = nextNoWhitespace(xpp);
13513    }
13514    next(xpp);
13515    parseElementClose(res);
13516    return res;
13517  }
13518
13519  protected TestScript.TeardownActionComponent parseTestScriptTeardownActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
13520    TestScript.TeardownActionComponent res = new TestScript.TeardownActionComponent();
13521    parseBackboneAttributes(xpp, res);
13522    next(xpp);
13523    int eventType = nextNoWhitespace(xpp);
13524    while (eventType != XmlPullParser.END_TAG) {
13525      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
13526        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
13527      } else if (!parseBackboneContent(eventType, xpp, res))
13528        unknownContent(xpp);
13529      eventType = nextNoWhitespace(xpp);
13530    }
13531    next(xpp);
13532    parseElementClose(res);
13533    return res;
13534  }
13535
13536  protected ValueSet parseValueSet(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13537    ValueSet res = new ValueSet();
13538    parseDomainResourceAttributes(xpp, res);
13539    next(xpp);
13540    int eventType = nextNoWhitespace(xpp);
13541    while (eventType != XmlPullParser.END_TAG) {
13542      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
13543        res.setUrlElement(parseUri(xpp));
13544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13545        res.setIdentifier(parseIdentifier(xpp));
13546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13547        res.setVersionElement(parseString(xpp));
13548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13549        res.setNameElement(parseString(xpp));
13550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13551        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL, new Enumerations.ConformanceResourceStatusEnumFactory()));
13552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
13553        res.setExperimentalElement(parseBoolean(xpp));
13554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
13555        res.setPublisherElement(parseString(xpp));
13556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
13557        res.getContact().add(parseValueSetValueSetContactComponent(xpp, res));
13558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13559        res.setDateElement(parseDateTime(xpp));
13560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
13561        res.setLockedDateElement(parseDate(xpp));
13562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13563        res.setDescriptionElement(parseString(xpp));
13564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
13565        res.getUseContext().add(parseCodeableConcept(xpp));
13566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immutable")) {
13567        res.setImmutableElement(parseBoolean(xpp));
13568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
13569        res.setRequirementsElement(parseString(xpp));
13570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
13571        res.setCopyrightElement(parseString(xpp));
13572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extensible")) {
13573        res.setExtensibleElement(parseBoolean(xpp));
13574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compose")) {
13575        res.setCompose(parseValueSetValueSetComposeComponent(xpp, res));
13576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
13577        res.setExpansion(parseValueSetValueSetExpansionComponent(xpp, res));
13578      } else if (!parseDomainResourceContent(eventType, xpp, res))
13579        unknownContent(xpp);
13580      eventType = nextNoWhitespace(xpp);
13581    }
13582    next(xpp);
13583    parseElementClose(res);
13584    return res;
13585  }
13586
13587  protected ValueSet.ValueSetContactComponent parseValueSetValueSetContactComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
13588    ValueSet.ValueSetContactComponent res = new ValueSet.ValueSetContactComponent();
13589    parseBackboneAttributes(xpp, res);
13590    next(xpp);
13591    int eventType = nextNoWhitespace(xpp);
13592    while (eventType != XmlPullParser.END_TAG) {
13593      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13594        res.setNameElement(parseString(xpp));
13595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
13596        res.getTelecom().add(parseContactPoint(xpp));
13597      } else if (!parseBackboneContent(eventType, xpp, res))
13598        unknownContent(xpp);
13599      eventType = nextNoWhitespace(xpp);
13600    }
13601    next(xpp);
13602    parseElementClose(res);
13603    return res;
13604  }
13605
13606  protected ValueSet.ValueSetComposeComponent parseValueSetValueSetComposeComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
13607    ValueSet.ValueSetComposeComponent res = new ValueSet.ValueSetComposeComponent();
13608    parseBackboneAttributes(xpp, res);
13609    next(xpp);
13610    int eventType = nextNoWhitespace(xpp);
13611    while (eventType != XmlPullParser.END_TAG) {
13612      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("import")) {
13613        res.getImport().add(parseUri(xpp));
13614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
13615        res.getInclude().add(parseValueSetConceptSetComponent(xpp, owner));
13616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
13617        res.getExclude().add(parseValueSetConceptSetComponent(xpp, owner));
13618      } else if (!parseBackboneContent(eventType, xpp, res))
13619        unknownContent(xpp);
13620      eventType = nextNoWhitespace(xpp);
13621    }
13622    next(xpp);
13623    parseElementClose(res);
13624    return res;
13625  }
13626
13627  protected ValueSet.ConceptSetComponent parseValueSetConceptSetComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
13628    ValueSet.ConceptSetComponent res = new ValueSet.ConceptSetComponent();
13629    parseBackboneAttributes(xpp, res);
13630    next(xpp);
13631    int eventType = nextNoWhitespace(xpp);
13632    while (eventType != XmlPullParser.END_TAG) {
13633      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
13634        res.setSystemElement(parseUri(xpp));
13635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13636        res.setVersionElement(parseString(xpp));
13637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
13638        res.getConcept().add(parseValueSetConceptReferenceComponent(xpp, owner));
13639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
13640        res.getFilter().add(parseValueSetConceptSetFilterComponent(xpp, owner));
13641      } else if (!parseBackboneContent(eventType, xpp, res))
13642        unknownContent(xpp);
13643      eventType = nextNoWhitespace(xpp);
13644    }
13645    next(xpp);
13646    parseElementClose(res);
13647    return res;
13648  }
13649
13650  protected ValueSet.ConceptReferenceComponent parseValueSetConceptReferenceComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
13651    ValueSet.ConceptReferenceComponent res = new ValueSet.ConceptReferenceComponent();
13652    parseBackboneAttributes(xpp, res);
13653    next(xpp);
13654    int eventType = nextNoWhitespace(xpp);
13655    while (eventType != XmlPullParser.END_TAG) {
13656      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13657        res.setCodeElement(parseCode(xpp));
13658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
13659        res.setDisplayElement(parseString(xpp));
13660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
13661        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
13662      } else if (!parseBackboneContent(eventType, xpp, res))
13663        unknownContent(xpp);
13664      eventType = nextNoWhitespace(xpp);
13665    }
13666    next(xpp);
13667    parseElementClose(res);
13668    return res;
13669  }
13670
13671  protected ValueSet.ConceptReferenceDesignationComponent parseValueSetConceptReferenceDesignationComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
13672    ValueSet.ConceptReferenceDesignationComponent res = new ValueSet.ConceptReferenceDesignationComponent();
13673    parseBackboneAttributes(xpp, res);
13674    next(xpp);
13675    int eventType = nextNoWhitespace(xpp);
13676    while (eventType != XmlPullParser.END_TAG) {
13677      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
13678        res.setLanguageElement(parseCode(xpp));
13679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
13680        res.setUse(parseCoding(xpp));
13681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13682        res.setValueElement(parseString(xpp));
13683      } else if (!parseBackboneContent(eventType, xpp, res))
13684        unknownContent(xpp);
13685      eventType = nextNoWhitespace(xpp);
13686    }
13687    next(xpp);
13688    parseElementClose(res);
13689    return res;
13690  }
13691
13692  protected ValueSet.ConceptSetFilterComponent parseValueSetConceptSetFilterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
13693    ValueSet.ConceptSetFilterComponent res = new ValueSet.ConceptSetFilterComponent();
13694    parseBackboneAttributes(xpp, res);
13695    next(xpp);
13696    int eventType = nextNoWhitespace(xpp);
13697    while (eventType != XmlPullParser.END_TAG) {
13698      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
13699        res.setPropertyElement(parseCode(xpp));
13700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
13701        res.setOpElement(parseEnumeration(xpp, ValueSet.FilterOperator.NULL, new ValueSet.FilterOperatorEnumFactory()));
13702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13703        res.setValueElement(parseCode(xpp));
13704      } else if (!parseBackboneContent(eventType, xpp, res))
13705        unknownContent(xpp);
13706      eventType = nextNoWhitespace(xpp);
13707    }
13708    next(xpp);
13709    parseElementClose(res);
13710    return res;
13711  }
13712
13713  protected ValueSet.ValueSetExpansionComponent parseValueSetValueSetExpansionComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
13714    ValueSet.ValueSetExpansionComponent res = new ValueSet.ValueSetExpansionComponent();
13715    parseBackboneAttributes(xpp, res);
13716    next(xpp);
13717    int eventType = nextNoWhitespace(xpp);
13718    while (eventType != XmlPullParser.END_TAG) {
13719      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13720        res.setIdentifierElement(parseUri(xpp));
13721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
13722        res.setTimestampElement(parseDateTime(xpp));
13723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
13724        res.setTotalElement(parseInteger(xpp));
13725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
13726        res.setOffsetElement(parseInteger(xpp));
13727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
13728        res.getParameter().add(parseValueSetValueSetExpansionParameterComponent(xpp, owner));
13729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
13730        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
13731      } else if (!parseBackboneContent(eventType, xpp, res))
13732        unknownContent(xpp);
13733      eventType = nextNoWhitespace(xpp);
13734    }
13735    next(xpp);
13736    parseElementClose(res);
13737    return res;
13738  }
13739
13740  protected ValueSet.ValueSetExpansionParameterComponent parseValueSetValueSetExpansionParameterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
13741    ValueSet.ValueSetExpansionParameterComponent res = new ValueSet.ValueSetExpansionParameterComponent();
13742    parseBackboneAttributes(xpp, res);
13743    next(xpp);
13744    int eventType = nextNoWhitespace(xpp);
13745    while (eventType != XmlPullParser.END_TAG) {
13746      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13747        res.setNameElement(parseString(xpp));
13748      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
13749        res.setValue(parseType("value", xpp));
13750      } else if (!parseBackboneContent(eventType, xpp, res))
13751        unknownContent(xpp);
13752      eventType = nextNoWhitespace(xpp);
13753    }
13754    next(xpp);
13755    parseElementClose(res);
13756    return res;
13757  }
13758
13759  protected ValueSet.ValueSetExpansionContainsComponent parseValueSetValueSetExpansionContainsComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
13760    ValueSet.ValueSetExpansionContainsComponent res = new ValueSet.ValueSetExpansionContainsComponent();
13761    parseBackboneAttributes(xpp, res);
13762    next(xpp);
13763    int eventType = nextNoWhitespace(xpp);
13764    while (eventType != XmlPullParser.END_TAG) {
13765      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
13766        res.setSystemElement(parseUri(xpp));
13767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
13768        res.setAbstractElement(parseBoolean(xpp));
13769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13770        res.setVersionElement(parseString(xpp));
13771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13772        res.setCodeElement(parseCode(xpp));
13773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
13774        res.setDisplayElement(parseString(xpp));
13775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
13776        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
13777      } else if (!parseBackboneContent(eventType, xpp, res))
13778        unknownContent(xpp);
13779      eventType = nextNoWhitespace(xpp);
13780    }
13781    next(xpp);
13782    parseElementClose(res);
13783    return res;
13784  }
13785
13786  protected VisionPrescription parseVisionPrescription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13787    VisionPrescription res = new VisionPrescription();
13788    parseDomainResourceAttributes(xpp, res);
13789    next(xpp);
13790    int eventType = nextNoWhitespace(xpp);
13791    while (eventType != XmlPullParser.END_TAG) {
13792      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13793        res.getIdentifier().add(parseIdentifier(xpp));
13794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
13795        res.setDateWrittenElement(parseDateTime(xpp));
13796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
13797        res.setPatient(parseReference(xpp));
13798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
13799        res.setPrescriber(parseReference(xpp));
13800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
13801        res.setEncounter(parseReference(xpp));
13802      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
13803        res.setReason(parseType("reason", xpp));
13804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispense")) {
13805        res.getDispense().add(parseVisionPrescriptionVisionPrescriptionDispenseComponent(xpp, res));
13806      } else if (!parseDomainResourceContent(eventType, xpp, res))
13807        unknownContent(xpp);
13808      eventType = nextNoWhitespace(xpp);
13809    }
13810    next(xpp);
13811    parseElementClose(res);
13812    return res;
13813  }
13814
13815  protected VisionPrescription.VisionPrescriptionDispenseComponent parseVisionPrescriptionVisionPrescriptionDispenseComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
13816    VisionPrescription.VisionPrescriptionDispenseComponent res = new VisionPrescription.VisionPrescriptionDispenseComponent();
13817    parseBackboneAttributes(xpp, res);
13818    next(xpp);
13819    int eventType = nextNoWhitespace(xpp);
13820    while (eventType != XmlPullParser.END_TAG) {
13821      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
13822        res.setProduct(parseCoding(xpp));
13823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eye")) {
13824        res.setEyeElement(parseEnumeration(xpp, VisionPrescription.VisionEyes.NULL, new VisionPrescription.VisionEyesEnumFactory()));
13825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sphere")) {
13826        res.setSphereElement(parseDecimal(xpp));
13827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cylinder")) {
13828        res.setCylinderElement(parseDecimal(xpp));
13829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("axis")) {
13830        res.setAxisElement(parseInteger(xpp));
13831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prism")) {
13832        res.setPrismElement(parseDecimal(xpp));
13833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
13834        res.setBaseElement(parseEnumeration(xpp, VisionPrescription.VisionBase.NULL, new VisionPrescription.VisionBaseEnumFactory()));
13835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("add")) {
13836        res.setAddElement(parseDecimal(xpp));
13837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("power")) {
13838        res.setPowerElement(parseDecimal(xpp));
13839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("backCurve")) {
13840        res.setBackCurveElement(parseDecimal(xpp));
13841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diameter")) {
13842        res.setDiameterElement(parseDecimal(xpp));
13843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
13844        res.setDuration(parseSimpleQuantity(xpp));
13845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
13846        res.setColorElement(parseString(xpp));
13847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("brand")) {
13848        res.setBrandElement(parseString(xpp));
13849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
13850        res.setNotesElement(parseString(xpp));
13851      } else if (!parseBackboneContent(eventType, xpp, res))
13852        unknownContent(xpp);
13853      eventType = nextNoWhitespace(xpp);
13854    }
13855    next(xpp);
13856    parseElementClose(res);
13857    return res;
13858  }
13859
13860  @Override
13861  protected Resource parseResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13862    if (xpp.getName().equals("Parameters"))
13863      return parseParameters(xpp);
13864    else if (xpp.getName().equals("Account"))
13865      return parseAccount(xpp);
13866    else if (xpp.getName().equals("AllergyIntolerance"))
13867      return parseAllergyIntolerance(xpp);
13868    else if (xpp.getName().equals("Appointment"))
13869      return parseAppointment(xpp);
13870    else if (xpp.getName().equals("AppointmentResponse"))
13871      return parseAppointmentResponse(xpp);
13872    else if (xpp.getName().equals("AuditEvent"))
13873      return parseAuditEvent(xpp);
13874    else if (xpp.getName().equals("Basic"))
13875      return parseBasic(xpp);
13876    else if (xpp.getName().equals("Binary"))
13877      return parseBinary(xpp);
13878    else if (xpp.getName().equals("BodySite"))
13879      return parseBodySite(xpp);
13880    else if (xpp.getName().equals("Bundle"))
13881      return parseBundle(xpp);
13882    else if (xpp.getName().equals("CarePlan"))
13883      return parseCarePlan(xpp);
13884    else if (xpp.getName().equals("CareTeam"))
13885      return parseCareTeam(xpp);
13886    else if (xpp.getName().equals("Claim"))
13887      return parseClaim(xpp);
13888    else if (xpp.getName().equals("ClaimResponse"))
13889      return parseClaimResponse(xpp);
13890    else if (xpp.getName().equals("ClinicalImpression"))
13891      return parseClinicalImpression(xpp);
13892    else if (xpp.getName().equals("CodeSystem"))
13893      return parseCodeSystem(xpp);
13894    else if (xpp.getName().equals("Communication"))
13895      return parseCommunication(xpp);
13896    else if (xpp.getName().equals("CommunicationRequest"))
13897      return parseCommunicationRequest(xpp);
13898    else if (xpp.getName().equals("CompartmentDefinition"))
13899      return parseCompartmentDefinition(xpp);
13900    else if (xpp.getName().equals("Composition"))
13901      return parseComposition(xpp);
13902    else if (xpp.getName().equals("ConceptMap"))
13903      return parseConceptMap(xpp);
13904    else if (xpp.getName().equals("Condition"))
13905      return parseCondition(xpp);
13906    else if (xpp.getName().equals("Conformance"))
13907      return parseConformance(xpp);
13908    else if (xpp.getName().equals("Contract"))
13909      return parseContract(xpp);
13910    else if (xpp.getName().equals("Coverage"))
13911      return parseCoverage(xpp);
13912    else if (xpp.getName().equals("DataElement"))
13913      return parseDataElement(xpp);
13914    else if (xpp.getName().equals("DecisionSupportRule"))
13915      return parseDecisionSupportRule(xpp);
13916    else if (xpp.getName().equals("DecisionSupportServiceModule"))
13917      return parseDecisionSupportServiceModule(xpp);
13918    else if (xpp.getName().equals("DetectedIssue"))
13919      return parseDetectedIssue(xpp);
13920    else if (xpp.getName().equals("Device"))
13921      return parseDevice(xpp);
13922    else if (xpp.getName().equals("DeviceComponent"))
13923      return parseDeviceComponent(xpp);
13924    else if (xpp.getName().equals("DeviceMetric"))
13925      return parseDeviceMetric(xpp);
13926    else if (xpp.getName().equals("DeviceUseRequest"))
13927      return parseDeviceUseRequest(xpp);
13928    else if (xpp.getName().equals("DeviceUseStatement"))
13929      return parseDeviceUseStatement(xpp);
13930    else if (xpp.getName().equals("DiagnosticOrder"))
13931      return parseDiagnosticOrder(xpp);
13932    else if (xpp.getName().equals("DiagnosticReport"))
13933      return parseDiagnosticReport(xpp);
13934    else if (xpp.getName().equals("DocumentManifest"))
13935      return parseDocumentManifest(xpp);
13936    else if (xpp.getName().equals("DocumentReference"))
13937      return parseDocumentReference(xpp);
13938    else if (xpp.getName().equals("EligibilityRequest"))
13939      return parseEligibilityRequest(xpp);
13940    else if (xpp.getName().equals("EligibilityResponse"))
13941      return parseEligibilityResponse(xpp);
13942    else if (xpp.getName().equals("Encounter"))
13943      return parseEncounter(xpp);
13944    else if (xpp.getName().equals("EnrollmentRequest"))
13945      return parseEnrollmentRequest(xpp);
13946    else if (xpp.getName().equals("EnrollmentResponse"))
13947      return parseEnrollmentResponse(xpp);
13948    else if (xpp.getName().equals("EpisodeOfCare"))
13949      return parseEpisodeOfCare(xpp);
13950    else if (xpp.getName().equals("ExpansionProfile"))
13951      return parseExpansionProfile(xpp);
13952    else if (xpp.getName().equals("ExplanationOfBenefit"))
13953      return parseExplanationOfBenefit(xpp);
13954    else if (xpp.getName().equals("FamilyMemberHistory"))
13955      return parseFamilyMemberHistory(xpp);
13956    else if (xpp.getName().equals("Flag"))
13957      return parseFlag(xpp);
13958    else if (xpp.getName().equals("Goal"))
13959      return parseGoal(xpp);
13960    else if (xpp.getName().equals("Group"))
13961      return parseGroup(xpp);
13962    else if (xpp.getName().equals("GuidanceResponse"))
13963      return parseGuidanceResponse(xpp);
13964    else if (xpp.getName().equals("HealthcareService"))
13965      return parseHealthcareService(xpp);
13966    else if (xpp.getName().equals("ImagingExcerpt"))
13967      return parseImagingExcerpt(xpp);
13968    else if (xpp.getName().equals("ImagingObjectSelection"))
13969      return parseImagingObjectSelection(xpp);
13970    else if (xpp.getName().equals("ImagingStudy"))
13971      return parseImagingStudy(xpp);
13972    else if (xpp.getName().equals("Immunization"))
13973      return parseImmunization(xpp);
13974    else if (xpp.getName().equals("ImmunizationRecommendation"))
13975      return parseImmunizationRecommendation(xpp);
13976    else if (xpp.getName().equals("ImplementationGuide"))
13977      return parseImplementationGuide(xpp);
13978    else if (xpp.getName().equals("Library"))
13979      return parseLibrary(xpp);
13980    else if (xpp.getName().equals("Linkage"))
13981      return parseLinkage(xpp);
13982    else if (xpp.getName().equals("List"))
13983      return parseListResource(xpp);
13984    else if (xpp.getName().equals("Location"))
13985      return parseLocation(xpp);
13986    else if (xpp.getName().equals("Measure"))
13987      return parseMeasure(xpp);
13988    else if (xpp.getName().equals("MeasureReport"))
13989      return parseMeasureReport(xpp);
13990    else if (xpp.getName().equals("Media"))
13991      return parseMedia(xpp);
13992    else if (xpp.getName().equals("Medication"))
13993      return parseMedication(xpp);
13994    else if (xpp.getName().equals("MedicationAdministration"))
13995      return parseMedicationAdministration(xpp);
13996    else if (xpp.getName().equals("MedicationDispense"))
13997      return parseMedicationDispense(xpp);
13998    else if (xpp.getName().equals("MedicationOrder"))
13999      return parseMedicationOrder(xpp);
14000    else if (xpp.getName().equals("MedicationStatement"))
14001      return parseMedicationStatement(xpp);
14002    else if (xpp.getName().equals("MessageHeader"))
14003      return parseMessageHeader(xpp);
14004    else if (xpp.getName().equals("ModuleDefinition"))
14005      return parseModuleDefinition(xpp);
14006    else if (xpp.getName().equals("NamingSystem"))
14007      return parseNamingSystem(xpp);
14008    else if (xpp.getName().equals("NutritionOrder"))
14009      return parseNutritionOrder(xpp);
14010    else if (xpp.getName().equals("Observation"))
14011      return parseObservation(xpp);
14012    else if (xpp.getName().equals("OperationDefinition"))
14013      return parseOperationDefinition(xpp);
14014    else if (xpp.getName().equals("OperationOutcome"))
14015      return parseOperationOutcome(xpp);
14016    else if (xpp.getName().equals("Order"))
14017      return parseOrder(xpp);
14018    else if (xpp.getName().equals("OrderResponse"))
14019      return parseOrderResponse(xpp);
14020    else if (xpp.getName().equals("OrderSet"))
14021      return parseOrderSet(xpp);
14022    else if (xpp.getName().equals("Organization"))
14023      return parseOrganization(xpp);
14024    else if (xpp.getName().equals("Patient"))
14025      return parsePatient(xpp);
14026    else if (xpp.getName().equals("PaymentNotice"))
14027      return parsePaymentNotice(xpp);
14028    else if (xpp.getName().equals("PaymentReconciliation"))
14029      return parsePaymentReconciliation(xpp);
14030    else if (xpp.getName().equals("Person"))
14031      return parsePerson(xpp);
14032    else if (xpp.getName().equals("Practitioner"))
14033      return parsePractitioner(xpp);
14034    else if (xpp.getName().equals("PractitionerRole"))
14035      return parsePractitionerRole(xpp);
14036    else if (xpp.getName().equals("Procedure"))
14037      return parseProcedure(xpp);
14038    else if (xpp.getName().equals("ProcedureRequest"))
14039      return parseProcedureRequest(xpp);
14040    else if (xpp.getName().equals("ProcessRequest"))
14041      return parseProcessRequest(xpp);
14042    else if (xpp.getName().equals("ProcessResponse"))
14043      return parseProcessResponse(xpp);
14044    else if (xpp.getName().equals("Protocol"))
14045      return parseProtocol(xpp);
14046    else if (xpp.getName().equals("Provenance"))
14047      return parseProvenance(xpp);
14048    else if (xpp.getName().equals("Questionnaire"))
14049      return parseQuestionnaire(xpp);
14050    else if (xpp.getName().equals("QuestionnaireResponse"))
14051      return parseQuestionnaireResponse(xpp);
14052    else if (xpp.getName().equals("ReferralRequest"))
14053      return parseReferralRequest(xpp);
14054    else if (xpp.getName().equals("RelatedPerson"))
14055      return parseRelatedPerson(xpp);
14056    else if (xpp.getName().equals("RiskAssessment"))
14057      return parseRiskAssessment(xpp);
14058    else if (xpp.getName().equals("Schedule"))
14059      return parseSchedule(xpp);
14060    else if (xpp.getName().equals("SearchParameter"))
14061      return parseSearchParameter(xpp);
14062    else if (xpp.getName().equals("Sequence"))
14063      return parseSequence(xpp);
14064    else if (xpp.getName().equals("Slot"))
14065      return parseSlot(xpp);
14066    else if (xpp.getName().equals("Specimen"))
14067      return parseSpecimen(xpp);
14068    else if (xpp.getName().equals("StructureDefinition"))
14069      return parseStructureDefinition(xpp);
14070    else if (xpp.getName().equals("StructureMap"))
14071      return parseStructureMap(xpp);
14072    else if (xpp.getName().equals("Subscription"))
14073      return parseSubscription(xpp);
14074    else if (xpp.getName().equals("Substance"))
14075      return parseSubstance(xpp);
14076    else if (xpp.getName().equals("SupplyDelivery"))
14077      return parseSupplyDelivery(xpp);
14078    else if (xpp.getName().equals("SupplyRequest"))
14079      return parseSupplyRequest(xpp);
14080    else if (xpp.getName().equals("Task"))
14081      return parseTask(xpp);
14082    else if (xpp.getName().equals("TestScript"))
14083      return parseTestScript(xpp);
14084    else if (xpp.getName().equals("ValueSet"))
14085      return parseValueSet(xpp);
14086    else if (xpp.getName().equals("VisionPrescription"))
14087      return parseVisionPrescription(xpp);
14088    else if (xpp.getName().equals("Binary"))
14089      return parseBinary(xpp);
14090    throw new FHIRFormatError("Unknown resource type "+xpp.getName()+"");
14091  }
14092
14093  protected Type parseType(String prefix, XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14094    if (xpp.getName().equals(prefix+"markdown"))
14095      return parseMarkdown(xpp);
14096    else if (xpp.getName().equals(prefix+"integer"))
14097      return parseInteger(xpp);
14098    else if (xpp.getName().equals(prefix+"dateTime"))
14099      return parseDateTime(xpp);
14100    else if (xpp.getName().equals(prefix+"unsignedInt"))
14101      return parseUnsignedInt(xpp);
14102    else if (xpp.getName().equals(prefix+"code"))
14103      return parseCode(xpp);
14104    else if (xpp.getName().equals(prefix+"date"))
14105      return parseDate(xpp);
14106    else if (xpp.getName().equals(prefix+"decimal"))
14107      return parseDecimal(xpp);
14108    else if (xpp.getName().equals(prefix+"uri"))
14109      return parseUri(xpp);
14110    else if (xpp.getName().equals(prefix+"id"))
14111      return parseId(xpp);
14112    else if (xpp.getName().equals(prefix+"base64Binary"))
14113      return parseBase64Binary(xpp);
14114    else if (xpp.getName().equals(prefix+"time"))
14115      return parseTime(xpp);
14116    else if (xpp.getName().equals(prefix+"oid"))
14117      return parseOid(xpp);
14118    else if (xpp.getName().equals(prefix+"positiveInt"))
14119      return parsePositiveInt(xpp);
14120    else if (xpp.getName().equals(prefix+"string"))
14121      return parseString(xpp);
14122    else if (xpp.getName().equals(prefix+"boolean"))
14123      return parseBoolean(xpp);
14124    else if (xpp.getName().equals(prefix+"uuid"))
14125      return parseUuid(xpp);
14126    else if (xpp.getName().equals(prefix+"instant"))
14127      return parseInstant(xpp);
14128    else if (xpp.getName().equals(prefix+"Extension"))
14129      return parseExtension(xpp);
14130    else if (xpp.getName().equals(prefix+"Narrative"))
14131      return parseNarrative(xpp);
14132    else if (xpp.getName().equals(prefix+"Period"))
14133      return parsePeriod(xpp);
14134    else if (xpp.getName().equals(prefix+"Coding"))
14135      return parseCoding(xpp);
14136    else if (xpp.getName().equals(prefix+"Range"))
14137      return parseRange(xpp);
14138    else if (xpp.getName().equals(prefix+"Quantity"))
14139      return parseQuantity(xpp);
14140    else if (xpp.getName().equals(prefix+"Attachment"))
14141      return parseAttachment(xpp);
14142    else if (xpp.getName().equals(prefix+"Ratio"))
14143      return parseRatio(xpp);
14144    else if (xpp.getName().equals(prefix+"Annotation"))
14145      return parseAnnotation(xpp);
14146    else if (xpp.getName().equals(prefix+"SampledData"))
14147      return parseSampledData(xpp);
14148    else if (xpp.getName().equals(prefix+"Reference"))
14149      return parseReference(xpp);
14150    else if (xpp.getName().equals(prefix+"CodeableConcept"))
14151      return parseCodeableConcept(xpp);
14152    else if (xpp.getName().equals(prefix+"Identifier"))
14153      return parseIdentifier(xpp);
14154    else if (xpp.getName().equals(prefix+"Signature"))
14155      return parseSignature(xpp);
14156    else if (xpp.getName().equals(prefix+"Age"))
14157      return parseAge(xpp);
14158    else if (xpp.getName().equals(prefix+"Count"))
14159      return parseCount(xpp);
14160    else if (xpp.getName().equals(prefix+"Money"))
14161      return parseMoney(xpp);
14162    else if (xpp.getName().equals(prefix+"Distance"))
14163      return parseDistance(xpp);
14164    else if (xpp.getName().equals(prefix+"Duration"))
14165      return parseDuration(xpp);
14166    else if (xpp.getName().equals(prefix+"SimpleQuantity"))
14167      return parseSimpleQuantity(xpp);
14168    else if (xpp.getName().equals(prefix+"TriggerDefinition"))
14169      return parseTriggerDefinition(xpp);
14170    else if (xpp.getName().equals(prefix+"ElementDefinition"))
14171      return parseElementDefinition(xpp);
14172    else if (xpp.getName().equals(prefix+"Timing"))
14173      return parseTiming(xpp);
14174    else if (xpp.getName().equals(prefix+"ModuleMetadata"))
14175      return parseModuleMetadata(xpp);
14176    else if (xpp.getName().equals(prefix+"ActionDefinition"))
14177      return parseActionDefinition(xpp);
14178    else if (xpp.getName().equals(prefix+"Address"))
14179      return parseAddress(xpp);
14180    else if (xpp.getName().equals(prefix+"HumanName"))
14181      return parseHumanName(xpp);
14182    else if (xpp.getName().equals(prefix+"DataRequirement"))
14183      return parseDataRequirement(xpp);
14184    else if (xpp.getName().equals(prefix+"Meta"))
14185      return parseMeta(xpp);
14186    else if (xpp.getName().equals(prefix+"ParameterDefinition"))
14187      return parseParameterDefinition(xpp);
14188    else if (xpp.getName().equals(prefix+"ContactPoint"))
14189      return parseContactPoint(xpp);
14190    else if (xpp.getName().equals(prefix+"Markdown"))
14191      return parseMarkdown(xpp);
14192    else if (xpp.getName().equals(prefix+"Integer"))
14193      return parseInteger(xpp);
14194    else if (xpp.getName().equals(prefix+"DateTime"))
14195      return parseDateTime(xpp);
14196    else if (xpp.getName().equals(prefix+"UnsignedInt"))
14197      return parseUnsignedInt(xpp);
14198    else if (xpp.getName().equals(prefix+"Code"))
14199      return parseCode(xpp);
14200    else if (xpp.getName().equals(prefix+"Date"))
14201      return parseDate(xpp);
14202    else if (xpp.getName().equals(prefix+"Decimal"))
14203      return parseDecimal(xpp);
14204    else if (xpp.getName().equals(prefix+"Uri"))
14205      return parseUri(xpp);
14206    else if (xpp.getName().equals(prefix+"Id"))
14207      return parseId(xpp);
14208    else if (xpp.getName().equals(prefix+"Base64Binary"))
14209      return parseBase64Binary(xpp);
14210    else if (xpp.getName().equals(prefix+"Time"))
14211      return parseTime(xpp);
14212    else if (xpp.getName().equals(prefix+"Oid"))
14213      return parseOid(xpp);
14214    else if (xpp.getName().equals(prefix+"PositiveInt"))
14215      return parsePositiveInt(xpp);
14216    else if (xpp.getName().equals(prefix+"String"))
14217      return parseString(xpp);
14218    else if (xpp.getName().equals(prefix+"Boolean"))
14219      return parseBoolean(xpp);
14220    else if (xpp.getName().equals(prefix+"Uuid"))
14221      return parseUuid(xpp);
14222    else if (xpp.getName().equals(prefix+"Instant"))
14223      return parseInstant(xpp);
14224    throw new FHIRFormatError("Unknown type "+xpp.getName());
14225  }
14226
14227  protected Type parseType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
14228    if (type.equals("markdown"))
14229      return parseMarkdown(xpp);
14230    else if (type.equals("integer"))
14231      return parseInteger(xpp);
14232    else if (type.equals("dateTime"))
14233      return parseDateTime(xpp);
14234    else if (type.equals("unsignedInt"))
14235      return parseUnsignedInt(xpp);
14236    else if (type.equals("code"))
14237      return parseCode(xpp);
14238    else if (type.equals("date"))
14239      return parseDate(xpp);
14240    else if (type.equals("decimal"))
14241      return parseDecimal(xpp);
14242    else if (type.equals("uri"))
14243      return parseUri(xpp);
14244    else if (type.equals("id"))
14245      return parseId(xpp);
14246    else if (type.equals("base64Binary"))
14247      return parseBase64Binary(xpp);
14248    else if (type.equals("time"))
14249      return parseTime(xpp);
14250    else if (type.equals("oid"))
14251      return parseOid(xpp);
14252    else if (type.equals("positiveInt"))
14253      return parsePositiveInt(xpp);
14254    else if (type.equals("string"))
14255      return parseString(xpp);
14256    else if (type.equals("boolean"))
14257      return parseBoolean(xpp);
14258    else if (type.equals("uuid"))
14259      return parseUuid(xpp);
14260    else if (type.equals("instant"))
14261      return parseInstant(xpp);
14262    else if (type.equals("Extension"))
14263      return parseExtension(xpp);
14264    else if (type.equals("Narrative"))
14265      return parseNarrative(xpp);
14266    else if (type.equals("Period"))
14267      return parsePeriod(xpp);
14268    else if (type.equals("Coding"))
14269      return parseCoding(xpp);
14270    else if (type.equals("Range"))
14271      return parseRange(xpp);
14272    else if (type.equals("Quantity"))
14273      return parseQuantity(xpp);
14274    else if (type.equals("Attachment"))
14275      return parseAttachment(xpp);
14276    else if (type.equals("Ratio"))
14277      return parseRatio(xpp);
14278    else if (type.equals("Annotation"))
14279      return parseAnnotation(xpp);
14280    else if (type.equals("SampledData"))
14281      return parseSampledData(xpp);
14282    else if (type.equals("Reference"))
14283      return parseReference(xpp);
14284    else if (type.equals("CodeableConcept"))
14285      return parseCodeableConcept(xpp);
14286    else if (type.equals("Identifier"))
14287      return parseIdentifier(xpp);
14288    else if (type.equals("Signature"))
14289      return parseSignature(xpp);
14290    else if (type.equals("Age"))
14291      return parseAge(xpp);
14292    else if (type.equals("Count"))
14293      return parseCount(xpp);
14294    else if (type.equals("Money"))
14295      return parseMoney(xpp);
14296    else if (type.equals("Distance"))
14297      return parseDistance(xpp);
14298    else if (type.equals("Duration"))
14299      return parseDuration(xpp);
14300    else if (type.equals("SimpleQuantity"))
14301      return parseSimpleQuantity(xpp);
14302    else if (type.equals("TriggerDefinition"))
14303      return parseTriggerDefinition(xpp);
14304    else if (type.equals("ElementDefinition"))
14305      return parseElementDefinition(xpp);
14306    else if (type.equals("Timing"))
14307      return parseTiming(xpp);
14308    else if (type.equals("ModuleMetadata"))
14309      return parseModuleMetadata(xpp);
14310    else if (type.equals("ActionDefinition"))
14311      return parseActionDefinition(xpp);
14312    else if (type.equals("Address"))
14313      return parseAddress(xpp);
14314    else if (type.equals("HumanName"))
14315      return parseHumanName(xpp);
14316    else if (type.equals("DataRequirement"))
14317      return parseDataRequirement(xpp);
14318    else if (type.equals("Meta"))
14319      return parseMeta(xpp);
14320    else if (type.equals("ParameterDefinition"))
14321      return parseParameterDefinition(xpp);
14322    else if (type.equals("ContactPoint"))
14323      return parseContactPoint(xpp);
14324    throw new FHIRFormatError("Unknown type "+type);
14325  }
14326
14327  public Base parseFragment(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
14328    if (type.equals("Extension"))
14329      return parseExtension(xpp);
14330    else if (type.equals("Narrative"))
14331      return parseNarrative(xpp);
14332    else if (type.equals("Period"))
14333      return parsePeriod(xpp);
14334    else if (type.equals("Coding"))
14335      return parseCoding(xpp);
14336    else if (type.equals("Range"))
14337      return parseRange(xpp);
14338    else if (type.equals("Quantity"))
14339      return parseQuantity(xpp);
14340    else if (type.equals("Attachment"))
14341      return parseAttachment(xpp);
14342    else if (type.equals("Ratio"))
14343      return parseRatio(xpp);
14344    else if (type.equals("Annotation"))
14345      return parseAnnotation(xpp);
14346    else if (type.equals("SampledData"))
14347      return parseSampledData(xpp);
14348    else if (type.equals("Reference"))
14349      return parseReference(xpp);
14350    else if (type.equals("CodeableConcept"))
14351      return parseCodeableConcept(xpp);
14352    else if (type.equals("Identifier"))
14353      return parseIdentifier(xpp);
14354    else if (type.equals("Signature"))
14355      return parseSignature(xpp);
14356    else if (type.equals("Age"))
14357      return parseAge(xpp);
14358    else if (type.equals("Count"))
14359      return parseCount(xpp);
14360    else if (type.equals("Money"))
14361      return parseMoney(xpp);
14362    else if (type.equals("Distance"))
14363      return parseDistance(xpp);
14364    else if (type.equals("Duration"))
14365      return parseDuration(xpp);
14366    else if (type.equals("SimpleQuantity"))
14367      return parseSimpleQuantity(xpp);
14368    else if (type.equals("TriggerDefinition"))
14369      return parseTriggerDefinition(xpp);
14370    else if (type.equals("ElementDefinition"))
14371      return parseElementDefinition(xpp);
14372    else if (type.equals("Timing"))
14373      return parseTiming(xpp);
14374    else if (type.equals("ModuleMetadata"))
14375      return parseModuleMetadata(xpp);
14376    else if (type.equals("ActionDefinition"))
14377      return parseActionDefinition(xpp);
14378    else if (type.equals("Address"))
14379      return parseAddress(xpp);
14380    else if (type.equals("HumanName"))
14381      return parseHumanName(xpp);
14382    else if (type.equals("DataRequirement"))
14383      return parseDataRequirement(xpp);
14384    else if (type.equals("Meta"))
14385      return parseMeta(xpp);
14386    else if (type.equals("ParameterDefinition"))
14387      return parseParameterDefinition(xpp);
14388    else if (type.equals("ContactPoint"))
14389      return parseContactPoint(xpp);
14390    else if (type.equals("Parameters"))
14391      return parseParameters(xpp);
14392    else if (type.equals("Account"))
14393      return parseAccount(xpp);
14394    else if (type.equals("AllergyIntolerance"))
14395      return parseAllergyIntolerance(xpp);
14396    else if (type.equals("Appointment"))
14397      return parseAppointment(xpp);
14398    else if (type.equals("AppointmentResponse"))
14399      return parseAppointmentResponse(xpp);
14400    else if (type.equals("AuditEvent"))
14401      return parseAuditEvent(xpp);
14402    else if (type.equals("Basic"))
14403      return parseBasic(xpp);
14404    else if (type.equals("Binary"))
14405      return parseBinary(xpp);
14406    else if (type.equals("BodySite"))
14407      return parseBodySite(xpp);
14408    else if (type.equals("Bundle"))
14409      return parseBundle(xpp);
14410    else if (type.equals("CarePlan"))
14411      return parseCarePlan(xpp);
14412    else if (type.equals("CareTeam"))
14413      return parseCareTeam(xpp);
14414    else if (type.equals("Claim"))
14415      return parseClaim(xpp);
14416    else if (type.equals("ClaimResponse"))
14417      return parseClaimResponse(xpp);
14418    else if (type.equals("ClinicalImpression"))
14419      return parseClinicalImpression(xpp);
14420    else if (type.equals("CodeSystem"))
14421      return parseCodeSystem(xpp);
14422    else if (type.equals("Communication"))
14423      return parseCommunication(xpp);
14424    else if (type.equals("CommunicationRequest"))
14425      return parseCommunicationRequest(xpp);
14426    else if (type.equals("CompartmentDefinition"))
14427      return parseCompartmentDefinition(xpp);
14428    else if (type.equals("Composition"))
14429      return parseComposition(xpp);
14430    else if (type.equals("ConceptMap"))
14431      return parseConceptMap(xpp);
14432    else if (type.equals("Condition"))
14433      return parseCondition(xpp);
14434    else if (type.equals("Conformance"))
14435      return parseConformance(xpp);
14436    else if (type.equals("Contract"))
14437      return parseContract(xpp);
14438    else if (type.equals("Coverage"))
14439      return parseCoverage(xpp);
14440    else if (type.equals("DataElement"))
14441      return parseDataElement(xpp);
14442    else if (type.equals("DecisionSupportRule"))
14443      return parseDecisionSupportRule(xpp);
14444    else if (type.equals("DecisionSupportServiceModule"))
14445      return parseDecisionSupportServiceModule(xpp);
14446    else if (type.equals("DetectedIssue"))
14447      return parseDetectedIssue(xpp);
14448    else if (type.equals("Device"))
14449      return parseDevice(xpp);
14450    else if (type.equals("DeviceComponent"))
14451      return parseDeviceComponent(xpp);
14452    else if (type.equals("DeviceMetric"))
14453      return parseDeviceMetric(xpp);
14454    else if (type.equals("DeviceUseRequest"))
14455      return parseDeviceUseRequest(xpp);
14456    else if (type.equals("DeviceUseStatement"))
14457      return parseDeviceUseStatement(xpp);
14458    else if (type.equals("DiagnosticOrder"))
14459      return parseDiagnosticOrder(xpp);
14460    else if (type.equals("DiagnosticReport"))
14461      return parseDiagnosticReport(xpp);
14462    else if (type.equals("DocumentManifest"))
14463      return parseDocumentManifest(xpp);
14464    else if (type.equals("DocumentReference"))
14465      return parseDocumentReference(xpp);
14466    else if (type.equals("EligibilityRequest"))
14467      return parseEligibilityRequest(xpp);
14468    else if (type.equals("EligibilityResponse"))
14469      return parseEligibilityResponse(xpp);
14470    else if (type.equals("Encounter"))
14471      return parseEncounter(xpp);
14472    else if (type.equals("EnrollmentRequest"))
14473      return parseEnrollmentRequest(xpp);
14474    else if (type.equals("EnrollmentResponse"))
14475      return parseEnrollmentResponse(xpp);
14476    else if (type.equals("EpisodeOfCare"))
14477      return parseEpisodeOfCare(xpp);
14478    else if (type.equals("ExpansionProfile"))
14479      return parseExpansionProfile(xpp);
14480    else if (type.equals("ExplanationOfBenefit"))
14481      return parseExplanationOfBenefit(xpp);
14482    else if (type.equals("FamilyMemberHistory"))
14483      return parseFamilyMemberHistory(xpp);
14484    else if (type.equals("Flag"))
14485      return parseFlag(xpp);
14486    else if (type.equals("Goal"))
14487      return parseGoal(xpp);
14488    else if (type.equals("Group"))
14489      return parseGroup(xpp);
14490    else if (type.equals("GuidanceResponse"))
14491      return parseGuidanceResponse(xpp);
14492    else if (type.equals("HealthcareService"))
14493      return parseHealthcareService(xpp);
14494    else if (type.equals("ImagingExcerpt"))
14495      return parseImagingExcerpt(xpp);
14496    else if (type.equals("ImagingObjectSelection"))
14497      return parseImagingObjectSelection(xpp);
14498    else if (type.equals("ImagingStudy"))
14499      return parseImagingStudy(xpp);
14500    else if (type.equals("Immunization"))
14501      return parseImmunization(xpp);
14502    else if (type.equals("ImmunizationRecommendation"))
14503      return parseImmunizationRecommendation(xpp);
14504    else if (type.equals("ImplementationGuide"))
14505      return parseImplementationGuide(xpp);
14506    else if (type.equals("Library"))
14507      return parseLibrary(xpp);
14508    else if (type.equals("Linkage"))
14509      return parseLinkage(xpp);
14510    else if (type.equals("List"))
14511      return parseListResource(xpp);
14512    else if (type.equals("Location"))
14513      return parseLocation(xpp);
14514    else if (type.equals("Measure"))
14515      return parseMeasure(xpp);
14516    else if (type.equals("MeasureReport"))
14517      return parseMeasureReport(xpp);
14518    else if (type.equals("Media"))
14519      return parseMedia(xpp);
14520    else if (type.equals("Medication"))
14521      return parseMedication(xpp);
14522    else if (type.equals("MedicationAdministration"))
14523      return parseMedicationAdministration(xpp);
14524    else if (type.equals("MedicationDispense"))
14525      return parseMedicationDispense(xpp);
14526    else if (type.equals("MedicationOrder"))
14527      return parseMedicationOrder(xpp);
14528    else if (type.equals("MedicationStatement"))
14529      return parseMedicationStatement(xpp);
14530    else if (type.equals("MessageHeader"))
14531      return parseMessageHeader(xpp);
14532    else if (type.equals("ModuleDefinition"))
14533      return parseModuleDefinition(xpp);
14534    else if (type.equals("NamingSystem"))
14535      return parseNamingSystem(xpp);
14536    else if (type.equals("NutritionOrder"))
14537      return parseNutritionOrder(xpp);
14538    else if (type.equals("Observation"))
14539      return parseObservation(xpp);
14540    else if (type.equals("OperationDefinition"))
14541      return parseOperationDefinition(xpp);
14542    else if (type.equals("OperationOutcome"))
14543      return parseOperationOutcome(xpp);
14544    else if (type.equals("Order"))
14545      return parseOrder(xpp);
14546    else if (type.equals("OrderResponse"))
14547      return parseOrderResponse(xpp);
14548    else if (type.equals("OrderSet"))
14549      return parseOrderSet(xpp);
14550    else if (type.equals("Organization"))
14551      return parseOrganization(xpp);
14552    else if (type.equals("Patient"))
14553      return parsePatient(xpp);
14554    else if (type.equals("PaymentNotice"))
14555      return parsePaymentNotice(xpp);
14556    else if (type.equals("PaymentReconciliation"))
14557      return parsePaymentReconciliation(xpp);
14558    else if (type.equals("Person"))
14559      return parsePerson(xpp);
14560    else if (type.equals("Practitioner"))
14561      return parsePractitioner(xpp);
14562    else if (type.equals("PractitionerRole"))
14563      return parsePractitionerRole(xpp);
14564    else if (type.equals("Procedure"))
14565      return parseProcedure(xpp);
14566    else if (type.equals("ProcedureRequest"))
14567      return parseProcedureRequest(xpp);
14568    else if (type.equals("ProcessRequest"))
14569      return parseProcessRequest(xpp);
14570    else if (type.equals("ProcessResponse"))
14571      return parseProcessResponse(xpp);
14572    else if (type.equals("Protocol"))
14573      return parseProtocol(xpp);
14574    else if (type.equals("Provenance"))
14575      return parseProvenance(xpp);
14576    else if (type.equals("Questionnaire"))
14577      return parseQuestionnaire(xpp);
14578    else if (type.equals("QuestionnaireResponse"))
14579      return parseQuestionnaireResponse(xpp);
14580    else if (type.equals("ReferralRequest"))
14581      return parseReferralRequest(xpp);
14582    else if (type.equals("RelatedPerson"))
14583      return parseRelatedPerson(xpp);
14584    else if (type.equals("RiskAssessment"))
14585      return parseRiskAssessment(xpp);
14586    else if (type.equals("Schedule"))
14587      return parseSchedule(xpp);
14588    else if (type.equals("SearchParameter"))
14589      return parseSearchParameter(xpp);
14590    else if (type.equals("Sequence"))
14591      return parseSequence(xpp);
14592    else if (type.equals("Slot"))
14593      return parseSlot(xpp);
14594    else if (type.equals("Specimen"))
14595      return parseSpecimen(xpp);
14596    else if (type.equals("StructureDefinition"))
14597      return parseStructureDefinition(xpp);
14598    else if (type.equals("StructureMap"))
14599      return parseStructureMap(xpp);
14600    else if (type.equals("Subscription"))
14601      return parseSubscription(xpp);
14602    else if (type.equals("Substance"))
14603      return parseSubstance(xpp);
14604    else if (type.equals("SupplyDelivery"))
14605      return parseSupplyDelivery(xpp);
14606    else if (type.equals("SupplyRequest"))
14607      return parseSupplyRequest(xpp);
14608    else if (type.equals("Task"))
14609      return parseTask(xpp);
14610    else if (type.equals("TestScript"))
14611      return parseTestScript(xpp);
14612    else if (type.equals("ValueSet"))
14613      return parseValueSet(xpp);
14614    else if (type.equals("VisionPrescription"))
14615      return parseVisionPrescription(xpp);
14616    else if (type.equals("markdown"))
14617      return parseMarkdown(xpp);
14618    else if (type.equals("integer"))
14619      return parseInteger(xpp);
14620    else if (type.equals("dateTime"))
14621      return parseDateTime(xpp);
14622    else if (type.equals("unsignedInt"))
14623      return parseUnsignedInt(xpp);
14624    else if (type.equals("code"))
14625      return parseCode(xpp);
14626    else if (type.equals("date"))
14627      return parseDate(xpp);
14628    else if (type.equals("decimal"))
14629      return parseDecimal(xpp);
14630    else if (type.equals("uri"))
14631      return parseUri(xpp);
14632    else if (type.equals("id"))
14633      return parseId(xpp);
14634    else if (type.equals("base64Binary"))
14635      return parseBase64Binary(xpp);
14636    else if (type.equals("time"))
14637      return parseTime(xpp);
14638    else if (type.equals("oid"))
14639      return parseOid(xpp);
14640    else if (type.equals("positiveInt"))
14641      return parsePositiveInt(xpp);
14642    else if (type.equals("string"))
14643      return parseString(xpp);
14644    else if (type.equals("boolean"))
14645      return parseBoolean(xpp);
14646    else if (type.equals("uuid"))
14647      return parseUuid(xpp);
14648    else if (type.equals("instant"))
14649      return parseInstant(xpp);
14650    throw new FHIRFormatError("Unknown type "+type);
14651  }
14652
14653  private boolean nameIsTypeName(XmlPullParser xpp, String prefix) {
14654        if (xpp.getName().equals(prefix+"Period"))
14655      return true;
14656    if (xpp.getName().equals(prefix+"Coding"))
14657      return true;
14658    if (xpp.getName().equals(prefix+"Range"))
14659      return true;
14660    if (xpp.getName().equals(prefix+"Quantity"))
14661      return true;
14662    if (xpp.getName().equals(prefix+"Attachment"))
14663      return true;
14664    if (xpp.getName().equals(prefix+"Ratio"))
14665      return true;
14666    if (xpp.getName().equals(prefix+"Annotation"))
14667      return true;
14668    if (xpp.getName().equals(prefix+"SampledData"))
14669      return true;
14670    if (xpp.getName().equals(prefix+"Reference"))
14671      return true;
14672    if (xpp.getName().equals(prefix+"CodeableConcept"))
14673      return true;
14674    if (xpp.getName().equals(prefix+"Identifier"))
14675      return true;
14676    if (xpp.getName().equals(prefix+"Signature"))
14677      return true;
14678    if (xpp.getName().equals(prefix+"Age"))
14679      return true;
14680    if (xpp.getName().equals(prefix+"Count"))
14681      return true;
14682    if (xpp.getName().equals(prefix+"Money"))
14683      return true;
14684    if (xpp.getName().equals(prefix+"Distance"))
14685      return true;
14686    if (xpp.getName().equals(prefix+"Duration"))
14687      return true;
14688    if (xpp.getName().equals(prefix+"SimpleQuantity"))
14689      return true;
14690    if (xpp.getName().equals(prefix+"TriggerDefinition"))
14691      return true;
14692    if (xpp.getName().equals(prefix+"ElementDefinition"))
14693      return true;
14694    if (xpp.getName().equals(prefix+"Timing"))
14695      return true;
14696    if (xpp.getName().equals(prefix+"ModuleMetadata"))
14697      return true;
14698    if (xpp.getName().equals(prefix+"ActionDefinition"))
14699      return true;
14700    if (xpp.getName().equals(prefix+"Address"))
14701      return true;
14702    if (xpp.getName().equals(prefix+"HumanName"))
14703      return true;
14704    if (xpp.getName().equals(prefix+"DataRequirement"))
14705      return true;
14706    if (xpp.getName().equals(prefix+"Meta"))
14707      return true;
14708    if (xpp.getName().equals(prefix+"ParameterDefinition"))
14709      return true;
14710    if (xpp.getName().equals(prefix+"ContactPoint"))
14711      return true;
14712    if (xpp.getName().equals(prefix+"Parameters"))
14713      return true;
14714    if (xpp.getName().equals(prefix+"Account"))
14715      return true;
14716    if (xpp.getName().equals(prefix+"AllergyIntolerance"))
14717      return true;
14718    if (xpp.getName().equals(prefix+"Appointment"))
14719      return true;
14720    if (xpp.getName().equals(prefix+"AppointmentResponse"))
14721      return true;
14722    if (xpp.getName().equals(prefix+"AuditEvent"))
14723      return true;
14724    if (xpp.getName().equals(prefix+"Basic"))
14725      return true;
14726    if (xpp.getName().equals(prefix+"Binary"))
14727      return true;
14728    if (xpp.getName().equals(prefix+"BodySite"))
14729      return true;
14730    if (xpp.getName().equals(prefix+"Bundle"))
14731      return true;
14732    if (xpp.getName().equals(prefix+"CarePlan"))
14733      return true;
14734    if (xpp.getName().equals(prefix+"CareTeam"))
14735      return true;
14736    if (xpp.getName().equals(prefix+"Claim"))
14737      return true;
14738    if (xpp.getName().equals(prefix+"ClaimResponse"))
14739      return true;
14740    if (xpp.getName().equals(prefix+"ClinicalImpression"))
14741      return true;
14742    if (xpp.getName().equals(prefix+"CodeSystem"))
14743      return true;
14744    if (xpp.getName().equals(prefix+"Communication"))
14745      return true;
14746    if (xpp.getName().equals(prefix+"CommunicationRequest"))
14747      return true;
14748    if (xpp.getName().equals(prefix+"CompartmentDefinition"))
14749      return true;
14750    if (xpp.getName().equals(prefix+"Composition"))
14751      return true;
14752    if (xpp.getName().equals(prefix+"ConceptMap"))
14753      return true;
14754    if (xpp.getName().equals(prefix+"Condition"))
14755      return true;
14756    if (xpp.getName().equals(prefix+"Conformance"))
14757      return true;
14758    if (xpp.getName().equals(prefix+"Contract"))
14759      return true;
14760    if (xpp.getName().equals(prefix+"Coverage"))
14761      return true;
14762    if (xpp.getName().equals(prefix+"DataElement"))
14763      return true;
14764    if (xpp.getName().equals(prefix+"DecisionSupportRule"))
14765      return true;
14766    if (xpp.getName().equals(prefix+"DecisionSupportServiceModule"))
14767      return true;
14768    if (xpp.getName().equals(prefix+"DetectedIssue"))
14769      return true;
14770    if (xpp.getName().equals(prefix+"Device"))
14771      return true;
14772    if (xpp.getName().equals(prefix+"DeviceComponent"))
14773      return true;
14774    if (xpp.getName().equals(prefix+"DeviceMetric"))
14775      return true;
14776    if (xpp.getName().equals(prefix+"DeviceUseRequest"))
14777      return true;
14778    if (xpp.getName().equals(prefix+"DeviceUseStatement"))
14779      return true;
14780    if (xpp.getName().equals(prefix+"DiagnosticOrder"))
14781      return true;
14782    if (xpp.getName().equals(prefix+"DiagnosticReport"))
14783      return true;
14784    if (xpp.getName().equals(prefix+"DocumentManifest"))
14785      return true;
14786    if (xpp.getName().equals(prefix+"DocumentReference"))
14787      return true;
14788    if (xpp.getName().equals(prefix+"EligibilityRequest"))
14789      return true;
14790    if (xpp.getName().equals(prefix+"EligibilityResponse"))
14791      return true;
14792    if (xpp.getName().equals(prefix+"Encounter"))
14793      return true;
14794    if (xpp.getName().equals(prefix+"EnrollmentRequest"))
14795      return true;
14796    if (xpp.getName().equals(prefix+"EnrollmentResponse"))
14797      return true;
14798    if (xpp.getName().equals(prefix+"EpisodeOfCare"))
14799      return true;
14800    if (xpp.getName().equals(prefix+"ExpansionProfile"))
14801      return true;
14802    if (xpp.getName().equals(prefix+"ExplanationOfBenefit"))
14803      return true;
14804    if (xpp.getName().equals(prefix+"FamilyMemberHistory"))
14805      return true;
14806    if (xpp.getName().equals(prefix+"Flag"))
14807      return true;
14808    if (xpp.getName().equals(prefix+"Goal"))
14809      return true;
14810    if (xpp.getName().equals(prefix+"Group"))
14811      return true;
14812    if (xpp.getName().equals(prefix+"GuidanceResponse"))
14813      return true;
14814    if (xpp.getName().equals(prefix+"HealthcareService"))
14815      return true;
14816    if (xpp.getName().equals(prefix+"ImagingExcerpt"))
14817      return true;
14818    if (xpp.getName().equals(prefix+"ImagingObjectSelection"))
14819      return true;
14820    if (xpp.getName().equals(prefix+"ImagingStudy"))
14821      return true;
14822    if (xpp.getName().equals(prefix+"Immunization"))
14823      return true;
14824    if (xpp.getName().equals(prefix+"ImmunizationRecommendation"))
14825      return true;
14826    if (xpp.getName().equals(prefix+"ImplementationGuide"))
14827      return true;
14828    if (xpp.getName().equals(prefix+"Library"))
14829      return true;
14830    if (xpp.getName().equals(prefix+"Linkage"))
14831      return true;
14832    if (xpp.getName().equals(prefix+"List"))
14833      return true;
14834    if (xpp.getName().equals(prefix+"Location"))
14835      return true;
14836    if (xpp.getName().equals(prefix+"Measure"))
14837      return true;
14838    if (xpp.getName().equals(prefix+"MeasureReport"))
14839      return true;
14840    if (xpp.getName().equals(prefix+"Media"))
14841      return true;
14842    if (xpp.getName().equals(prefix+"Medication"))
14843      return true;
14844    if (xpp.getName().equals(prefix+"MedicationAdministration"))
14845      return true;
14846    if (xpp.getName().equals(prefix+"MedicationDispense"))
14847      return true;
14848    if (xpp.getName().equals(prefix+"MedicationOrder"))
14849      return true;
14850    if (xpp.getName().equals(prefix+"MedicationStatement"))
14851      return true;
14852    if (xpp.getName().equals(prefix+"MessageHeader"))
14853      return true;
14854    if (xpp.getName().equals(prefix+"ModuleDefinition"))
14855      return true;
14856    if (xpp.getName().equals(prefix+"NamingSystem"))
14857      return true;
14858    if (xpp.getName().equals(prefix+"NutritionOrder"))
14859      return true;
14860    if (xpp.getName().equals(prefix+"Observation"))
14861      return true;
14862    if (xpp.getName().equals(prefix+"OperationDefinition"))
14863      return true;
14864    if (xpp.getName().equals(prefix+"OperationOutcome"))
14865      return true;
14866    if (xpp.getName().equals(prefix+"Order"))
14867      return true;
14868    if (xpp.getName().equals(prefix+"OrderResponse"))
14869      return true;
14870    if (xpp.getName().equals(prefix+"OrderSet"))
14871      return true;
14872    if (xpp.getName().equals(prefix+"Organization"))
14873      return true;
14874    if (xpp.getName().equals(prefix+"Patient"))
14875      return true;
14876    if (xpp.getName().equals(prefix+"PaymentNotice"))
14877      return true;
14878    if (xpp.getName().equals(prefix+"PaymentReconciliation"))
14879      return true;
14880    if (xpp.getName().equals(prefix+"Person"))
14881      return true;
14882    if (xpp.getName().equals(prefix+"Practitioner"))
14883      return true;
14884    if (xpp.getName().equals(prefix+"PractitionerRole"))
14885      return true;
14886    if (xpp.getName().equals(prefix+"Procedure"))
14887      return true;
14888    if (xpp.getName().equals(prefix+"ProcedureRequest"))
14889      return true;
14890    if (xpp.getName().equals(prefix+"ProcessRequest"))
14891      return true;
14892    if (xpp.getName().equals(prefix+"ProcessResponse"))
14893      return true;
14894    if (xpp.getName().equals(prefix+"Protocol"))
14895      return true;
14896    if (xpp.getName().equals(prefix+"Provenance"))
14897      return true;
14898    if (xpp.getName().equals(prefix+"Questionnaire"))
14899      return true;
14900    if (xpp.getName().equals(prefix+"QuestionnaireResponse"))
14901      return true;
14902    if (xpp.getName().equals(prefix+"ReferralRequest"))
14903      return true;
14904    if (xpp.getName().equals(prefix+"RelatedPerson"))
14905      return true;
14906    if (xpp.getName().equals(prefix+"RiskAssessment"))
14907      return true;
14908    if (xpp.getName().equals(prefix+"Schedule"))
14909      return true;
14910    if (xpp.getName().equals(prefix+"SearchParameter"))
14911      return true;
14912    if (xpp.getName().equals(prefix+"Sequence"))
14913      return true;
14914    if (xpp.getName().equals(prefix+"Slot"))
14915      return true;
14916    if (xpp.getName().equals(prefix+"Specimen"))
14917      return true;
14918    if (xpp.getName().equals(prefix+"StructureDefinition"))
14919      return true;
14920    if (xpp.getName().equals(prefix+"StructureMap"))
14921      return true;
14922    if (xpp.getName().equals(prefix+"Subscription"))
14923      return true;
14924    if (xpp.getName().equals(prefix+"Substance"))
14925      return true;
14926    if (xpp.getName().equals(prefix+"SupplyDelivery"))
14927      return true;
14928    if (xpp.getName().equals(prefix+"SupplyRequest"))
14929      return true;
14930    if (xpp.getName().equals(prefix+"Task"))
14931      return true;
14932    if (xpp.getName().equals(prefix+"TestScript"))
14933      return true;
14934    if (xpp.getName().equals(prefix+"ValueSet"))
14935      return true;
14936    if (xpp.getName().equals(prefix+"VisionPrescription"))
14937      return true;
14938    if (xpp.getName().equals(prefix+"Markdown"))
14939      return true;
14940    if (xpp.getName().equals(prefix+"Integer"))
14941      return true;
14942    if (xpp.getName().equals(prefix+"DateTime"))
14943      return true;
14944    if (xpp.getName().equals(prefix+"UnsignedInt"))
14945      return true;
14946    if (xpp.getName().equals(prefix+"Code"))
14947      return true;
14948    if (xpp.getName().equals(prefix+"Date"))
14949      return true;
14950    if (xpp.getName().equals(prefix+"Decimal"))
14951      return true;
14952    if (xpp.getName().equals(prefix+"Uri"))
14953      return true;
14954    if (xpp.getName().equals(prefix+"Id"))
14955      return true;
14956    if (xpp.getName().equals(prefix+"Base64Binary"))
14957      return true;
14958    if (xpp.getName().equals(prefix+"Time"))
14959      return true;
14960    if (xpp.getName().equals(prefix+"Oid"))
14961      return true;
14962    if (xpp.getName().equals(prefix+"PositiveInt"))
14963      return true;
14964    if (xpp.getName().equals(prefix+"String"))
14965      return true;
14966    if (xpp.getName().equals(prefix+"Boolean"))
14967      return true;
14968    if (xpp.getName().equals(prefix+"Uuid"))
14969      return true;
14970    if (xpp.getName().equals(prefix+"Instant"))
14971      return true;
14972    return false;
14973  }
14974  protected void composeElementElements(Element element) throws IOException {
14975    for (Extension e : element.getExtension()) {
14976      composeExtension("extension", e);
14977    }
14978  }
14979
14980  protected void composeBackboneElements(BackboneElement element) throws IOException {
14981    composeElementElements(element);
14982    for (Extension e : element.getModifierExtension()) {
14983      composeExtension("modifierExtension", e);
14984    }
14985  }
14986
14987  protected <E extends Enum<E>> void composeEnumeration(String name, Enumeration<E> value, EnumFactory e) throws IOException {
14988    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {
14989      composeElementAttributes(value);
14990      if (value.getValue() != null) 
14991        xml.attribute("value", e.toCode(value.getValue()));
14992        
14993      xml.enter(FHIR_NS, name);
14994      composeElementElements(value);
14995      composeElementClose(value);
14996      xml.exit(FHIR_NS, name);
14997    }    
14998  }    
14999
15000  protected void composeMarkdown(String name, MarkdownType value) throws IOException  {
15001    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// markdown
15002      composeElementAttributes(value);
15003      if (value.asStringValue() != null) 
15004        xml.attribute("value", value.asStringValue());
15005        
15006      xml.enter(FHIR_NS, name);
15007      composeElementElements(value);
15008      composeElementClose(value);
15009      xml.exit(FHIR_NS, name);
15010    }    
15011  }    
15012
15013  protected void composeInteger(String name, IntegerType value) throws IOException  {
15014    if (value != null) { // integer
15015      composeElementAttributes(value);
15016      if (value.asStringValue() != null) 
15017        xml.attribute("value", value.asStringValue());
15018        
15019      xml.enter(FHIR_NS, name);
15020      composeElementElements(value);
15021      composeElementClose(value);
15022      xml.exit(FHIR_NS, name);
15023    }    
15024  }    
15025
15026  protected void composeDateTime(String name, DateTimeType value) throws IOException  {
15027    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// dateTime
15028      composeElementAttributes(value);
15029      if (value.asStringValue() != null) 
15030        xml.attribute("value", value.asStringValue());
15031        
15032      xml.enter(FHIR_NS, name);
15033      composeElementElements(value);
15034      composeElementClose(value);
15035      xml.exit(FHIR_NS, name);
15036    }    
15037  }    
15038
15039  protected void composeUnsignedInt(String name, UnsignedIntType value) throws IOException  {
15040    if (value != null) { // unsignedInt
15041      composeElementAttributes(value);
15042      if (value.asStringValue() != null) 
15043        xml.attribute("value", value.asStringValue());
15044        
15045      xml.enter(FHIR_NS, name);
15046      composeElementElements(value);
15047      composeElementClose(value);
15048      xml.exit(FHIR_NS, name);
15049    }    
15050  }    
15051
15052  protected void composeCode(String name, CodeType value) throws IOException  {
15053    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// code
15054      composeElementAttributes(value);
15055      if (value.asStringValue() != null) 
15056        xml.attribute("value", value.asStringValue());
15057        
15058      xml.enter(FHIR_NS, name);
15059      composeElementElements(value);
15060      composeElementClose(value);
15061      xml.exit(FHIR_NS, name);
15062    }    
15063  }    
15064
15065  protected void composeDate(String name, DateType value) throws IOException  {
15066    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// date
15067      composeElementAttributes(value);
15068      if (value.asStringValue() != null) 
15069        xml.attribute("value", value.asStringValue());
15070        
15071      xml.enter(FHIR_NS, name);
15072      composeElementElements(value);
15073      composeElementClose(value);
15074      xml.exit(FHIR_NS, name);
15075    }    
15076  }    
15077
15078  protected void composeDecimal(String name, DecimalType value) throws IOException  {
15079    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// decimal
15080      composeElementAttributes(value);
15081      if (value.asStringValue() != null) 
15082        xml.attribute("value", value.asStringValue());
15083        
15084      xml.enter(FHIR_NS, name);
15085      composeElementElements(value);
15086      composeElementClose(value);
15087      xml.exit(FHIR_NS, name);
15088    }    
15089  }    
15090
15091  protected void composeUri(String name, UriType value) throws IOException  {
15092    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// uri
15093      composeElementAttributes(value);
15094      if (value.asStringValue() != null) 
15095        xml.attribute("value", value.asStringValue());
15096        
15097      xml.enter(FHIR_NS, name);
15098      composeElementElements(value);
15099      composeElementClose(value);
15100      xml.exit(FHIR_NS, name);
15101    }    
15102  }    
15103
15104  protected void composeId(String name, IdType value) throws IOException  {
15105    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// id
15106      composeElementAttributes(value);
15107      if (value.asStringValue() != null) 
15108        xml.attribute("value", value.asStringValue());
15109        
15110      xml.enter(FHIR_NS, name);
15111      composeElementElements(value);
15112      composeElementClose(value);
15113      xml.exit(FHIR_NS, name);
15114    }    
15115  }    
15116
15117  protected void composeBase64Binary(String name, Base64BinaryType value) throws IOException  {
15118    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// base64Binary
15119      composeElementAttributes(value);
15120      if (value.asStringValue() != null) 
15121        xml.attribute("value", value.asStringValue());
15122        
15123      xml.enter(FHIR_NS, name);
15124      composeElementElements(value);
15125      composeElementClose(value);
15126      xml.exit(FHIR_NS, name);
15127    }    
15128  }    
15129
15130  protected void composeTime(String name, TimeType value) throws IOException  {
15131    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// time
15132      composeElementAttributes(value);
15133      if (value.asStringValue() != null) 
15134        xml.attribute("value", value.asStringValue());
15135        
15136      xml.enter(FHIR_NS, name);
15137      composeElementElements(value);
15138      composeElementClose(value);
15139      xml.exit(FHIR_NS, name);
15140    }    
15141  }    
15142
15143  protected void composeOid(String name, OidType value) throws IOException  {
15144    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// oid
15145      composeElementAttributes(value);
15146      if (value.asStringValue() != null) 
15147        xml.attribute("value", value.asStringValue());
15148        
15149      xml.enter(FHIR_NS, name);
15150      composeElementElements(value);
15151      composeElementClose(value);
15152      xml.exit(FHIR_NS, name);
15153    }    
15154  }    
15155
15156  protected void composePositiveInt(String name, PositiveIntType value) throws IOException  {
15157    if (value != null) { // positiveInt
15158      composeElementAttributes(value);
15159      if (value.asStringValue() != null) 
15160        xml.attribute("value", value.asStringValue());
15161        
15162      xml.enter(FHIR_NS, name);
15163      composeElementElements(value);
15164      composeElementClose(value);
15165      xml.exit(FHIR_NS, name);
15166    }    
15167  }    
15168
15169  protected void composeString(String name, StringType value) throws IOException  {
15170    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// string
15171      composeElementAttributes(value);
15172      if (value.asStringValue() != null) 
15173        xml.attribute("value", value.asStringValue());
15174        
15175      xml.enter(FHIR_NS, name);
15176      composeElementElements(value);
15177      composeElementClose(value);
15178      xml.exit(FHIR_NS, name);
15179    }    
15180  }    
15181
15182  protected void composeBoolean(String name, BooleanType value) throws IOException  {
15183    if (value != null) { // boolean
15184      composeElementAttributes(value);
15185      if (value.asStringValue() != null) 
15186        xml.attribute("value", value.asStringValue());
15187        
15188      xml.enter(FHIR_NS, name);
15189      composeElementElements(value);
15190      composeElementClose(value);
15191      xml.exit(FHIR_NS, name);
15192    }    
15193  }    
15194
15195  protected void composeUuid(String name, UuidType value) throws IOException  {
15196    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// uuid
15197      composeElementAttributes(value);
15198      if (value.asStringValue() != null) 
15199        xml.attribute("value", value.asStringValue());
15200        
15201      xml.enter(FHIR_NS, name);
15202      composeElementElements(value);
15203      composeElementClose(value);
15204      xml.exit(FHIR_NS, name);
15205    }    
15206  }    
15207
15208  protected void composeInstant(String name, InstantType value) throws IOException  {
15209    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// instant
15210      composeElementAttributes(value);
15211      if (value.asStringValue() != null) 
15212        xml.attribute("value", value.asStringValue());
15213        
15214      xml.enter(FHIR_NS, name);
15215      composeElementElements(value);
15216      composeElementClose(value);
15217      xml.exit(FHIR_NS, name);
15218    }    
15219  }    
15220
15221  protected void composeExtension(String name, Extension element) throws IOException {
15222    if (element != null) {
15223      composeElementAttributes(element);
15224      if (element.hasUrlElement())
15225        xml.attribute("url", element.getUrlElement().getValue());
15226      xml.enter(FHIR_NS, name);
15227      composeElementElements(element);
15228      if (element.hasValue()) {
15229        composeType("value", element.getValue());
15230      }      composeElementClose(element);
15231      xml.exit(FHIR_NS, name);
15232    }
15233  }
15234
15235  protected void composeNarrative(String name, Narrative element) throws IOException {
15236    if (element != null) {
15237      composeElementAttributes(element);
15238      xml.enter(FHIR_NS, name);
15239      composeElementElements(element);
15240      if (element.hasStatusElement())
15241        composeEnumeration("status", element.getStatusElement(), new Narrative.NarrativeStatusEnumFactory());
15242      if (element.hasDiv()) {
15243        composeXhtml("div", element.getDiv());
15244      }
15245      composeElementClose(element);
15246      xml.exit(FHIR_NS, name);
15247    }
15248  }
15249
15250  protected void composePeriod(String name, Period element) throws IOException {
15251    if (element != null) {
15252      composeTypeAttributes(element);
15253      xml.enter(FHIR_NS, name);
15254      composeElementElements(element);
15255      if (element.hasStartElement()) {
15256        composeDateTime("start", element.getStartElement());
15257      }
15258      if (element.hasEndElement()) {
15259        composeDateTime("end", element.getEndElement());
15260      }
15261      composeElementClose(element);
15262      xml.exit(FHIR_NS, name);
15263    }
15264  }
15265
15266  protected void composeCoding(String name, Coding element) throws IOException {
15267    if (element != null) {
15268      composeTypeAttributes(element);
15269      xml.enter(FHIR_NS, name);
15270      composeElementElements(element);
15271      if (element.hasSystemElement()) {
15272        composeUri("system", element.getSystemElement());
15273      }
15274      if (element.hasVersionElement()) {
15275        composeString("version", element.getVersionElement());
15276      }
15277      if (element.hasCodeElement()) {
15278        composeCode("code", element.getCodeElement());
15279      }
15280      if (element.hasDisplayElement()) {
15281        composeString("display", element.getDisplayElement());
15282      }
15283      if (element.hasUserSelectedElement()) {
15284        composeBoolean("userSelected", element.getUserSelectedElement());
15285      }
15286      composeElementClose(element);
15287      xml.exit(FHIR_NS, name);
15288    }
15289  }
15290
15291  protected void composeRange(String name, Range element) throws IOException {
15292    if (element != null) {
15293      composeTypeAttributes(element);
15294      xml.enter(FHIR_NS, name);
15295      composeElementElements(element);
15296      if (element.hasLow()) {
15297        composeSimpleQuantity("low", element.getLow());
15298      }
15299      if (element.hasHigh()) {
15300        composeSimpleQuantity("high", element.getHigh());
15301      }
15302      composeElementClose(element);
15303      xml.exit(FHIR_NS, name);
15304    }
15305  }
15306
15307  protected void composeQuantity(String name, Quantity element) throws IOException {
15308    if (element != null) {
15309      composeTypeAttributes(element);
15310      xml.enter(FHIR_NS, name);
15311      composeElementElements(element);
15312      if (element.hasValueElement()) {
15313        composeDecimal("value", element.getValueElement());
15314      }
15315      if (element.hasComparatorElement())
15316        composeEnumeration("comparator", element.getComparatorElement(), new Quantity.QuantityComparatorEnumFactory());
15317      if (element.hasUnitElement()) {
15318        composeString("unit", element.getUnitElement());
15319      }
15320      if (element.hasSystemElement()) {
15321        composeUri("system", element.getSystemElement());
15322      }
15323      if (element.hasCodeElement()) {
15324        composeCode("code", element.getCodeElement());
15325      }
15326      composeElementClose(element);
15327      xml.exit(FHIR_NS, name);
15328    }
15329  }
15330
15331  protected void composeAttachment(String name, Attachment element) throws IOException {
15332    if (element != null) {
15333      composeTypeAttributes(element);
15334      xml.enter(FHIR_NS, name);
15335      composeElementElements(element);
15336      if (element.hasContentTypeElement()) {
15337        composeCode("contentType", element.getContentTypeElement());
15338      }
15339      if (element.hasLanguageElement()) {
15340        composeCode("language", element.getLanguageElement());
15341      }
15342      if (element.hasDataElement()) {
15343        composeBase64Binary("data", element.getDataElement());
15344      }
15345      if (element.hasUrlElement()) {
15346        composeUri("url", element.getUrlElement());
15347      }
15348      if (element.hasSizeElement()) {
15349        composeUnsignedInt("size", element.getSizeElement());
15350      }
15351      if (element.hasHashElement()) {
15352        composeBase64Binary("hash", element.getHashElement());
15353      }
15354      if (element.hasTitleElement()) {
15355        composeString("title", element.getTitleElement());
15356      }
15357      if (element.hasCreationElement()) {
15358        composeDateTime("creation", element.getCreationElement());
15359      }
15360      composeElementClose(element);
15361      xml.exit(FHIR_NS, name);
15362    }
15363  }
15364
15365  protected void composeRatio(String name, Ratio element) throws IOException {
15366    if (element != null) {
15367      composeTypeAttributes(element);
15368      xml.enter(FHIR_NS, name);
15369      composeElementElements(element);
15370      if (element.hasNumerator()) {
15371        composeQuantity("numerator", element.getNumerator());
15372      }
15373      if (element.hasDenominator()) {
15374        composeQuantity("denominator", element.getDenominator());
15375      }
15376      composeElementClose(element);
15377      xml.exit(FHIR_NS, name);
15378    }
15379  }
15380
15381  protected void composeAnnotation(String name, Annotation element) throws IOException {
15382    if (element != null) {
15383      composeTypeAttributes(element);
15384      xml.enter(FHIR_NS, name);
15385      composeElementElements(element);
15386      if (element.hasAuthor()) {
15387        composeType("author", element.getAuthor());
15388      }      if (element.hasTimeElement()) {
15389        composeDateTime("time", element.getTimeElement());
15390      }
15391      if (element.hasTextElement()) {
15392        composeString("text", element.getTextElement());
15393      }
15394      composeElementClose(element);
15395      xml.exit(FHIR_NS, name);
15396    }
15397  }
15398
15399  protected void composeSampledData(String name, SampledData element) throws IOException {
15400    if (element != null) {
15401      composeTypeAttributes(element);
15402      xml.enter(FHIR_NS, name);
15403      composeElementElements(element);
15404      if (element.hasOrigin()) {
15405        composeSimpleQuantity("origin", element.getOrigin());
15406      }
15407      if (element.hasPeriodElement()) {
15408        composeDecimal("period", element.getPeriodElement());
15409      }
15410      if (element.hasFactorElement()) {
15411        composeDecimal("factor", element.getFactorElement());
15412      }
15413      if (element.hasLowerLimitElement()) {
15414        composeDecimal("lowerLimit", element.getLowerLimitElement());
15415      }
15416      if (element.hasUpperLimitElement()) {
15417        composeDecimal("upperLimit", element.getUpperLimitElement());
15418      }
15419      if (element.hasDimensionsElement()) {
15420        composePositiveInt("dimensions", element.getDimensionsElement());
15421      }
15422      if (element.hasDataElement()) {
15423        composeString("data", element.getDataElement());
15424      }
15425      composeElementClose(element);
15426      xml.exit(FHIR_NS, name);
15427    }
15428  }
15429
15430  protected void composeReference(String name, Reference element) throws IOException {
15431    if (element != null) {
15432      composeTypeAttributes(element);
15433      xml.enter(FHIR_NS, name);
15434      composeElementElements(element);
15435      if (element.hasReferenceElement()) {
15436        composeString("reference", element.getReferenceElement());
15437      }
15438      if (element.hasDisplayElement()) {
15439        composeString("display", element.getDisplayElement());
15440      }
15441      composeElementClose(element);
15442      xml.exit(FHIR_NS, name);
15443    }
15444  }
15445
15446  protected void composeCodeableConcept(String name, CodeableConcept element) throws IOException {
15447    if (element != null) {
15448      composeTypeAttributes(element);
15449      xml.enter(FHIR_NS, name);
15450      composeElementElements(element);
15451      if (element.hasCoding()) { 
15452        for (Coding e : element.getCoding()) 
15453          composeCoding("coding", e);
15454      }
15455      if (element.hasTextElement()) {
15456        composeString("text", element.getTextElement());
15457      }
15458      composeElementClose(element);
15459      xml.exit(FHIR_NS, name);
15460    }
15461  }
15462
15463  protected void composeIdentifier(String name, Identifier element) throws IOException {
15464    if (element != null) {
15465      composeTypeAttributes(element);
15466      xml.enter(FHIR_NS, name);
15467      composeElementElements(element);
15468      if (element.hasUseElement())
15469        composeEnumeration("use", element.getUseElement(), new Identifier.IdentifierUseEnumFactory());
15470      if (element.hasType()) {
15471        composeCodeableConcept("type", element.getType());
15472      }
15473      if (element.hasSystemElement()) {
15474        composeUri("system", element.getSystemElement());
15475      }
15476      if (element.hasValueElement()) {
15477        composeString("value", element.getValueElement());
15478      }
15479      if (element.hasPeriod()) {
15480        composePeriod("period", element.getPeriod());
15481      }
15482      if (element.hasAssigner()) {
15483        composeReference("assigner", element.getAssigner());
15484      }
15485      composeElementClose(element);
15486      xml.exit(FHIR_NS, name);
15487    }
15488  }
15489
15490  protected void composeSignature(String name, Signature element) throws IOException {
15491    if (element != null) {
15492      composeTypeAttributes(element);
15493      xml.enter(FHIR_NS, name);
15494      composeElementElements(element);
15495      if (element.hasType()) { 
15496        for (Coding e : element.getType()) 
15497          composeCoding("type", e);
15498      }
15499      if (element.hasWhenElement()) {
15500        composeInstant("when", element.getWhenElement());
15501      }
15502      if (element.hasWho()) {
15503        composeType("who", element.getWho());
15504      }      if (element.hasContentTypeElement()) {
15505        composeCode("contentType", element.getContentTypeElement());
15506      }
15507      if (element.hasBlobElement()) {
15508        composeBase64Binary("blob", element.getBlobElement());
15509      }
15510      composeElementClose(element);
15511      xml.exit(FHIR_NS, name);
15512    }
15513  }
15514
15515  protected void composeAge(String name, Age element) throws IOException {
15516    if (element != null) {
15517      composeTypeAttributes(element);
15518      xml.enter(FHIR_NS, name);
15519      composeElementElements(element);
15520      if (element.hasValueElement()) {
15521        composeDecimal("value", element.getValueElement());
15522      }
15523      if (element.hasComparatorElement())
15524        composeEnumeration("comparator", element.getComparatorElement(), new Age.QuantityComparatorEnumFactory());
15525      if (element.hasUnitElement()) {
15526        composeString("unit", element.getUnitElement());
15527      }
15528      if (element.hasSystemElement()) {
15529        composeUri("system", element.getSystemElement());
15530      }
15531      if (element.hasCodeElement()) {
15532        composeCode("code", element.getCodeElement());
15533      }
15534      composeElementClose(element);
15535      xml.exit(FHIR_NS, name);
15536    }
15537  }
15538
15539  protected void composeCount(String name, Count element) throws IOException {
15540    if (element != null) {
15541      composeTypeAttributes(element);
15542      xml.enter(FHIR_NS, name);
15543      composeElementElements(element);
15544      if (element.hasValueElement()) {
15545        composeDecimal("value", element.getValueElement());
15546      }
15547      if (element.hasComparatorElement())
15548        composeEnumeration("comparator", element.getComparatorElement(), new Count.QuantityComparatorEnumFactory());
15549      if (element.hasUnitElement()) {
15550        composeString("unit", element.getUnitElement());
15551      }
15552      if (element.hasSystemElement()) {
15553        composeUri("system", element.getSystemElement());
15554      }
15555      if (element.hasCodeElement()) {
15556        composeCode("code", element.getCodeElement());
15557      }
15558      composeElementClose(element);
15559      xml.exit(FHIR_NS, name);
15560    }
15561  }
15562
15563  protected void composeMoney(String name, Money element) throws IOException {
15564    if (element != null) {
15565      composeTypeAttributes(element);
15566      xml.enter(FHIR_NS, name);
15567      composeElementElements(element);
15568      if (element.hasValueElement()) {
15569        composeDecimal("value", element.getValueElement());
15570      }
15571      if (element.hasComparatorElement())
15572        composeEnumeration("comparator", element.getComparatorElement(), new Money.QuantityComparatorEnumFactory());
15573      if (element.hasUnitElement()) {
15574        composeString("unit", element.getUnitElement());
15575      }
15576      if (element.hasSystemElement()) {
15577        composeUri("system", element.getSystemElement());
15578      }
15579      if (element.hasCodeElement()) {
15580        composeCode("code", element.getCodeElement());
15581      }
15582      composeElementClose(element);
15583      xml.exit(FHIR_NS, name);
15584    }
15585  }
15586
15587  protected void composeDistance(String name, Distance element) throws IOException {
15588    if (element != null) {
15589      composeTypeAttributes(element);
15590      xml.enter(FHIR_NS, name);
15591      composeElementElements(element);
15592      if (element.hasValueElement()) {
15593        composeDecimal("value", element.getValueElement());
15594      }
15595      if (element.hasComparatorElement())
15596        composeEnumeration("comparator", element.getComparatorElement(), new Distance.QuantityComparatorEnumFactory());
15597      if (element.hasUnitElement()) {
15598        composeString("unit", element.getUnitElement());
15599      }
15600      if (element.hasSystemElement()) {
15601        composeUri("system", element.getSystemElement());
15602      }
15603      if (element.hasCodeElement()) {
15604        composeCode("code", element.getCodeElement());
15605      }
15606      composeElementClose(element);
15607      xml.exit(FHIR_NS, name);
15608    }
15609  }
15610
15611  protected void composeDuration(String name, Duration element) throws IOException {
15612    if (element != null) {
15613      composeTypeAttributes(element);
15614      xml.enter(FHIR_NS, name);
15615      composeElementElements(element);
15616      if (element.hasValueElement()) {
15617        composeDecimal("value", element.getValueElement());
15618      }
15619      if (element.hasComparatorElement())
15620        composeEnumeration("comparator", element.getComparatorElement(), new Duration.QuantityComparatorEnumFactory());
15621      if (element.hasUnitElement()) {
15622        composeString("unit", element.getUnitElement());
15623      }
15624      if (element.hasSystemElement()) {
15625        composeUri("system", element.getSystemElement());
15626      }
15627      if (element.hasCodeElement()) {
15628        composeCode("code", element.getCodeElement());
15629      }
15630      composeElementClose(element);
15631      xml.exit(FHIR_NS, name);
15632    }
15633  }
15634
15635  protected void composeSimpleQuantity(String name, SimpleQuantity element) throws IOException {
15636    if (element != null) {
15637      composeTypeAttributes(element);
15638      xml.enter(FHIR_NS, name);
15639      composeElementElements(element);
15640      if (element.hasValueElement()) {
15641        composeDecimal("value", element.getValueElement());
15642      }
15643      if (element.hasComparatorElement())
15644        composeEnumeration("comparator", element.getComparatorElement(), new SimpleQuantity.QuantityComparatorEnumFactory());
15645      if (element.hasUnitElement()) {
15646        composeString("unit", element.getUnitElement());
15647      }
15648      if (element.hasSystemElement()) {
15649        composeUri("system", element.getSystemElement());
15650      }
15651      if (element.hasCodeElement()) {
15652        composeCode("code", element.getCodeElement());
15653      }
15654      composeElementClose(element);
15655      xml.exit(FHIR_NS, name);
15656    }
15657  }
15658
15659  protected void composeTriggerDefinition(String name, TriggerDefinition element) throws IOException {
15660    if (element != null) {
15661      composeElementAttributes(element);
15662      xml.enter(FHIR_NS, name);
15663      composeElementElements(element);
15664      if (element.hasTypeElement())
15665        composeEnumeration("type", element.getTypeElement(), new TriggerDefinition.TriggerTypeEnumFactory());
15666      if (element.hasEventNameElement()) {
15667        composeString("eventName", element.getEventNameElement());
15668      }
15669      if (element.hasEventTiming()) {
15670        composeType("eventTiming", element.getEventTiming());
15671      }      if (element.hasEventData()) {
15672        composeDataRequirement("eventData", element.getEventData());
15673      }
15674      composeElementClose(element);
15675      xml.exit(FHIR_NS, name);
15676    }
15677  }
15678
15679  protected void composeElementDefinition(String name, ElementDefinition element) throws IOException {
15680    if (element != null) {
15681      composeElementAttributes(element);
15682      xml.enter(FHIR_NS, name);
15683      composeElementElements(element);
15684      if (element.hasPathElement()) {
15685        composeString("path", element.getPathElement());
15686      }
15687        if (element.hasRepresentation()) 
15688          for (Enumeration<ElementDefinition.PropertyRepresentation> e : element.getRepresentation()) 
15689            composeEnumeration("representation", e, new ElementDefinition.PropertyRepresentationEnumFactory());
15690      if (element.hasNameElement()) {
15691        composeString("name", element.getNameElement());
15692      }
15693      if (element.hasLabelElement()) {
15694        composeString("label", element.getLabelElement());
15695      }
15696      if (element.hasCode()) { 
15697        for (Coding e : element.getCode()) 
15698          composeCoding("code", e);
15699      }
15700      if (element.hasSlicing()) {
15701        composeElementDefinitionElementDefinitionSlicingComponent("slicing", element.getSlicing());
15702      }
15703      if (element.hasShortElement()) {
15704        composeString("short", element.getShortElement());
15705      }
15706      if (element.hasDefinitionElement()) {
15707        composeMarkdown("definition", element.getDefinitionElement());
15708      }
15709      if (element.hasCommentsElement()) {
15710        composeMarkdown("comments", element.getCommentsElement());
15711      }
15712      if (element.hasRequirementsElement()) {
15713        composeMarkdown("requirements", element.getRequirementsElement());
15714      }
15715      if (element.hasAlias()) { 
15716        for (StringType e : element.getAlias()) 
15717          composeString("alias", e);
15718      }
15719      if (element.hasMinElement()) {
15720        composeInteger("min", element.getMinElement());
15721      }
15722      if (element.hasMaxElement()) {
15723        composeString("max", element.getMaxElement());
15724      }
15725      if (element.hasBase()) {
15726        composeElementDefinitionElementDefinitionBaseComponent("base", element.getBase());
15727      }
15728      if (element.hasContentReferenceElement()) {
15729        composeUri("contentReference", element.getContentReferenceElement());
15730      }
15731      if (element.hasType()) { 
15732        for (ElementDefinition.TypeRefComponent e : element.getType()) 
15733          composeElementDefinitionTypeRefComponent("type", e);
15734      }
15735      if (element.hasDefaultValue()) {
15736        composeType("defaultValue", element.getDefaultValue());
15737      }      if (element.hasMeaningWhenMissingElement()) {
15738        composeMarkdown("meaningWhenMissing", element.getMeaningWhenMissingElement());
15739      }
15740      if (element.hasFixed()) {
15741        composeType("fixed", element.getFixed());
15742      }      if (element.hasPattern()) {
15743        composeType("pattern", element.getPattern());
15744      }      if (element.hasExample()) {
15745        composeType("example", element.getExample());
15746      }      if (element.hasMinValue()) {
15747        composeType("minValue", element.getMinValue());
15748      }      if (element.hasMaxValue()) {
15749        composeType("maxValue", element.getMaxValue());
15750      }      if (element.hasMaxLengthElement()) {
15751        composeInteger("maxLength", element.getMaxLengthElement());
15752      }
15753      if (element.hasCondition()) { 
15754        for (IdType e : element.getCondition()) 
15755          composeId("condition", e);
15756      }
15757      if (element.hasConstraint()) { 
15758        for (ElementDefinition.ElementDefinitionConstraintComponent e : element.getConstraint()) 
15759          composeElementDefinitionElementDefinitionConstraintComponent("constraint", e);
15760      }
15761      if (element.hasMustSupportElement()) {
15762        composeBoolean("mustSupport", element.getMustSupportElement());
15763      }
15764      if (element.hasIsModifierElement()) {
15765        composeBoolean("isModifier", element.getIsModifierElement());
15766      }
15767      if (element.hasIsSummaryElement()) {
15768        composeBoolean("isSummary", element.getIsSummaryElement());
15769      }
15770      if (element.hasBinding()) {
15771        composeElementDefinitionElementDefinitionBindingComponent("binding", element.getBinding());
15772      }
15773      if (element.hasMapping()) { 
15774        for (ElementDefinition.ElementDefinitionMappingComponent e : element.getMapping()) 
15775          composeElementDefinitionElementDefinitionMappingComponent("mapping", e);
15776      }
15777      composeElementClose(element);
15778      xml.exit(FHIR_NS, name);
15779    }
15780  }
15781
15782  protected void composeElementDefinitionElementDefinitionSlicingComponent(String name, ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
15783    if (element != null) {
15784      composeElementAttributes(element);
15785      xml.enter(FHIR_NS, name);
15786      composeElementElements(element);
15787      if (element.hasDiscriminator()) { 
15788        for (StringType e : element.getDiscriminator()) 
15789          composeString("discriminator", e);
15790      }
15791      if (element.hasDescriptionElement()) {
15792        composeString("description", element.getDescriptionElement());
15793      }
15794      if (element.hasOrderedElement()) {
15795        composeBoolean("ordered", element.getOrderedElement());
15796      }
15797      if (element.hasRulesElement())
15798        composeEnumeration("rules", element.getRulesElement(), new ElementDefinition.SlicingRulesEnumFactory());
15799      composeElementClose(element);
15800      xml.exit(FHIR_NS, name);
15801    }
15802  }
15803
15804  protected void composeElementDefinitionElementDefinitionBaseComponent(String name, ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
15805    if (element != null) {
15806      composeElementAttributes(element);
15807      xml.enter(FHIR_NS, name);
15808      composeElementElements(element);
15809      if (element.hasPathElement()) {
15810        composeString("path", element.getPathElement());
15811      }
15812      if (element.hasMinElement()) {
15813        composeInteger("min", element.getMinElement());
15814      }
15815      if (element.hasMaxElement()) {
15816        composeString("max", element.getMaxElement());
15817      }
15818      composeElementClose(element);
15819      xml.exit(FHIR_NS, name);
15820    }
15821  }
15822
15823  protected void composeElementDefinitionTypeRefComponent(String name, ElementDefinition.TypeRefComponent element) throws IOException {
15824    if (element != null) {
15825      composeElementAttributes(element);
15826      xml.enter(FHIR_NS, name);
15827      composeElementElements(element);
15828      if (element.hasCodeElement()) {
15829        composeCode("code", element.getCodeElement());
15830      }
15831      if (element.hasProfile()) { 
15832        for (UriType e : element.getProfile()) 
15833          composeUri("profile", e);
15834      }
15835        if (element.hasAggregation()) 
15836          for (Enumeration<ElementDefinition.AggregationMode> e : element.getAggregation()) 
15837            composeEnumeration("aggregation", e, new ElementDefinition.AggregationModeEnumFactory());
15838      if (element.hasVersioningElement())
15839        composeEnumeration("versioning", element.getVersioningElement(), new ElementDefinition.ReferenceVersionRulesEnumFactory());
15840      composeElementClose(element);
15841      xml.exit(FHIR_NS, name);
15842    }
15843  }
15844
15845  protected void composeElementDefinitionElementDefinitionConstraintComponent(String name, ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
15846    if (element != null) {
15847      composeElementAttributes(element);
15848      xml.enter(FHIR_NS, name);
15849      composeElementElements(element);
15850      if (element.hasKeyElement()) {
15851        composeId("key", element.getKeyElement());
15852      }
15853      if (element.hasRequirementsElement()) {
15854        composeString("requirements", element.getRequirementsElement());
15855      }
15856      if (element.hasSeverityElement())
15857        composeEnumeration("severity", element.getSeverityElement(), new ElementDefinition.ConstraintSeverityEnumFactory());
15858      if (element.hasHumanElement()) {
15859        composeString("human", element.getHumanElement());
15860      }
15861      if (element.hasExpressionElement()) {
15862        composeString("expression", element.getExpressionElement());
15863      }
15864      if (element.hasXpathElement()) {
15865        composeString("xpath", element.getXpathElement());
15866      }
15867      composeElementClose(element);
15868      xml.exit(FHIR_NS, name);
15869    }
15870  }
15871
15872  protected void composeElementDefinitionElementDefinitionBindingComponent(String name, ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
15873    if (element != null) {
15874      composeElementAttributes(element);
15875      xml.enter(FHIR_NS, name);
15876      composeElementElements(element);
15877      if (element.hasStrengthElement())
15878        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
15879      if (element.hasDescriptionElement()) {
15880        composeString("description", element.getDescriptionElement());
15881      }
15882      if (element.hasValueSet()) {
15883        composeType("valueSet", element.getValueSet());
15884      }      composeElementClose(element);
15885      xml.exit(FHIR_NS, name);
15886    }
15887  }
15888
15889  protected void composeElementDefinitionElementDefinitionMappingComponent(String name, ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
15890    if (element != null) {
15891      composeElementAttributes(element);
15892      xml.enter(FHIR_NS, name);
15893      composeElementElements(element);
15894      if (element.hasIdentityElement()) {
15895        composeId("identity", element.getIdentityElement());
15896      }
15897      if (element.hasLanguageElement()) {
15898        composeCode("language", element.getLanguageElement());
15899      }
15900      if (element.hasMapElement()) {
15901        composeString("map", element.getMapElement());
15902      }
15903      composeElementClose(element);
15904      xml.exit(FHIR_NS, name);
15905    }
15906  }
15907
15908  protected void composeTiming(String name, Timing element) throws IOException {
15909    if (element != null) {
15910      composeElementAttributes(element);
15911      xml.enter(FHIR_NS, name);
15912      composeElementElements(element);
15913      if (element.hasEvent()) { 
15914        for (DateTimeType e : element.getEvent()) 
15915          composeDateTime("event", e);
15916      }
15917      if (element.hasRepeat()) {
15918        composeTimingTimingRepeatComponent("repeat", element.getRepeat());
15919      }
15920      if (element.hasCode()) {
15921        composeCodeableConcept("code", element.getCode());
15922      }
15923      composeElementClose(element);
15924      xml.exit(FHIR_NS, name);
15925    }
15926  }
15927
15928  protected void composeTimingTimingRepeatComponent(String name, Timing.TimingRepeatComponent element) throws IOException {
15929    if (element != null) {
15930      composeElementAttributes(element);
15931      xml.enter(FHIR_NS, name);
15932      composeElementElements(element);
15933      if (element.hasBounds()) {
15934        composeType("bounds", element.getBounds());
15935      }      if (element.hasCountElement()) {
15936        composeInteger("count", element.getCountElement());
15937      }
15938      if (element.hasCountMaxElement()) {
15939        composeInteger("countMax", element.getCountMaxElement());
15940      }
15941      if (element.hasDurationElement()) {
15942        composeDecimal("duration", element.getDurationElement());
15943      }
15944      if (element.hasDurationMaxElement()) {
15945        composeDecimal("durationMax", element.getDurationMaxElement());
15946      }
15947      if (element.hasDurationUnitElement())
15948        composeEnumeration("durationUnit", element.getDurationUnitElement(), new Timing.UnitsOfTimeEnumFactory());
15949      if (element.hasFrequencyElement()) {
15950        composeInteger("frequency", element.getFrequencyElement());
15951      }
15952      if (element.hasFrequencyMaxElement()) {
15953        composeInteger("frequencyMax", element.getFrequencyMaxElement());
15954      }
15955      if (element.hasPeriodElement()) {
15956        composeDecimal("period", element.getPeriodElement());
15957      }
15958      if (element.hasPeriodMaxElement()) {
15959        composeDecimal("periodMax", element.getPeriodMaxElement());
15960      }
15961      if (element.hasPeriodUnitElement())
15962        composeEnumeration("periodUnit", element.getPeriodUnitElement(), new Timing.UnitsOfTimeEnumFactory());
15963      if (element.hasWhenElement())
15964        composeEnumeration("when", element.getWhenElement(), new Timing.EventTimingEnumFactory());
15965      if (element.hasOffsetElement()) {
15966        composeUnsignedInt("offset", element.getOffsetElement());
15967      }
15968      composeElementClose(element);
15969      xml.exit(FHIR_NS, name);
15970    }
15971  }
15972
15973  protected void composeModuleMetadata(String name, ModuleMetadata element) throws IOException {
15974    if (element != null) {
15975      composeElementAttributes(element);
15976      xml.enter(FHIR_NS, name);
15977      composeElementElements(element);
15978      if (element.hasUrlElement()) {
15979        composeUri("url", element.getUrlElement());
15980      }
15981      if (element.hasIdentifier()) { 
15982        for (Identifier e : element.getIdentifier()) 
15983          composeIdentifier("identifier", e);
15984      }
15985      if (element.hasVersionElement()) {
15986        composeString("version", element.getVersionElement());
15987      }
15988      if (element.hasNameElement()) {
15989        composeString("name", element.getNameElement());
15990      }
15991      if (element.hasTitleElement()) {
15992        composeString("title", element.getTitleElement());
15993      }
15994      if (element.hasTypeElement())
15995        composeEnumeration("type", element.getTypeElement(), new ModuleMetadata.ModuleMetadataTypeEnumFactory());
15996      if (element.hasStatusElement())
15997        composeEnumeration("status", element.getStatusElement(), new ModuleMetadata.ModuleMetadataStatusEnumFactory());
15998      if (element.hasExperimentalElement()) {
15999        composeBoolean("experimental", element.getExperimentalElement());
16000      }
16001      if (element.hasDescriptionElement()) {
16002        composeString("description", element.getDescriptionElement());
16003      }
16004      if (element.hasPurposeElement()) {
16005        composeString("purpose", element.getPurposeElement());
16006      }
16007      if (element.hasUsageElement()) {
16008        composeString("usage", element.getUsageElement());
16009      }
16010      if (element.hasPublicationDateElement()) {
16011        composeDate("publicationDate", element.getPublicationDateElement());
16012      }
16013      if (element.hasLastReviewDateElement()) {
16014        composeDate("lastReviewDate", element.getLastReviewDateElement());
16015      }
16016      if (element.hasEffectivePeriod()) {
16017        composePeriod("effectivePeriod", element.getEffectivePeriod());
16018      }
16019      if (element.hasCoverage()) { 
16020        for (ModuleMetadata.ModuleMetadataCoverageComponent e : element.getCoverage()) 
16021          composeModuleMetadataModuleMetadataCoverageComponent("coverage", e);
16022      }
16023      if (element.hasTopic()) { 
16024        for (CodeableConcept e : element.getTopic()) 
16025          composeCodeableConcept("topic", e);
16026      }
16027      if (element.hasContributor()) { 
16028        for (ModuleMetadata.ModuleMetadataContributorComponent e : element.getContributor()) 
16029          composeModuleMetadataModuleMetadataContributorComponent("contributor", e);
16030      }
16031      if (element.hasPublisherElement()) {
16032        composeString("publisher", element.getPublisherElement());
16033      }
16034      if (element.hasContact()) { 
16035        for (ModuleMetadata.ModuleMetadataContactComponent e : element.getContact()) 
16036          composeModuleMetadataModuleMetadataContactComponent("contact", e);
16037      }
16038      if (element.hasCopyrightElement()) {
16039        composeString("copyright", element.getCopyrightElement());
16040      }
16041      if (element.hasRelatedResource()) { 
16042        for (ModuleMetadata.ModuleMetadataRelatedResourceComponent e : element.getRelatedResource()) 
16043          composeModuleMetadataModuleMetadataRelatedResourceComponent("relatedResource", e);
16044      }
16045      composeElementClose(element);
16046      xml.exit(FHIR_NS, name);
16047    }
16048  }
16049
16050  protected void composeModuleMetadataModuleMetadataCoverageComponent(String name, ModuleMetadata.ModuleMetadataCoverageComponent element) throws IOException {
16051    if (element != null) {
16052      composeElementAttributes(element);
16053      xml.enter(FHIR_NS, name);
16054      composeElementElements(element);
16055      if (element.hasFocus()) {
16056        composeCoding("focus", element.getFocus());
16057      }
16058      if (element.hasValue()) {
16059        composeCodeableConcept("value", element.getValue());
16060      }
16061      composeElementClose(element);
16062      xml.exit(FHIR_NS, name);
16063    }
16064  }
16065
16066  protected void composeModuleMetadataModuleMetadataContributorComponent(String name, ModuleMetadata.ModuleMetadataContributorComponent element) throws IOException {
16067    if (element != null) {
16068      composeElementAttributes(element);
16069      xml.enter(FHIR_NS, name);
16070      composeElementElements(element);
16071      if (element.hasTypeElement())
16072        composeEnumeration("type", element.getTypeElement(), new ModuleMetadata.ModuleMetadataContributorTypeEnumFactory());
16073      if (element.hasNameElement()) {
16074        composeString("name", element.getNameElement());
16075      }
16076      if (element.hasContact()) { 
16077        for (ModuleMetadata.ModuleMetadataContributorContactComponent e : element.getContact()) 
16078          composeModuleMetadataModuleMetadataContributorContactComponent("contact", e);
16079      }
16080      composeElementClose(element);
16081      xml.exit(FHIR_NS, name);
16082    }
16083  }
16084
16085  protected void composeModuleMetadataModuleMetadataContributorContactComponent(String name, ModuleMetadata.ModuleMetadataContributorContactComponent element) throws IOException {
16086    if (element != null) {
16087      composeElementAttributes(element);
16088      xml.enter(FHIR_NS, name);
16089      composeElementElements(element);
16090      if (element.hasNameElement()) {
16091        composeString("name", element.getNameElement());
16092      }
16093      if (element.hasTelecom()) { 
16094        for (ContactPoint e : element.getTelecom()) 
16095          composeContactPoint("telecom", e);
16096      }
16097      composeElementClose(element);
16098      xml.exit(FHIR_NS, name);
16099    }
16100  }
16101
16102  protected void composeModuleMetadataModuleMetadataContactComponent(String name, ModuleMetadata.ModuleMetadataContactComponent element) throws IOException {
16103    if (element != null) {
16104      composeElementAttributes(element);
16105      xml.enter(FHIR_NS, name);
16106      composeElementElements(element);
16107      if (element.hasNameElement()) {
16108        composeString("name", element.getNameElement());
16109      }
16110      if (element.hasTelecom()) { 
16111        for (ContactPoint e : element.getTelecom()) 
16112          composeContactPoint("telecom", e);
16113      }
16114      composeElementClose(element);
16115      xml.exit(FHIR_NS, name);
16116    }
16117  }
16118
16119  protected void composeModuleMetadataModuleMetadataRelatedResourceComponent(String name, ModuleMetadata.ModuleMetadataRelatedResourceComponent element) throws IOException {
16120    if (element != null) {
16121      composeElementAttributes(element);
16122      xml.enter(FHIR_NS, name);
16123      composeElementElements(element);
16124      if (element.hasTypeElement())
16125        composeEnumeration("type", element.getTypeElement(), new ModuleMetadata.ModuleMetadataResourceTypeEnumFactory());
16126      if (element.hasDocument()) {
16127        composeAttachment("document", element.getDocument());
16128      }
16129      if (element.hasResource()) {
16130        composeReference("resource", element.getResource());
16131      }
16132      composeElementClose(element);
16133      xml.exit(FHIR_NS, name);
16134    }
16135  }
16136
16137  protected void composeActionDefinition(String name, ActionDefinition element) throws IOException {
16138    if (element != null) {
16139      composeElementAttributes(element);
16140      xml.enter(FHIR_NS, name);
16141      composeElementElements(element);
16142      if (element.hasActionIdentifier()) {
16143        composeIdentifier("actionIdentifier", element.getActionIdentifier());
16144      }
16145      if (element.hasLabelElement()) {
16146        composeString("label", element.getLabelElement());
16147      }
16148      if (element.hasTitleElement()) {
16149        composeString("title", element.getTitleElement());
16150      }
16151      if (element.hasDescriptionElement()) {
16152        composeString("description", element.getDescriptionElement());
16153      }
16154      if (element.hasTextEquivalentElement()) {
16155        composeString("textEquivalent", element.getTextEquivalentElement());
16156      }
16157      if (element.hasConcept()) { 
16158        for (CodeableConcept e : element.getConcept()) 
16159          composeCodeableConcept("concept", e);
16160      }
16161      if (element.hasSupportingEvidence()) { 
16162        for (Attachment e : element.getSupportingEvidence()) 
16163          composeAttachment("supportingEvidence", e);
16164      }
16165      if (element.hasDocumentation()) { 
16166        for (Attachment e : element.getDocumentation()) 
16167          composeAttachment("documentation", e);
16168      }
16169      if (element.hasRelatedAction()) {
16170        composeActionDefinitionActionDefinitionRelatedActionComponent("relatedAction", element.getRelatedAction());
16171      }
16172        if (element.hasParticipantType()) 
16173          for (Enumeration<ActionDefinition.ParticipantType> e : element.getParticipantType()) 
16174            composeEnumeration("participantType", e, new ActionDefinition.ParticipantTypeEnumFactory());
16175      if (element.hasTypeElement())
16176        composeEnumeration("type", element.getTypeElement(), new ActionDefinition.ActionTypeEnumFactory());
16177      if (element.hasBehavior()) { 
16178        for (ActionDefinition.ActionDefinitionBehaviorComponent e : element.getBehavior()) 
16179          composeActionDefinitionActionDefinitionBehaviorComponent("behavior", e);
16180      }
16181      if (element.hasResource()) {
16182        composeReference("resource", element.getResource());
16183      }
16184      if (element.hasCustomization()) { 
16185        for (ActionDefinition.ActionDefinitionCustomizationComponent e : element.getCustomization()) 
16186          composeActionDefinitionActionDefinitionCustomizationComponent("customization", e);
16187      }
16188      if (element.hasAction()) { 
16189        for (ActionDefinition e : element.getAction()) 
16190          composeActionDefinition("action", e);
16191      }
16192      composeElementClose(element);
16193      xml.exit(FHIR_NS, name);
16194    }
16195  }
16196
16197  protected void composeActionDefinitionActionDefinitionRelatedActionComponent(String name, ActionDefinition.ActionDefinitionRelatedActionComponent element) throws IOException {
16198    if (element != null) {
16199      composeElementAttributes(element);
16200      xml.enter(FHIR_NS, name);
16201      composeElementElements(element);
16202      if (element.hasActionIdentifier()) {
16203        composeIdentifier("actionIdentifier", element.getActionIdentifier());
16204      }
16205      if (element.hasRelationshipElement())
16206        composeEnumeration("relationship", element.getRelationshipElement(), new ActionDefinition.ActionRelationshipTypeEnumFactory());
16207      if (element.hasOffset()) {
16208        composeType("offset", element.getOffset());
16209      }      if (element.hasAnchorElement())
16210        composeEnumeration("anchor", element.getAnchorElement(), new ActionDefinition.ActionRelationshipAnchorEnumFactory());
16211      composeElementClose(element);
16212      xml.exit(FHIR_NS, name);
16213    }
16214  }
16215
16216  protected void composeActionDefinitionActionDefinitionBehaviorComponent(String name, ActionDefinition.ActionDefinitionBehaviorComponent element) throws IOException {
16217    if (element != null) {
16218      composeElementAttributes(element);
16219      xml.enter(FHIR_NS, name);
16220      composeElementElements(element);
16221      if (element.hasType()) {
16222        composeCoding("type", element.getType());
16223      }
16224      if (element.hasValue()) {
16225        composeCoding("value", element.getValue());
16226      }
16227      composeElementClose(element);
16228      xml.exit(FHIR_NS, name);
16229    }
16230  }
16231
16232  protected void composeActionDefinitionActionDefinitionCustomizationComponent(String name, ActionDefinition.ActionDefinitionCustomizationComponent element) throws IOException {
16233    if (element != null) {
16234      composeElementAttributes(element);
16235      xml.enter(FHIR_NS, name);
16236      composeElementElements(element);
16237      if (element.hasPathElement()) {
16238        composeString("path", element.getPathElement());
16239      }
16240      if (element.hasExpressionElement()) {
16241        composeString("expression", element.getExpressionElement());
16242      }
16243      composeElementClose(element);
16244      xml.exit(FHIR_NS, name);
16245    }
16246  }
16247
16248  protected void composeAddress(String name, Address element) throws IOException {
16249    if (element != null) {
16250      composeElementAttributes(element);
16251      xml.enter(FHIR_NS, name);
16252      composeElementElements(element);
16253      if (element.hasUseElement())
16254        composeEnumeration("use", element.getUseElement(), new Address.AddressUseEnumFactory());
16255      if (element.hasTypeElement())
16256        composeEnumeration("type", element.getTypeElement(), new Address.AddressTypeEnumFactory());
16257      if (element.hasTextElement()) {
16258        composeString("text", element.getTextElement());
16259      }
16260      if (element.hasLine()) { 
16261        for (StringType e : element.getLine()) 
16262          composeString("line", e);
16263      }
16264      if (element.hasCityElement()) {
16265        composeString("city", element.getCityElement());
16266      }
16267      if (element.hasDistrictElement()) {
16268        composeString("district", element.getDistrictElement());
16269      }
16270      if (element.hasStateElement()) {
16271        composeString("state", element.getStateElement());
16272      }
16273      if (element.hasPostalCodeElement()) {
16274        composeString("postalCode", element.getPostalCodeElement());
16275      }
16276      if (element.hasCountryElement()) {
16277        composeString("country", element.getCountryElement());
16278      }
16279      if (element.hasPeriod()) {
16280        composePeriod("period", element.getPeriod());
16281      }
16282      composeElementClose(element);
16283      xml.exit(FHIR_NS, name);
16284    }
16285  }
16286
16287  protected void composeHumanName(String name, HumanName element) throws IOException {
16288    if (element != null) {
16289      composeElementAttributes(element);
16290      xml.enter(FHIR_NS, name);
16291      composeElementElements(element);
16292      if (element.hasUseElement())
16293        composeEnumeration("use", element.getUseElement(), new HumanName.NameUseEnumFactory());
16294      if (element.hasTextElement()) {
16295        composeString("text", element.getTextElement());
16296      }
16297      if (element.hasFamily()) { 
16298        for (StringType e : element.getFamily()) 
16299          composeString("family", e);
16300      }
16301      if (element.hasGiven()) { 
16302        for (StringType e : element.getGiven()) 
16303          composeString("given", e);
16304      }
16305      if (element.hasPrefix()) { 
16306        for (StringType e : element.getPrefix()) 
16307          composeString("prefix", e);
16308      }
16309      if (element.hasSuffix()) { 
16310        for (StringType e : element.getSuffix()) 
16311          composeString("suffix", e);
16312      }
16313      if (element.hasPeriod()) {
16314        composePeriod("period", element.getPeriod());
16315      }
16316      composeElementClose(element);
16317      xml.exit(FHIR_NS, name);
16318    }
16319  }
16320
16321  protected void composeDataRequirement(String name, DataRequirement element) throws IOException {
16322    if (element != null) {
16323      composeElementAttributes(element);
16324      xml.enter(FHIR_NS, name);
16325      composeElementElements(element);
16326      if (element.hasTypeElement()) {
16327        composeCode("type", element.getTypeElement());
16328      }
16329      if (element.hasProfile()) {
16330        composeReference("profile", element.getProfile());
16331      }
16332      if (element.hasMustSupport()) { 
16333        for (StringType e : element.getMustSupport()) 
16334          composeString("mustSupport", e);
16335      }
16336      if (element.hasCodeFilter()) { 
16337        for (DataRequirement.DataRequirementCodeFilterComponent e : element.getCodeFilter()) 
16338          composeDataRequirementDataRequirementCodeFilterComponent("codeFilter", e);
16339      }
16340      if (element.hasDateFilter()) { 
16341        for (DataRequirement.DataRequirementDateFilterComponent e : element.getDateFilter()) 
16342          composeDataRequirementDataRequirementDateFilterComponent("dateFilter", e);
16343      }
16344      composeElementClose(element);
16345      xml.exit(FHIR_NS, name);
16346    }
16347  }
16348
16349  protected void composeDataRequirementDataRequirementCodeFilterComponent(String name, DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
16350    if (element != null) {
16351      composeElementAttributes(element);
16352      xml.enter(FHIR_NS, name);
16353      composeElementElements(element);
16354      if (element.hasPathElement()) {
16355        composeString("path", element.getPathElement());
16356      }
16357      if (element.hasValueSet()) {
16358        composeType("valueSet", element.getValueSet());
16359      }      if (element.hasValueCode()) { 
16360        for (CodeType e : element.getValueCode()) 
16361          composeCode("valueCode", e);
16362      }
16363      if (element.hasValueCoding()) { 
16364        for (Coding e : element.getValueCoding()) 
16365          composeCoding("valueCoding", e);
16366      }
16367      if (element.hasValueCodeableConcept()) { 
16368        for (CodeableConcept e : element.getValueCodeableConcept()) 
16369          composeCodeableConcept("valueCodeableConcept", e);
16370      }
16371      composeElementClose(element);
16372      xml.exit(FHIR_NS, name);
16373    }
16374  }
16375
16376  protected void composeDataRequirementDataRequirementDateFilterComponent(String name, DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
16377    if (element != null) {
16378      composeElementAttributes(element);
16379      xml.enter(FHIR_NS, name);
16380      composeElementElements(element);
16381      if (element.hasPathElement()) {
16382        composeString("path", element.getPathElement());
16383      }
16384      if (element.hasValue()) {
16385        composeType("value", element.getValue());
16386      }      composeElementClose(element);
16387      xml.exit(FHIR_NS, name);
16388    }
16389  }
16390
16391  protected void composeMeta(String name, Meta element) throws IOException {
16392    if (element != null) {
16393      composeElementAttributes(element);
16394      xml.enter(FHIR_NS, name);
16395      composeElementElements(element);
16396      if (element.hasVersionIdElement()) {
16397        composeId("versionId", element.getVersionIdElement());
16398      }
16399      if (element.hasLastUpdatedElement()) {
16400        composeInstant("lastUpdated", element.getLastUpdatedElement());
16401      }
16402      if (element.hasProfile()) { 
16403        for (UriType e : element.getProfile()) 
16404          composeUri("profile", e);
16405      }
16406      if (element.hasSecurity()) { 
16407        for (Coding e : element.getSecurity()) 
16408          composeCoding("security", e);
16409      }
16410      if (element.hasTag()) { 
16411        for (Coding e : element.getTag()) 
16412          composeCoding("tag", e);
16413      }
16414      composeElementClose(element);
16415      xml.exit(FHIR_NS, name);
16416    }
16417  }
16418
16419  protected void composeParameterDefinition(String name, ParameterDefinition element) throws IOException {
16420    if (element != null) {
16421      composeElementAttributes(element);
16422      xml.enter(FHIR_NS, name);
16423      composeElementElements(element);
16424      if (element.hasNameElement()) {
16425        composeCode("name", element.getNameElement());
16426      }
16427      if (element.hasUseElement()) {
16428        composeCode("use", element.getUseElement());
16429      }
16430      if (element.hasMinElement()) {
16431        composeInteger("min", element.getMinElement());
16432      }
16433      if (element.hasMaxElement()) {
16434        composeString("max", element.getMaxElement());
16435      }
16436      if (element.hasDocumentationElement()) {
16437        composeString("documentation", element.getDocumentationElement());
16438      }
16439      if (element.hasTypeElement()) {
16440        composeCode("type", element.getTypeElement());
16441      }
16442      if (element.hasProfile()) {
16443        composeReference("profile", element.getProfile());
16444      }
16445      composeElementClose(element);
16446      xml.exit(FHIR_NS, name);
16447    }
16448  }
16449
16450  protected void composeContactPoint(String name, ContactPoint element) throws IOException {
16451    if (element != null) {
16452      composeElementAttributes(element);
16453      xml.enter(FHIR_NS, name);
16454      composeElementElements(element);
16455      if (element.hasSystemElement())
16456        composeEnumeration("system", element.getSystemElement(), new ContactPoint.ContactPointSystemEnumFactory());
16457      if (element.hasValueElement()) {
16458        composeString("value", element.getValueElement());
16459      }
16460      if (element.hasUseElement())
16461        composeEnumeration("use", element.getUseElement(), new ContactPoint.ContactPointUseEnumFactory());
16462      if (element.hasRankElement()) {
16463        composePositiveInt("rank", element.getRankElement());
16464      }
16465      if (element.hasPeriod()) {
16466        composePeriod("period", element.getPeriod());
16467      }
16468      composeElementClose(element);
16469      xml.exit(FHIR_NS, name);
16470    }
16471  }
16472
16473  protected void composeParameters(String name, Parameters element) throws IOException {
16474    if (element != null) {
16475      composeResourceAttributes(element);
16476      xml.enter(FHIR_NS, name);
16477      composeResourceElements(element);
16478      if (element.hasParameter()) { 
16479        for (Parameters.ParametersParameterComponent e : element.getParameter()) 
16480          composeParametersParametersParameterComponent("parameter", e);
16481      }
16482      composeElementClose(element);
16483      xml.exit(FHIR_NS, name);
16484    }
16485  }
16486
16487  protected void composeParametersParametersParameterComponent(String name, Parameters.ParametersParameterComponent element) throws IOException {
16488    if (element != null) {
16489      composeElementAttributes(element);
16490      xml.enter(FHIR_NS, name);
16491      composeBackboneElements(element);
16492      if (element.hasNameElement()) {
16493        composeString("name", element.getNameElement());
16494      }
16495      if (element.hasValue()) {
16496        composeType("value", element.getValue());
16497      }      if (element.hasResource()) {
16498        xml.enter(FHIR_NS, "resource");
16499        composeResource(element.getResource());
16500        xml.exit(FHIR_NS, "resource");
16501      }
16502      if (element.hasPart()) { 
16503        for (Parameters.ParametersParameterComponent e : element.getPart()) 
16504          composeParametersParametersParameterComponent("part", e);
16505      }
16506      composeElementClose(element);
16507      xml.exit(FHIR_NS, name);
16508    }
16509  }
16510
16511  protected void composeResourceAttributes(Resource element) throws IOException {
16512    if (style != OutputStyle.CANONICAL)
16513      for (String comment : element.getFormatCommentsPre())
16514        xml.comment(comment, getOutputStyle() == OutputStyle.PRETTY);
16515  }
16516
16517  protected void composeResourceElements(Resource element) throws IOException {
16518      if (element.hasIdElement()) {
16519        composeId("id", element.getIdElement());
16520      }
16521      if (element.hasMeta()) {
16522        composeMeta("meta", element.getMeta());
16523      }
16524      if (element.hasImplicitRulesElement()) {
16525        composeUri("implicitRules", element.getImplicitRulesElement());
16526      }
16527      if (element.hasLanguageElement()) {
16528        composeCode("language", element.getLanguageElement());
16529      }
16530  }
16531
16532  protected void composeDomainResourceAttributes(DomainResource element) throws IOException {
16533    composeResourceAttributes(element);
16534  }
16535
16536  protected void composeDomainResourceElements(DomainResource element) throws IOException {
16537    composeResourceElements(element);
16538      if (element.hasText()) {
16539        composeNarrative("text", element.getText());
16540      }
16541      if (element.hasContained()) { 
16542        for (Resource e : element.getContained()) 
16543        {
16544          xml.enter(FHIR_NS, "contained");
16545          composeResource(e);
16546          xml.exit(FHIR_NS, "contained");
16547        }
16548      }
16549      if (element.hasExtension()) 
16550        for (Extension e : element.getExtension()) 
16551          composeExtension("extension", e);
16552      if (element.hasModifierExtension()) { 
16553        for (Extension e : element.getModifierExtension()) 
16554          composeExtension("modifierExtension", e);
16555      }
16556  }
16557
16558  protected void composeAccount(String name, Account element) throws IOException {
16559    if (element != null) {
16560      composeDomainResourceAttributes(element);
16561      xml.enter(FHIR_NS, name);
16562      composeDomainResourceElements(element);
16563      if (element.hasIdentifier()) { 
16564        for (Identifier e : element.getIdentifier()) 
16565          composeIdentifier("identifier", e);
16566      }
16567      if (element.hasNameElement()) {
16568        composeString("name", element.getNameElement());
16569      }
16570      if (element.hasType()) {
16571        composeCodeableConcept("type", element.getType());
16572      }
16573      if (element.hasStatusElement())
16574        composeEnumeration("status", element.getStatusElement(), new Account.AccountStatusEnumFactory());
16575      if (element.hasActivePeriod()) {
16576        composePeriod("activePeriod", element.getActivePeriod());
16577      }
16578      if (element.hasCurrency()) {
16579        composeCoding("currency", element.getCurrency());
16580      }
16581      if (element.hasBalance()) {
16582        composeMoney("balance", element.getBalance());
16583      }
16584      if (element.hasCoveragePeriod()) {
16585        composePeriod("coveragePeriod", element.getCoveragePeriod());
16586      }
16587      if (element.hasSubject()) {
16588        composeReference("subject", element.getSubject());
16589      }
16590      if (element.hasOwner()) {
16591        composeReference("owner", element.getOwner());
16592      }
16593      if (element.hasDescriptionElement()) {
16594        composeString("description", element.getDescriptionElement());
16595      }
16596      composeElementClose(element);
16597      xml.exit(FHIR_NS, name);
16598    }
16599  }
16600
16601  protected void composeAllergyIntolerance(String name, AllergyIntolerance element) throws IOException {
16602    if (element != null) {
16603      composeDomainResourceAttributes(element);
16604      xml.enter(FHIR_NS, name);
16605      composeDomainResourceElements(element);
16606      if (element.hasIdentifier()) { 
16607        for (Identifier e : element.getIdentifier()) 
16608          composeIdentifier("identifier", e);
16609      }
16610      if (element.hasStatusElement())
16611        composeEnumeration("status", element.getStatusElement(), new AllergyIntolerance.AllergyIntoleranceStatusEnumFactory());
16612      if (element.hasTypeElement())
16613        composeEnumeration("type", element.getTypeElement(), new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory());
16614      if (element.hasCategoryElement())
16615        composeEnumeration("category", element.getCategoryElement(), new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory());
16616      if (element.hasCriticalityElement())
16617        composeEnumeration("criticality", element.getCriticalityElement(), new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory());
16618      if (element.hasSubstance()) {
16619        composeCodeableConcept("substance", element.getSubstance());
16620      }
16621      if (element.hasPatient()) {
16622        composeReference("patient", element.getPatient());
16623      }
16624      if (element.hasRecordedDateElement()) {
16625        composeDateTime("recordedDate", element.getRecordedDateElement());
16626      }
16627      if (element.hasRecorder()) {
16628        composeReference("recorder", element.getRecorder());
16629      }
16630      if (element.hasReporter()) {
16631        composeReference("reporter", element.getReporter());
16632      }
16633      if (element.hasOnsetElement()) {
16634        composeDateTime("onset", element.getOnsetElement());
16635      }
16636      if (element.hasLastOccurenceElement()) {
16637        composeDateTime("lastOccurence", element.getLastOccurenceElement());
16638      }
16639      if (element.hasNote()) { 
16640        for (Annotation e : element.getNote()) 
16641          composeAnnotation("note", e);
16642      }
16643      if (element.hasReaction()) { 
16644        for (AllergyIntolerance.AllergyIntoleranceReactionComponent e : element.getReaction()) 
16645          composeAllergyIntoleranceAllergyIntoleranceReactionComponent("reaction", e);
16646      }
16647      composeElementClose(element);
16648      xml.exit(FHIR_NS, name);
16649    }
16650  }
16651
16652  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponent(String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
16653    if (element != null) {
16654      composeElementAttributes(element);
16655      xml.enter(FHIR_NS, name);
16656      composeBackboneElements(element);
16657      if (element.hasSubstance()) {
16658        composeCodeableConcept("substance", element.getSubstance());
16659      }
16660      if (element.hasCertaintyElement())
16661        composeEnumeration("certainty", element.getCertaintyElement(), new AllergyIntolerance.AllergyIntoleranceCertaintyEnumFactory());
16662      if (element.hasManifestation()) { 
16663        for (CodeableConcept e : element.getManifestation()) 
16664          composeCodeableConcept("manifestation", e);
16665      }
16666      if (element.hasDescriptionElement()) {
16667        composeString("description", element.getDescriptionElement());
16668      }
16669      if (element.hasOnsetElement()) {
16670        composeDateTime("onset", element.getOnsetElement());
16671      }
16672      if (element.hasSeverityElement())
16673        composeEnumeration("severity", element.getSeverityElement(), new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory());
16674      if (element.hasExposureRoute()) {
16675        composeCodeableConcept("exposureRoute", element.getExposureRoute());
16676      }
16677      if (element.hasNote()) { 
16678        for (Annotation e : element.getNote()) 
16679          composeAnnotation("note", e);
16680      }
16681      composeElementClose(element);
16682      xml.exit(FHIR_NS, name);
16683    }
16684  }
16685
16686  protected void composeAppointment(String name, Appointment element) throws IOException {
16687    if (element != null) {
16688      composeDomainResourceAttributes(element);
16689      xml.enter(FHIR_NS, name);
16690      composeDomainResourceElements(element);
16691      if (element.hasIdentifier()) { 
16692        for (Identifier e : element.getIdentifier()) 
16693          composeIdentifier("identifier", e);
16694      }
16695      if (element.hasStatusElement())
16696        composeEnumeration("status", element.getStatusElement(), new Appointment.AppointmentStatusEnumFactory());
16697      if (element.hasServiceCategory()) {
16698        composeCodeableConcept("serviceCategory", element.getServiceCategory());
16699      }
16700      if (element.hasServiceType()) { 
16701        for (CodeableConcept e : element.getServiceType()) 
16702          composeCodeableConcept("serviceType", e);
16703      }
16704      if (element.hasSpecialty()) { 
16705        for (CodeableConcept e : element.getSpecialty()) 
16706          composeCodeableConcept("specialty", e);
16707      }
16708      if (element.hasAppointmentType()) {
16709        composeCodeableConcept("appointmentType", element.getAppointmentType());
16710      }
16711      if (element.hasReason()) {
16712        composeCodeableConcept("reason", element.getReason());
16713      }
16714      if (element.hasPriorityElement()) {
16715        composeUnsignedInt("priority", element.getPriorityElement());
16716      }
16717      if (element.hasDescriptionElement()) {
16718        composeString("description", element.getDescriptionElement());
16719      }
16720      if (element.hasStartElement()) {
16721        composeInstant("start", element.getStartElement());
16722      }
16723      if (element.hasEndElement()) {
16724        composeInstant("end", element.getEndElement());
16725      }
16726      if (element.hasMinutesDurationElement()) {
16727        composePositiveInt("minutesDuration", element.getMinutesDurationElement());
16728      }
16729      if (element.hasSlot()) { 
16730        for (Reference e : element.getSlot()) 
16731          composeReference("slot", e);
16732      }
16733      if (element.hasCreatedElement()) {
16734        composeDateTime("created", element.getCreatedElement());
16735      }
16736      if (element.hasCommentElement()) {
16737        composeString("comment", element.getCommentElement());
16738      }
16739      if (element.hasParticipant()) { 
16740        for (Appointment.AppointmentParticipantComponent e : element.getParticipant()) 
16741          composeAppointmentAppointmentParticipantComponent("participant", e);
16742      }
16743      composeElementClose(element);
16744      xml.exit(FHIR_NS, name);
16745    }
16746  }
16747
16748  protected void composeAppointmentAppointmentParticipantComponent(String name, Appointment.AppointmentParticipantComponent element) throws IOException {
16749    if (element != null) {
16750      composeElementAttributes(element);
16751      xml.enter(FHIR_NS, name);
16752      composeBackboneElements(element);
16753      if (element.hasType()) { 
16754        for (CodeableConcept e : element.getType()) 
16755          composeCodeableConcept("type", e);
16756      }
16757      if (element.hasActor()) {
16758        composeReference("actor", element.getActor());
16759      }
16760      if (element.hasRequiredElement())
16761        composeEnumeration("required", element.getRequiredElement(), new Appointment.ParticipantRequiredEnumFactory());
16762      if (element.hasStatusElement())
16763        composeEnumeration("status", element.getStatusElement(), new Appointment.ParticipationStatusEnumFactory());
16764      composeElementClose(element);
16765      xml.exit(FHIR_NS, name);
16766    }
16767  }
16768
16769  protected void composeAppointmentResponse(String name, AppointmentResponse element) throws IOException {
16770    if (element != null) {
16771      composeDomainResourceAttributes(element);
16772      xml.enter(FHIR_NS, name);
16773      composeDomainResourceElements(element);
16774      if (element.hasIdentifier()) { 
16775        for (Identifier e : element.getIdentifier()) 
16776          composeIdentifier("identifier", e);
16777      }
16778      if (element.hasAppointment()) {
16779        composeReference("appointment", element.getAppointment());
16780      }
16781      if (element.hasStartElement()) {
16782        composeInstant("start", element.getStartElement());
16783      }
16784      if (element.hasEndElement()) {
16785        composeInstant("end", element.getEndElement());
16786      }
16787      if (element.hasParticipantType()) { 
16788        for (CodeableConcept e : element.getParticipantType()) 
16789          composeCodeableConcept("participantType", e);
16790      }
16791      if (element.hasActor()) {
16792        composeReference("actor", element.getActor());
16793      }
16794      if (element.hasParticipantStatusElement()) {
16795        composeCode("participantStatus", element.getParticipantStatusElement());
16796      }
16797      if (element.hasCommentElement()) {
16798        composeString("comment", element.getCommentElement());
16799      }
16800      composeElementClose(element);
16801      xml.exit(FHIR_NS, name);
16802    }
16803  }
16804
16805  protected void composeAuditEvent(String name, AuditEvent element) throws IOException {
16806    if (element != null) {
16807      composeDomainResourceAttributes(element);
16808      xml.enter(FHIR_NS, name);
16809      composeDomainResourceElements(element);
16810      if (element.hasType()) {
16811        composeCoding("type", element.getType());
16812      }
16813      if (element.hasSubtype()) { 
16814        for (Coding e : element.getSubtype()) 
16815          composeCoding("subtype", e);
16816      }
16817      if (element.hasActionElement())
16818        composeEnumeration("action", element.getActionElement(), new AuditEvent.AuditEventActionEnumFactory());
16819      if (element.hasRecordedElement()) {
16820        composeInstant("recorded", element.getRecordedElement());
16821      }
16822      if (element.hasOutcomeElement())
16823        composeEnumeration("outcome", element.getOutcomeElement(), new AuditEvent.AuditEventOutcomeEnumFactory());
16824      if (element.hasOutcomeDescElement()) {
16825        composeString("outcomeDesc", element.getOutcomeDescElement());
16826      }
16827      if (element.hasPurposeOfEvent()) { 
16828        for (Coding e : element.getPurposeOfEvent()) 
16829          composeCoding("purposeOfEvent", e);
16830      }
16831      if (element.hasAgent()) { 
16832        for (AuditEvent.AuditEventAgentComponent e : element.getAgent()) 
16833          composeAuditEventAuditEventAgentComponent("agent", e);
16834      }
16835      if (element.hasSource()) {
16836        composeAuditEventAuditEventSourceComponent("source", element.getSource());
16837      }
16838      if (element.hasEntity()) { 
16839        for (AuditEvent.AuditEventEntityComponent e : element.getEntity()) 
16840          composeAuditEventAuditEventEntityComponent("entity", e);
16841      }
16842      composeElementClose(element);
16843      xml.exit(FHIR_NS, name);
16844    }
16845  }
16846
16847  protected void composeAuditEventAuditEventAgentComponent(String name, AuditEvent.AuditEventAgentComponent element) throws IOException {
16848    if (element != null) {
16849      composeElementAttributes(element);
16850      xml.enter(FHIR_NS, name);
16851      composeBackboneElements(element);
16852      if (element.hasRole()) { 
16853        for (CodeableConcept e : element.getRole()) 
16854          composeCodeableConcept("role", e);
16855      }
16856      if (element.hasReference()) {
16857        composeReference("reference", element.getReference());
16858      }
16859      if (element.hasUserId()) {
16860        composeIdentifier("userId", element.getUserId());
16861      }
16862      if (element.hasAltIdElement()) {
16863        composeString("altId", element.getAltIdElement());
16864      }
16865      if (element.hasNameElement()) {
16866        composeString("name", element.getNameElement());
16867      }
16868      if (element.hasRequestorElement()) {
16869        composeBoolean("requestor", element.getRequestorElement());
16870      }
16871      if (element.hasLocation()) {
16872        composeReference("location", element.getLocation());
16873      }
16874      if (element.hasPolicy()) { 
16875        for (UriType e : element.getPolicy()) 
16876          composeUri("policy", e);
16877      }
16878      if (element.hasMedia()) {
16879        composeCoding("media", element.getMedia());
16880      }
16881      if (element.hasNetwork()) {
16882        composeAuditEventAuditEventAgentNetworkComponent("network", element.getNetwork());
16883      }
16884      if (element.hasPurposeOfUse()) { 
16885        for (Coding e : element.getPurposeOfUse()) 
16886          composeCoding("purposeOfUse", e);
16887      }
16888      composeElementClose(element);
16889      xml.exit(FHIR_NS, name);
16890    }
16891  }
16892
16893  protected void composeAuditEventAuditEventAgentNetworkComponent(String name, AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
16894    if (element != null) {
16895      composeElementAttributes(element);
16896      xml.enter(FHIR_NS, name);
16897      composeBackboneElements(element);
16898      if (element.hasAddressElement()) {
16899        composeString("address", element.getAddressElement());
16900      }
16901      if (element.hasTypeElement())
16902        composeEnumeration("type", element.getTypeElement(), new AuditEvent.AuditEventParticipantNetworkTypeEnumFactory());
16903      composeElementClose(element);
16904      xml.exit(FHIR_NS, name);
16905    }
16906  }
16907
16908  protected void composeAuditEventAuditEventSourceComponent(String name, AuditEvent.AuditEventSourceComponent element) throws IOException {
16909    if (element != null) {
16910      composeElementAttributes(element);
16911      xml.enter(FHIR_NS, name);
16912      composeBackboneElements(element);
16913      if (element.hasSiteElement()) {
16914        composeString("site", element.getSiteElement());
16915      }
16916      if (element.hasIdentifier()) {
16917        composeIdentifier("identifier", element.getIdentifier());
16918      }
16919      if (element.hasType()) { 
16920        for (Coding e : element.getType()) 
16921          composeCoding("type", e);
16922      }
16923      composeElementClose(element);
16924      xml.exit(FHIR_NS, name);
16925    }
16926  }
16927
16928  protected void composeAuditEventAuditEventEntityComponent(String name, AuditEvent.AuditEventEntityComponent element) throws IOException {
16929    if (element != null) {
16930      composeElementAttributes(element);
16931      xml.enter(FHIR_NS, name);
16932      composeBackboneElements(element);
16933      if (element.hasIdentifier()) {
16934        composeIdentifier("identifier", element.getIdentifier());
16935      }
16936      if (element.hasReference()) {
16937        composeReference("reference", element.getReference());
16938      }
16939      if (element.hasType()) {
16940        composeCoding("type", element.getType());
16941      }
16942      if (element.hasRole()) {
16943        composeCoding("role", element.getRole());
16944      }
16945      if (element.hasLifecycle()) {
16946        composeCoding("lifecycle", element.getLifecycle());
16947      }
16948      if (element.hasSecurityLabel()) { 
16949        for (Coding e : element.getSecurityLabel()) 
16950          composeCoding("securityLabel", e);
16951      }
16952      if (element.hasNameElement()) {
16953        composeString("name", element.getNameElement());
16954      }
16955      if (element.hasDescriptionElement()) {
16956        composeString("description", element.getDescriptionElement());
16957      }
16958      if (element.hasQueryElement()) {
16959        composeBase64Binary("query", element.getQueryElement());
16960      }
16961      if (element.hasDetail()) { 
16962        for (AuditEvent.AuditEventEntityDetailComponent e : element.getDetail()) 
16963          composeAuditEventAuditEventEntityDetailComponent("detail", e);
16964      }
16965      composeElementClose(element);
16966      xml.exit(FHIR_NS, name);
16967    }
16968  }
16969
16970  protected void composeAuditEventAuditEventEntityDetailComponent(String name, AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
16971    if (element != null) {
16972      composeElementAttributes(element);
16973      xml.enter(FHIR_NS, name);
16974      composeBackboneElements(element);
16975      if (element.hasTypeElement()) {
16976        composeString("type", element.getTypeElement());
16977      }
16978      if (element.hasValueElement()) {
16979        composeBase64Binary("value", element.getValueElement());
16980      }
16981      composeElementClose(element);
16982      xml.exit(FHIR_NS, name);
16983    }
16984  }
16985
16986  protected void composeBasic(String name, Basic element) throws IOException {
16987    if (element != null) {
16988      composeDomainResourceAttributes(element);
16989      xml.enter(FHIR_NS, name);
16990      composeDomainResourceElements(element);
16991      if (element.hasIdentifier()) { 
16992        for (Identifier e : element.getIdentifier()) 
16993          composeIdentifier("identifier", e);
16994      }
16995      if (element.hasCode()) {
16996        composeCodeableConcept("code", element.getCode());
16997      }
16998      if (element.hasSubject()) {
16999        composeReference("subject", element.getSubject());
17000      }
17001      if (element.hasCreatedElement()) {
17002        composeDate("created", element.getCreatedElement());
17003      }
17004      if (element.hasAuthor()) {
17005        composeReference("author", element.getAuthor());
17006      }
17007      composeElementClose(element);
17008      xml.exit(FHIR_NS, name);
17009    }
17010  }
17011
17012  protected void composeBinary(String name, Binary element) throws IOException {
17013    if (element != null) {
17014      composeResourceAttributes(element);
17015      xml.enter(FHIR_NS, name);
17016      composeResourceElements(element);
17017      if (element.hasContentTypeElement()) {
17018        composeCode("contentType", element.getContentTypeElement());
17019      }
17020      if (element.hasContentElement()) {
17021        composeBase64Binary("content", element.getContentElement());
17022      }
17023      composeElementClose(element);
17024      xml.exit(FHIR_NS, name);
17025    }
17026  }
17027
17028  protected void composeBodySite(String name, BodySite element) throws IOException {
17029    if (element != null) {
17030      composeDomainResourceAttributes(element);
17031      xml.enter(FHIR_NS, name);
17032      composeDomainResourceElements(element);
17033      if (element.hasPatient()) {
17034        composeReference("patient", element.getPatient());
17035      }
17036      if (element.hasIdentifier()) { 
17037        for (Identifier e : element.getIdentifier()) 
17038          composeIdentifier("identifier", e);
17039      }
17040      if (element.hasCode()) {
17041        composeCodeableConcept("code", element.getCode());
17042      }
17043      if (element.hasModifier()) { 
17044        for (CodeableConcept e : element.getModifier()) 
17045          composeCodeableConcept("modifier", e);
17046      }
17047      if (element.hasDescriptionElement()) {
17048        composeString("description", element.getDescriptionElement());
17049      }
17050      if (element.hasImage()) { 
17051        for (Attachment e : element.getImage()) 
17052          composeAttachment("image", e);
17053      }
17054      composeElementClose(element);
17055      xml.exit(FHIR_NS, name);
17056    }
17057  }
17058
17059  protected void composeBundle(String name, Bundle element) throws IOException {
17060    if (element != null) {
17061      composeResourceAttributes(element);
17062      xml.enter(FHIR_NS, name);
17063      composeResourceElements(element);
17064      if (element.hasTypeElement())
17065        composeEnumeration("type", element.getTypeElement(), new Bundle.BundleTypeEnumFactory());
17066      if (element.hasTotalElement()) {
17067        composeUnsignedInt("total", element.getTotalElement());
17068      }
17069      if (element.hasLink()) { 
17070        for (Bundle.BundleLinkComponent e : element.getLink()) 
17071          composeBundleBundleLinkComponent("link", e);
17072      }
17073      if (element.hasEntry()) { 
17074        for (Bundle.BundleEntryComponent e : element.getEntry()) 
17075          composeBundleBundleEntryComponent("entry", e);
17076      }
17077      if (element.hasSignature()) {
17078        composeSignature("signature", element.getSignature());
17079      }
17080      composeElementClose(element);
17081      xml.exit(FHIR_NS, name);
17082    }
17083  }
17084
17085  protected void composeBundleBundleLinkComponent(String name, Bundle.BundleLinkComponent element) throws IOException {
17086    if (element != null) {
17087      composeElementAttributes(element);
17088      xml.enter(FHIR_NS, name);
17089      composeBackboneElements(element);
17090      if (element.hasRelationElement()) {
17091        composeString("relation", element.getRelationElement());
17092      }
17093      if (element.hasUrlElement()) {
17094        composeUri("url", element.getUrlElement());
17095      }
17096      composeElementClose(element);
17097      xml.exit(FHIR_NS, name);
17098    }
17099  }
17100
17101  protected void composeBundleBundleEntryComponent(String name, Bundle.BundleEntryComponent element) throws IOException {
17102    if (element != null) {
17103      composeElementAttributes(element);
17104      xml.enter(FHIR_NS, name);
17105      composeBackboneElements(element);
17106      if (element.hasLink()) { 
17107        for (Bundle.BundleLinkComponent e : element.getLink()) 
17108          composeBundleBundleLinkComponent("link", e);
17109      }
17110      if (element.hasFullUrlElement()) {
17111        composeUri("fullUrl", element.getFullUrlElement());
17112      }
17113      if (element.hasResource()) {
17114        xml.enter(FHIR_NS, "resource");
17115        composeResource(element.getResource());
17116        xml.exit(FHIR_NS, "resource");
17117      }
17118      if (element.hasSearch()) {
17119        composeBundleBundleEntrySearchComponent("search", element.getSearch());
17120      }
17121      if (element.hasRequest()) {
17122        composeBundleBundleEntryRequestComponent("request", element.getRequest());
17123      }
17124      if (element.hasResponse()) {
17125        composeBundleBundleEntryResponseComponent("response", element.getResponse());
17126      }
17127      composeElementClose(element);
17128      xml.exit(FHIR_NS, name);
17129    }
17130  }
17131
17132  protected void composeBundleBundleEntrySearchComponent(String name, Bundle.BundleEntrySearchComponent element) throws IOException {
17133    if (element != null) {
17134      composeElementAttributes(element);
17135      xml.enter(FHIR_NS, name);
17136      composeBackboneElements(element);
17137      if (element.hasModeElement())
17138        composeEnumeration("mode", element.getModeElement(), new Bundle.SearchEntryModeEnumFactory());
17139      if (element.hasScoreElement()) {
17140        composeDecimal("score", element.getScoreElement());
17141      }
17142      composeElementClose(element);
17143      xml.exit(FHIR_NS, name);
17144    }
17145  }
17146
17147  protected void composeBundleBundleEntryRequestComponent(String name, Bundle.BundleEntryRequestComponent element) throws IOException {
17148    if (element != null) {
17149      composeElementAttributes(element);
17150      xml.enter(FHIR_NS, name);
17151      composeBackboneElements(element);
17152      if (element.hasMethodElement())
17153        composeEnumeration("method", element.getMethodElement(), new Bundle.HTTPVerbEnumFactory());
17154      if (element.hasUrlElement()) {
17155        composeUri("url", element.getUrlElement());
17156      }
17157      if (element.hasIfNoneMatchElement()) {
17158        composeString("ifNoneMatch", element.getIfNoneMatchElement());
17159      }
17160      if (element.hasIfModifiedSinceElement()) {
17161        composeInstant("ifModifiedSince", element.getIfModifiedSinceElement());
17162      }
17163      if (element.hasIfMatchElement()) {
17164        composeString("ifMatch", element.getIfMatchElement());
17165      }
17166      if (element.hasIfNoneExistElement()) {
17167        composeString("ifNoneExist", element.getIfNoneExistElement());
17168      }
17169      composeElementClose(element);
17170      xml.exit(FHIR_NS, name);
17171    }
17172  }
17173
17174  protected void composeBundleBundleEntryResponseComponent(String name, Bundle.BundleEntryResponseComponent element) throws IOException {
17175    if (element != null) {
17176      composeElementAttributes(element);
17177      xml.enter(FHIR_NS, name);
17178      composeBackboneElements(element);
17179      if (element.hasStatusElement()) {
17180        composeString("status", element.getStatusElement());
17181      }
17182      if (element.hasLocationElement()) {
17183        composeUri("location", element.getLocationElement());
17184      }
17185      if (element.hasEtagElement()) {
17186        composeString("etag", element.getEtagElement());
17187      }
17188      if (element.hasLastModifiedElement()) {
17189        composeInstant("lastModified", element.getLastModifiedElement());
17190      }
17191      composeElementClose(element);
17192      xml.exit(FHIR_NS, name);
17193    }
17194  }
17195
17196  protected void composeCarePlan(String name, CarePlan element) throws IOException {
17197    if (element != null) {
17198      composeDomainResourceAttributes(element);
17199      xml.enter(FHIR_NS, name);
17200      composeDomainResourceElements(element);
17201      if (element.hasIdentifier()) { 
17202        for (Identifier e : element.getIdentifier()) 
17203          composeIdentifier("identifier", e);
17204      }
17205      if (element.hasSubject()) {
17206        composeReference("subject", element.getSubject());
17207      }
17208      if (element.hasStatusElement())
17209        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanStatusEnumFactory());
17210      if (element.hasContext()) {
17211        composeReference("context", element.getContext());
17212      }
17213      if (element.hasPeriod()) {
17214        composePeriod("period", element.getPeriod());
17215      }
17216      if (element.hasAuthor()) { 
17217        for (Reference e : element.getAuthor()) 
17218          composeReference("author", e);
17219      }
17220      if (element.hasModifiedElement()) {
17221        composeDateTime("modified", element.getModifiedElement());
17222      }
17223      if (element.hasCategory()) { 
17224        for (CodeableConcept e : element.getCategory()) 
17225          composeCodeableConcept("category", e);
17226      }
17227      if (element.hasDescriptionElement()) {
17228        composeString("description", element.getDescriptionElement());
17229      }
17230      if (element.hasAddresses()) { 
17231        for (Reference e : element.getAddresses()) 
17232          composeReference("addresses", e);
17233      }
17234      if (element.hasSupport()) { 
17235        for (Reference e : element.getSupport()) 
17236          composeReference("support", e);
17237      }
17238      if (element.hasRelatedPlan()) { 
17239        for (CarePlan.CarePlanRelatedPlanComponent e : element.getRelatedPlan()) 
17240          composeCarePlanCarePlanRelatedPlanComponent("relatedPlan", e);
17241      }
17242      if (element.hasParticipant()) { 
17243        for (CarePlan.CarePlanParticipantComponent e : element.getParticipant()) 
17244          composeCarePlanCarePlanParticipantComponent("participant", e);
17245      }
17246      if (element.hasGoal()) { 
17247        for (Reference e : element.getGoal()) 
17248          composeReference("goal", e);
17249      }
17250      if (element.hasActivity()) { 
17251        for (CarePlan.CarePlanActivityComponent e : element.getActivity()) 
17252          composeCarePlanCarePlanActivityComponent("activity", e);
17253      }
17254      if (element.hasNote()) {
17255        composeAnnotation("note", element.getNote());
17256      }
17257      composeElementClose(element);
17258      xml.exit(FHIR_NS, name);
17259    }
17260  }
17261
17262  protected void composeCarePlanCarePlanRelatedPlanComponent(String name, CarePlan.CarePlanRelatedPlanComponent element) throws IOException {
17263    if (element != null) {
17264      composeElementAttributes(element);
17265      xml.enter(FHIR_NS, name);
17266      composeBackboneElements(element);
17267      if (element.hasCodeElement())
17268        composeEnumeration("code", element.getCodeElement(), new CarePlan.CarePlanRelationshipEnumFactory());
17269      if (element.hasPlan()) {
17270        composeReference("plan", element.getPlan());
17271      }
17272      composeElementClose(element);
17273      xml.exit(FHIR_NS, name);
17274    }
17275  }
17276
17277  protected void composeCarePlanCarePlanParticipantComponent(String name, CarePlan.CarePlanParticipantComponent element) throws IOException {
17278    if (element != null) {
17279      composeElementAttributes(element);
17280      xml.enter(FHIR_NS, name);
17281      composeBackboneElements(element);
17282      if (element.hasRole()) {
17283        composeCodeableConcept("role", element.getRole());
17284      }
17285      if (element.hasMember()) {
17286        composeReference("member", element.getMember());
17287      }
17288      composeElementClose(element);
17289      xml.exit(FHIR_NS, name);
17290    }
17291  }
17292
17293  protected void composeCarePlanCarePlanActivityComponent(String name, CarePlan.CarePlanActivityComponent element) throws IOException {
17294    if (element != null) {
17295      composeElementAttributes(element);
17296      xml.enter(FHIR_NS, name);
17297      composeBackboneElements(element);
17298      if (element.hasActionResulting()) { 
17299        for (Reference e : element.getActionResulting()) 
17300          composeReference("actionResulting", e);
17301      }
17302      if (element.hasProgress()) { 
17303        for (Annotation e : element.getProgress()) 
17304          composeAnnotation("progress", e);
17305      }
17306      if (element.hasReference()) {
17307        composeReference("reference", element.getReference());
17308      }
17309      if (element.hasDetail()) {
17310        composeCarePlanCarePlanActivityDetailComponent("detail", element.getDetail());
17311      }
17312      composeElementClose(element);
17313      xml.exit(FHIR_NS, name);
17314    }
17315  }
17316
17317  protected void composeCarePlanCarePlanActivityDetailComponent(String name, CarePlan.CarePlanActivityDetailComponent element) throws IOException {
17318    if (element != null) {
17319      composeElementAttributes(element);
17320      xml.enter(FHIR_NS, name);
17321      composeBackboneElements(element);
17322      if (element.hasCategory()) {
17323        composeCodeableConcept("category", element.getCategory());
17324      }
17325      if (element.hasCode()) {
17326        composeCodeableConcept("code", element.getCode());
17327      }
17328      if (element.hasReasonCode()) { 
17329        for (CodeableConcept e : element.getReasonCode()) 
17330          composeCodeableConcept("reasonCode", e);
17331      }
17332      if (element.hasReasonReference()) { 
17333        for (Reference e : element.getReasonReference()) 
17334          composeReference("reasonReference", e);
17335      }
17336      if (element.hasGoal()) { 
17337        for (Reference e : element.getGoal()) 
17338          composeReference("goal", e);
17339      }
17340      if (element.hasStatusElement())
17341        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanActivityStatusEnumFactory());
17342      if (element.hasStatusReason()) {
17343        composeCodeableConcept("statusReason", element.getStatusReason());
17344      }
17345      if (element.hasProhibitedElement()) {
17346        composeBoolean("prohibited", element.getProhibitedElement());
17347      }
17348      if (element.hasScheduled()) {
17349        composeType("scheduled", element.getScheduled());
17350      }      if (element.hasLocation()) {
17351        composeReference("location", element.getLocation());
17352      }
17353      if (element.hasPerformer()) { 
17354        for (Reference e : element.getPerformer()) 
17355          composeReference("performer", e);
17356      }
17357      if (element.hasProduct()) {
17358        composeType("product", element.getProduct());
17359      }      if (element.hasDailyAmount()) {
17360        composeSimpleQuantity("dailyAmount", element.getDailyAmount());
17361      }
17362      if (element.hasQuantity()) {
17363        composeSimpleQuantity("quantity", element.getQuantity());
17364      }
17365      if (element.hasDescriptionElement()) {
17366        composeString("description", element.getDescriptionElement());
17367      }
17368      composeElementClose(element);
17369      xml.exit(FHIR_NS, name);
17370    }
17371  }
17372
17373  protected void composeCareTeam(String name, CareTeam element) throws IOException {
17374    if (element != null) {
17375      composeDomainResourceAttributes(element);
17376      xml.enter(FHIR_NS, name);
17377      composeDomainResourceElements(element);
17378      if (element.hasIdentifier()) { 
17379        for (Identifier e : element.getIdentifier()) 
17380          composeIdentifier("identifier", e);
17381      }
17382      if (element.hasStatus()) {
17383        composeCodeableConcept("status", element.getStatus());
17384      }
17385      if (element.hasType()) { 
17386        for (CodeableConcept e : element.getType()) 
17387          composeCodeableConcept("type", e);
17388      }
17389      if (element.hasNameElement()) {
17390        composeString("name", element.getNameElement());
17391      }
17392      if (element.hasSubject()) {
17393        composeReference("subject", element.getSubject());
17394      }
17395      if (element.hasPeriod()) {
17396        composePeriod("period", element.getPeriod());
17397      }
17398      if (element.hasParticipant()) { 
17399        for (CareTeam.CareTeamParticipantComponent e : element.getParticipant()) 
17400          composeCareTeamCareTeamParticipantComponent("participant", e);
17401      }
17402      if (element.hasManagingOrganization()) {
17403        composeReference("managingOrganization", element.getManagingOrganization());
17404      }
17405      composeElementClose(element);
17406      xml.exit(FHIR_NS, name);
17407    }
17408  }
17409
17410  protected void composeCareTeamCareTeamParticipantComponent(String name, CareTeam.CareTeamParticipantComponent element) throws IOException {
17411    if (element != null) {
17412      composeElementAttributes(element);
17413      xml.enter(FHIR_NS, name);
17414      composeBackboneElements(element);
17415      if (element.hasRole()) {
17416        composeCodeableConcept("role", element.getRole());
17417      }
17418      if (element.hasMember()) {
17419        composeReference("member", element.getMember());
17420      }
17421      if (element.hasPeriod()) {
17422        composePeriod("period", element.getPeriod());
17423      }
17424      composeElementClose(element);
17425      xml.exit(FHIR_NS, name);
17426    }
17427  }
17428
17429  protected void composeClaim(String name, Claim element) throws IOException {
17430    if (element != null) {
17431      composeDomainResourceAttributes(element);
17432      xml.enter(FHIR_NS, name);
17433      composeDomainResourceElements(element);
17434      if (element.hasTypeElement())
17435        composeEnumeration("type", element.getTypeElement(), new Claim.ClaimTypeEnumFactory());
17436      if (element.hasSubType()) { 
17437        for (Coding e : element.getSubType()) 
17438          composeCoding("subType", e);
17439      }
17440      if (element.hasIdentifier()) { 
17441        for (Identifier e : element.getIdentifier()) 
17442          composeIdentifier("identifier", e);
17443      }
17444      if (element.hasRuleset()) {
17445        composeCoding("ruleset", element.getRuleset());
17446      }
17447      if (element.hasOriginalRuleset()) {
17448        composeCoding("originalRuleset", element.getOriginalRuleset());
17449      }
17450      if (element.hasCreatedElement()) {
17451        composeDateTime("created", element.getCreatedElement());
17452      }
17453      if (element.hasBillablePeriod()) {
17454        composePeriod("billablePeriod", element.getBillablePeriod());
17455      }
17456      if (element.hasTarget()) {
17457        composeType("target", element.getTarget());
17458      }      if (element.hasProvider()) {
17459        composeType("provider", element.getProvider());
17460      }      if (element.hasOrganization()) {
17461        composeType("organization", element.getOrganization());
17462      }      if (element.hasUseElement())
17463        composeEnumeration("use", element.getUseElement(), new Claim.UseEnumFactory());
17464      if (element.hasPriority()) {
17465        composeCoding("priority", element.getPriority());
17466      }
17467      if (element.hasFundsReserve()) {
17468        composeCoding("fundsReserve", element.getFundsReserve());
17469      }
17470      if (element.hasEnterer()) {
17471        composeType("enterer", element.getEnterer());
17472      }      if (element.hasFacility()) {
17473        composeType("facility", element.getFacility());
17474      }      if (element.hasRelated()) { 
17475        for (Claim.RelatedClaimsComponent e : element.getRelated()) 
17476          composeClaimRelatedClaimsComponent("related", e);
17477      }
17478      if (element.hasPrescription()) {
17479        composeType("prescription", element.getPrescription());
17480      }      if (element.hasOriginalPrescription()) {
17481        composeType("originalPrescription", element.getOriginalPrescription());
17482      }      if (element.hasPayee()) {
17483        composeClaimPayeeComponent("payee", element.getPayee());
17484      }
17485      if (element.hasReferral()) {
17486        composeType("referral", element.getReferral());
17487      }      if (element.hasOccurrenceCode()) { 
17488        for (Coding e : element.getOccurrenceCode()) 
17489          composeCoding("occurrenceCode", e);
17490      }
17491      if (element.hasOccurenceSpanCode()) { 
17492        for (Coding e : element.getOccurenceSpanCode()) 
17493          composeCoding("occurenceSpanCode", e);
17494      }
17495      if (element.hasValueCode()) { 
17496        for (Coding e : element.getValueCode()) 
17497          composeCoding("valueCode", e);
17498      }
17499      if (element.hasDiagnosis()) { 
17500        for (Claim.DiagnosisComponent e : element.getDiagnosis()) 
17501          composeClaimDiagnosisComponent("diagnosis", e);
17502      }
17503      if (element.hasProcedure()) { 
17504        for (Claim.ProcedureComponent e : element.getProcedure()) 
17505          composeClaimProcedureComponent("procedure", e);
17506      }
17507      if (element.hasSpecialCondition()) { 
17508        for (Coding e : element.getSpecialCondition()) 
17509          composeCoding("specialCondition", e);
17510      }
17511      if (element.hasPatient()) {
17512        composeType("patient", element.getPatient());
17513      }      if (element.hasCoverage()) { 
17514        for (Claim.CoverageComponent e : element.getCoverage()) 
17515          composeClaimCoverageComponent("coverage", e);
17516      }
17517      if (element.hasAccidentDateElement()) {
17518        composeDate("accidentDate", element.getAccidentDateElement());
17519      }
17520      if (element.hasAccidentType()) {
17521        composeCoding("accidentType", element.getAccidentType());
17522      }
17523      if (element.hasAccidentLocation()) {
17524        composeType("accidentLocation", element.getAccidentLocation());
17525      }      if (element.hasInterventionException()) { 
17526        for (Coding e : element.getInterventionException()) 
17527          composeCoding("interventionException", e);
17528      }
17529      if (element.hasOnset()) { 
17530        for (Claim.OnsetComponent e : element.getOnset()) 
17531          composeClaimOnsetComponent("onset", e);
17532      }
17533      if (element.hasEmploymentImpacted()) {
17534        composePeriod("employmentImpacted", element.getEmploymentImpacted());
17535      }
17536      if (element.hasHospitalization()) {
17537        composePeriod("hospitalization", element.getHospitalization());
17538      }
17539      if (element.hasItem()) { 
17540        for (Claim.ItemsComponent e : element.getItem()) 
17541          composeClaimItemsComponent("item", e);
17542      }
17543      if (element.hasTotal()) {
17544        composeMoney("total", element.getTotal());
17545      }
17546      if (element.hasAdditionalMaterial()) { 
17547        for (Coding e : element.getAdditionalMaterial()) 
17548          composeCoding("additionalMaterial", e);
17549      }
17550      if (element.hasMissingTeeth()) { 
17551        for (Claim.MissingTeethComponent e : element.getMissingTeeth()) 
17552          composeClaimMissingTeethComponent("missingTeeth", e);
17553      }
17554      composeElementClose(element);
17555      xml.exit(FHIR_NS, name);
17556    }
17557  }
17558
17559  protected void composeClaimRelatedClaimsComponent(String name, Claim.RelatedClaimsComponent element) throws IOException {
17560    if (element != null) {
17561      composeElementAttributes(element);
17562      xml.enter(FHIR_NS, name);
17563      composeBackboneElements(element);
17564      if (element.hasClaim()) {
17565        composeType("claim", element.getClaim());
17566      }      if (element.hasRelationship()) {
17567        composeCoding("relationship", element.getRelationship());
17568      }
17569      if (element.hasReference()) {
17570        composeIdentifier("reference", element.getReference());
17571      }
17572      composeElementClose(element);
17573      xml.exit(FHIR_NS, name);
17574    }
17575  }
17576
17577  protected void composeClaimPayeeComponent(String name, Claim.PayeeComponent element) throws IOException {
17578    if (element != null) {
17579      composeElementAttributes(element);
17580      xml.enter(FHIR_NS, name);
17581      composeBackboneElements(element);
17582      if (element.hasType()) {
17583        composeCoding("type", element.getType());
17584      }
17585      if (element.hasParty()) {
17586        composeType("party", element.getParty());
17587      }      composeElementClose(element);
17588      xml.exit(FHIR_NS, name);
17589    }
17590  }
17591
17592  protected void composeClaimDiagnosisComponent(String name, Claim.DiagnosisComponent element) throws IOException {
17593    if (element != null) {
17594      composeElementAttributes(element);
17595      xml.enter(FHIR_NS, name);
17596      composeBackboneElements(element);
17597      if (element.hasSequenceElement()) {
17598        composePositiveInt("sequence", element.getSequenceElement());
17599      }
17600      if (element.hasDiagnosis()) {
17601        composeCoding("diagnosis", element.getDiagnosis());
17602      }
17603      composeElementClose(element);
17604      xml.exit(FHIR_NS, name);
17605    }
17606  }
17607
17608  protected void composeClaimProcedureComponent(String name, Claim.ProcedureComponent element) throws IOException {
17609    if (element != null) {
17610      composeElementAttributes(element);
17611      xml.enter(FHIR_NS, name);
17612      composeBackboneElements(element);
17613      if (element.hasSequenceElement()) {
17614        composePositiveInt("sequence", element.getSequenceElement());
17615      }
17616      if (element.hasDateElement()) {
17617        composeDateTime("date", element.getDateElement());
17618      }
17619      if (element.hasProcedure()) {
17620        composeType("procedure", element.getProcedure());
17621      }      composeElementClose(element);
17622      xml.exit(FHIR_NS, name);
17623    }
17624  }
17625
17626  protected void composeClaimCoverageComponent(String name, Claim.CoverageComponent element) throws IOException {
17627    if (element != null) {
17628      composeElementAttributes(element);
17629      xml.enter(FHIR_NS, name);
17630      composeBackboneElements(element);
17631      if (element.hasSequenceElement()) {
17632        composePositiveInt("sequence", element.getSequenceElement());
17633      }
17634      if (element.hasFocalElement()) {
17635        composeBoolean("focal", element.getFocalElement());
17636      }
17637      if (element.hasCoverage()) {
17638        composeType("coverage", element.getCoverage());
17639      }      if (element.hasBusinessArrangementElement()) {
17640        composeString("businessArrangement", element.getBusinessArrangementElement());
17641      }
17642      if (element.hasPreAuthRef()) { 
17643        for (StringType e : element.getPreAuthRef()) 
17644          composeString("preAuthRef", e);
17645      }
17646      if (element.hasClaimResponse()) {
17647        composeReference("claimResponse", element.getClaimResponse());
17648      }
17649      if (element.hasOriginalRuleset()) {
17650        composeCoding("originalRuleset", element.getOriginalRuleset());
17651      }
17652      composeElementClose(element);
17653      xml.exit(FHIR_NS, name);
17654    }
17655  }
17656
17657  protected void composeClaimOnsetComponent(String name, Claim.OnsetComponent element) throws IOException {
17658    if (element != null) {
17659      composeElementAttributes(element);
17660      xml.enter(FHIR_NS, name);
17661      composeBackboneElements(element);
17662      if (element.hasTime()) {
17663        composeType("time", element.getTime());
17664      }      if (element.hasType()) {
17665        composeCoding("type", element.getType());
17666      }
17667      composeElementClose(element);
17668      xml.exit(FHIR_NS, name);
17669    }
17670  }
17671
17672  protected void composeClaimItemsComponent(String name, Claim.ItemsComponent element) throws IOException {
17673    if (element != null) {
17674      composeElementAttributes(element);
17675      xml.enter(FHIR_NS, name);
17676      composeBackboneElements(element);
17677      if (element.hasSequenceElement()) {
17678        composePositiveInt("sequence", element.getSequenceElement());
17679      }
17680      if (element.hasType()) {
17681        composeCoding("type", element.getType());
17682      }
17683      if (element.hasProvider()) {
17684        composeType("provider", element.getProvider());
17685      }      if (element.hasSupervisor()) {
17686        composeType("supervisor", element.getSupervisor());
17687      }      if (element.hasProviderQualification()) {
17688        composeCoding("providerQualification", element.getProviderQualification());
17689      }
17690      if (element.hasDiagnosisLinkId()) { 
17691        for (PositiveIntType e : element.getDiagnosisLinkId()) 
17692          composePositiveInt("diagnosisLinkId", e);
17693      }
17694      if (element.hasService()) {
17695        composeCoding("service", element.getService());
17696      }
17697      if (element.hasServiceModifier()) { 
17698        for (Coding e : element.getServiceModifier()) 
17699          composeCoding("serviceModifier", e);
17700      }
17701      if (element.hasModifier()) { 
17702        for (Coding e : element.getModifier()) 
17703          composeCoding("modifier", e);
17704      }
17705      if (element.hasProgramCode()) { 
17706        for (Coding e : element.getProgramCode()) 
17707          composeCoding("programCode", e);
17708      }
17709      if (element.hasServiced()) {
17710        composeType("serviced", element.getServiced());
17711      }      if (element.hasPlace()) {
17712        composeCoding("place", element.getPlace());
17713      }
17714      if (element.hasQuantity()) {
17715        composeSimpleQuantity("quantity", element.getQuantity());
17716      }
17717      if (element.hasUnitPrice()) {
17718        composeMoney("unitPrice", element.getUnitPrice());
17719      }
17720      if (element.hasFactorElement()) {
17721        composeDecimal("factor", element.getFactorElement());
17722      }
17723      if (element.hasPointsElement()) {
17724        composeDecimal("points", element.getPointsElement());
17725      }
17726      if (element.hasNet()) {
17727        composeMoney("net", element.getNet());
17728      }
17729      if (element.hasUdi()) { 
17730        for (Reference e : element.getUdi()) 
17731          composeReference("udi", e);
17732      }
17733      if (element.hasBodySite()) {
17734        composeCoding("bodySite", element.getBodySite());
17735      }
17736      if (element.hasSubSite()) { 
17737        for (Coding e : element.getSubSite()) 
17738          composeCoding("subSite", e);
17739      }
17740      if (element.hasDetail()) { 
17741        for (Claim.DetailComponent e : element.getDetail()) 
17742          composeClaimDetailComponent("detail", e);
17743      }
17744      if (element.hasProsthesis()) {
17745        composeClaimProsthesisComponent("prosthesis", element.getProsthesis());
17746      }
17747      composeElementClose(element);
17748      xml.exit(FHIR_NS, name);
17749    }
17750  }
17751
17752  protected void composeClaimDetailComponent(String name, Claim.DetailComponent element) throws IOException {
17753    if (element != null) {
17754      composeElementAttributes(element);
17755      xml.enter(FHIR_NS, name);
17756      composeBackboneElements(element);
17757      if (element.hasSequenceElement()) {
17758        composePositiveInt("sequence", element.getSequenceElement());
17759      }
17760      if (element.hasType()) {
17761        composeCoding("type", element.getType());
17762      }
17763      if (element.hasService()) {
17764        composeCoding("service", element.getService());
17765      }
17766      if (element.hasProgramCode()) { 
17767        for (Coding e : element.getProgramCode()) 
17768          composeCoding("programCode", e);
17769      }
17770      if (element.hasQuantity()) {
17771        composeSimpleQuantity("quantity", element.getQuantity());
17772      }
17773      if (element.hasUnitPrice()) {
17774        composeMoney("unitPrice", element.getUnitPrice());
17775      }
17776      if (element.hasFactorElement()) {
17777        composeDecimal("factor", element.getFactorElement());
17778      }
17779      if (element.hasPointsElement()) {
17780        composeDecimal("points", element.getPointsElement());
17781      }
17782      if (element.hasNet()) {
17783        composeMoney("net", element.getNet());
17784      }
17785      if (element.hasUdi()) { 
17786        for (Reference e : element.getUdi()) 
17787          composeReference("udi", e);
17788      }
17789      if (element.hasSubDetail()) { 
17790        for (Claim.SubDetailComponent e : element.getSubDetail()) 
17791          composeClaimSubDetailComponent("subDetail", e);
17792      }
17793      composeElementClose(element);
17794      xml.exit(FHIR_NS, name);
17795    }
17796  }
17797
17798  protected void composeClaimSubDetailComponent(String name, Claim.SubDetailComponent element) throws IOException {
17799    if (element != null) {
17800      composeElementAttributes(element);
17801      xml.enter(FHIR_NS, name);
17802      composeBackboneElements(element);
17803      if (element.hasSequenceElement()) {
17804        composePositiveInt("sequence", element.getSequenceElement());
17805      }
17806      if (element.hasType()) {
17807        composeCoding("type", element.getType());
17808      }
17809      if (element.hasService()) {
17810        composeCoding("service", element.getService());
17811      }
17812      if (element.hasProgramCode()) { 
17813        for (Coding e : element.getProgramCode()) 
17814          composeCoding("programCode", e);
17815      }
17816      if (element.hasQuantity()) {
17817        composeSimpleQuantity("quantity", element.getQuantity());
17818      }
17819      if (element.hasUnitPrice()) {
17820        composeMoney("unitPrice", element.getUnitPrice());
17821      }
17822      if (element.hasFactorElement()) {
17823        composeDecimal("factor", element.getFactorElement());
17824      }
17825      if (element.hasPointsElement()) {
17826        composeDecimal("points", element.getPointsElement());
17827      }
17828      if (element.hasNet()) {
17829        composeMoney("net", element.getNet());
17830      }
17831      if (element.hasUdi()) { 
17832        for (Reference e : element.getUdi()) 
17833          composeReference("udi", e);
17834      }
17835      composeElementClose(element);
17836      xml.exit(FHIR_NS, name);
17837    }
17838  }
17839
17840  protected void composeClaimProsthesisComponent(String name, Claim.ProsthesisComponent element) throws IOException {
17841    if (element != null) {
17842      composeElementAttributes(element);
17843      xml.enter(FHIR_NS, name);
17844      composeBackboneElements(element);
17845      if (element.hasInitialElement()) {
17846        composeBoolean("initial", element.getInitialElement());
17847      }
17848      if (element.hasPriorDateElement()) {
17849        composeDate("priorDate", element.getPriorDateElement());
17850      }
17851      if (element.hasPriorMaterial()) {
17852        composeCoding("priorMaterial", element.getPriorMaterial());
17853      }
17854      composeElementClose(element);
17855      xml.exit(FHIR_NS, name);
17856    }
17857  }
17858
17859  protected void composeClaimMissingTeethComponent(String name, Claim.MissingTeethComponent element) throws IOException {
17860    if (element != null) {
17861      composeElementAttributes(element);
17862      xml.enter(FHIR_NS, name);
17863      composeBackboneElements(element);
17864      if (element.hasTooth()) {
17865        composeCoding("tooth", element.getTooth());
17866      }
17867      if (element.hasReason()) {
17868        composeCoding("reason", element.getReason());
17869      }
17870      if (element.hasExtractionDateElement()) {
17871        composeDate("extractionDate", element.getExtractionDateElement());
17872      }
17873      composeElementClose(element);
17874      xml.exit(FHIR_NS, name);
17875    }
17876  }
17877
17878  protected void composeClaimResponse(String name, ClaimResponse element) throws IOException {
17879    if (element != null) {
17880      composeDomainResourceAttributes(element);
17881      xml.enter(FHIR_NS, name);
17882      composeDomainResourceElements(element);
17883      if (element.hasIdentifier()) { 
17884        for (Identifier e : element.getIdentifier()) 
17885          composeIdentifier("identifier", e);
17886      }
17887      if (element.hasRequest()) {
17888        composeType("request", element.getRequest());
17889      }      if (element.hasRuleset()) {
17890        composeCoding("ruleset", element.getRuleset());
17891      }
17892      if (element.hasOriginalRuleset()) {
17893        composeCoding("originalRuleset", element.getOriginalRuleset());
17894      }
17895      if (element.hasCreatedElement()) {
17896        composeDateTime("created", element.getCreatedElement());
17897      }
17898      if (element.hasOrganization()) {
17899        composeType("organization", element.getOrganization());
17900      }      if (element.hasRequestProvider()) {
17901        composeType("requestProvider", element.getRequestProvider());
17902      }      if (element.hasRequestOrganization()) {
17903        composeType("requestOrganization", element.getRequestOrganization());
17904      }      if (element.hasOutcomeElement())
17905        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
17906      if (element.hasDispositionElement()) {
17907        composeString("disposition", element.getDispositionElement());
17908      }
17909      if (element.hasPayeeType()) {
17910        composeCoding("payeeType", element.getPayeeType());
17911      }
17912      if (element.hasItem()) { 
17913        for (ClaimResponse.ItemsComponent e : element.getItem()) 
17914          composeClaimResponseItemsComponent("item", e);
17915      }
17916      if (element.hasAddItem()) { 
17917        for (ClaimResponse.AddedItemComponent e : element.getAddItem()) 
17918          composeClaimResponseAddedItemComponent("addItem", e);
17919      }
17920      if (element.hasError()) { 
17921        for (ClaimResponse.ErrorsComponent e : element.getError()) 
17922          composeClaimResponseErrorsComponent("error", e);
17923      }
17924      if (element.hasTotalCost()) {
17925        composeMoney("totalCost", element.getTotalCost());
17926      }
17927      if (element.hasUnallocDeductable()) {
17928        composeMoney("unallocDeductable", element.getUnallocDeductable());
17929      }
17930      if (element.hasTotalBenefit()) {
17931        composeMoney("totalBenefit", element.getTotalBenefit());
17932      }
17933      if (element.hasPaymentAdjustment()) {
17934        composeMoney("paymentAdjustment", element.getPaymentAdjustment());
17935      }
17936      if (element.hasPaymentAdjustmentReason()) {
17937        composeCoding("paymentAdjustmentReason", element.getPaymentAdjustmentReason());
17938      }
17939      if (element.hasPaymentDateElement()) {
17940        composeDate("paymentDate", element.getPaymentDateElement());
17941      }
17942      if (element.hasPaymentAmount()) {
17943        composeMoney("paymentAmount", element.getPaymentAmount());
17944      }
17945      if (element.hasPaymentRef()) {
17946        composeIdentifier("paymentRef", element.getPaymentRef());
17947      }
17948      if (element.hasReserved()) {
17949        composeCoding("reserved", element.getReserved());
17950      }
17951      if (element.hasForm()) {
17952        composeCoding("form", element.getForm());
17953      }
17954      if (element.hasNote()) { 
17955        for (ClaimResponse.NotesComponent e : element.getNote()) 
17956          composeClaimResponseNotesComponent("note", e);
17957      }
17958      if (element.hasCoverage()) { 
17959        for (ClaimResponse.CoverageComponent e : element.getCoverage()) 
17960          composeClaimResponseCoverageComponent("coverage", e);
17961      }
17962      composeElementClose(element);
17963      xml.exit(FHIR_NS, name);
17964    }
17965  }
17966
17967  protected void composeClaimResponseItemsComponent(String name, ClaimResponse.ItemsComponent element) throws IOException {
17968    if (element != null) {
17969      composeElementAttributes(element);
17970      xml.enter(FHIR_NS, name);
17971      composeBackboneElements(element);
17972      if (element.hasSequenceLinkIdElement()) {
17973        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
17974      }
17975      if (element.hasNoteNumber()) { 
17976        for (PositiveIntType e : element.getNoteNumber()) 
17977          composePositiveInt("noteNumber", e);
17978      }
17979      if (element.hasAdjudication()) { 
17980        for (ClaimResponse.ItemAdjudicationComponent e : element.getAdjudication()) 
17981          composeClaimResponseItemAdjudicationComponent("adjudication", e);
17982      }
17983      if (element.hasDetail()) { 
17984        for (ClaimResponse.ItemDetailComponent e : element.getDetail()) 
17985          composeClaimResponseItemDetailComponent("detail", e);
17986      }
17987      composeElementClose(element);
17988      xml.exit(FHIR_NS, name);
17989    }
17990  }
17991
17992  protected void composeClaimResponseItemAdjudicationComponent(String name, ClaimResponse.ItemAdjudicationComponent element) throws IOException {
17993    if (element != null) {
17994      composeElementAttributes(element);
17995      xml.enter(FHIR_NS, name);
17996      composeBackboneElements(element);
17997      if (element.hasCategory()) {
17998        composeCoding("category", element.getCategory());
17999      }
18000      if (element.hasReason()) {
18001        composeCoding("reason", element.getReason());
18002      }
18003      if (element.hasAmount()) {
18004        composeMoney("amount", element.getAmount());
18005      }
18006      if (element.hasValueElement()) {
18007        composeDecimal("value", element.getValueElement());
18008      }
18009      composeElementClose(element);
18010      xml.exit(FHIR_NS, name);
18011    }
18012  }
18013
18014  protected void composeClaimResponseItemDetailComponent(String name, ClaimResponse.ItemDetailComponent element) throws IOException {
18015    if (element != null) {
18016      composeElementAttributes(element);
18017      xml.enter(FHIR_NS, name);
18018      composeBackboneElements(element);
18019      if (element.hasSequenceLinkIdElement()) {
18020        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
18021      }
18022      if (element.hasAdjudication()) { 
18023        for (ClaimResponse.DetailAdjudicationComponent e : element.getAdjudication()) 
18024          composeClaimResponseDetailAdjudicationComponent("adjudication", e);
18025      }
18026      if (element.hasSubDetail()) { 
18027        for (ClaimResponse.SubDetailComponent e : element.getSubDetail()) 
18028          composeClaimResponseSubDetailComponent("subDetail", e);
18029      }
18030      composeElementClose(element);
18031      xml.exit(FHIR_NS, name);
18032    }
18033  }
18034
18035  protected void composeClaimResponseDetailAdjudicationComponent(String name, ClaimResponse.DetailAdjudicationComponent element) throws IOException {
18036    if (element != null) {
18037      composeElementAttributes(element);
18038      xml.enter(FHIR_NS, name);
18039      composeBackboneElements(element);
18040      if (element.hasCategory()) {
18041        composeCoding("category", element.getCategory());
18042      }
18043      if (element.hasReason()) {
18044        composeCoding("reason", element.getReason());
18045      }
18046      if (element.hasAmount()) {
18047        composeMoney("amount", element.getAmount());
18048      }
18049      if (element.hasValueElement()) {
18050        composeDecimal("value", element.getValueElement());
18051      }
18052      composeElementClose(element);
18053      xml.exit(FHIR_NS, name);
18054    }
18055  }
18056
18057  protected void composeClaimResponseSubDetailComponent(String name, ClaimResponse.SubDetailComponent element) throws IOException {
18058    if (element != null) {
18059      composeElementAttributes(element);
18060      xml.enter(FHIR_NS, name);
18061      composeBackboneElements(element);
18062      if (element.hasSequenceLinkIdElement()) {
18063        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
18064      }
18065      if (element.hasAdjudication()) { 
18066        for (ClaimResponse.SubdetailAdjudicationComponent e : element.getAdjudication()) 
18067          composeClaimResponseSubdetailAdjudicationComponent("adjudication", e);
18068      }
18069      composeElementClose(element);
18070      xml.exit(FHIR_NS, name);
18071    }
18072  }
18073
18074  protected void composeClaimResponseSubdetailAdjudicationComponent(String name, ClaimResponse.SubdetailAdjudicationComponent element) throws IOException {
18075    if (element != null) {
18076      composeElementAttributes(element);
18077      xml.enter(FHIR_NS, name);
18078      composeBackboneElements(element);
18079      if (element.hasCategory()) {
18080        composeCoding("category", element.getCategory());
18081      }
18082      if (element.hasReason()) {
18083        composeCoding("reason", element.getReason());
18084      }
18085      if (element.hasAmount()) {
18086        composeMoney("amount", element.getAmount());
18087      }
18088      if (element.hasValueElement()) {
18089        composeDecimal("value", element.getValueElement());
18090      }
18091      composeElementClose(element);
18092      xml.exit(FHIR_NS, name);
18093    }
18094  }
18095
18096  protected void composeClaimResponseAddedItemComponent(String name, ClaimResponse.AddedItemComponent element) throws IOException {
18097    if (element != null) {
18098      composeElementAttributes(element);
18099      xml.enter(FHIR_NS, name);
18100      composeBackboneElements(element);
18101      if (element.hasSequenceLinkId()) { 
18102        for (PositiveIntType e : element.getSequenceLinkId()) 
18103          composePositiveInt("sequenceLinkId", e);
18104      }
18105      if (element.hasService()) {
18106        composeCoding("service", element.getService());
18107      }
18108      if (element.hasFee()) {
18109        composeMoney("fee", element.getFee());
18110      }
18111      if (element.hasNoteNumberLinkId()) { 
18112        for (PositiveIntType e : element.getNoteNumberLinkId()) 
18113          composePositiveInt("noteNumberLinkId", e);
18114      }
18115      if (element.hasAdjudication()) { 
18116        for (ClaimResponse.AddedItemAdjudicationComponent e : element.getAdjudication()) 
18117          composeClaimResponseAddedItemAdjudicationComponent("adjudication", e);
18118      }
18119      if (element.hasDetail()) { 
18120        for (ClaimResponse.AddedItemsDetailComponent e : element.getDetail()) 
18121          composeClaimResponseAddedItemsDetailComponent("detail", e);
18122      }
18123      composeElementClose(element);
18124      xml.exit(FHIR_NS, name);
18125    }
18126  }
18127
18128  protected void composeClaimResponseAddedItemAdjudicationComponent(String name, ClaimResponse.AddedItemAdjudicationComponent element) throws IOException {
18129    if (element != null) {
18130      composeElementAttributes(element);
18131      xml.enter(FHIR_NS, name);
18132      composeBackboneElements(element);
18133      if (element.hasCategory()) {
18134        composeCoding("category", element.getCategory());
18135      }
18136      if (element.hasReason()) {
18137        composeCoding("reason", element.getReason());
18138      }
18139      if (element.hasAmount()) {
18140        composeMoney("amount", element.getAmount());
18141      }
18142      if (element.hasValueElement()) {
18143        composeDecimal("value", element.getValueElement());
18144      }
18145      composeElementClose(element);
18146      xml.exit(FHIR_NS, name);
18147    }
18148  }
18149
18150  protected void composeClaimResponseAddedItemsDetailComponent(String name, ClaimResponse.AddedItemsDetailComponent element) throws IOException {
18151    if (element != null) {
18152      composeElementAttributes(element);
18153      xml.enter(FHIR_NS, name);
18154      composeBackboneElements(element);
18155      if (element.hasService()) {
18156        composeCoding("service", element.getService());
18157      }
18158      if (element.hasFee()) {
18159        composeMoney("fee", element.getFee());
18160      }
18161      if (element.hasAdjudication()) { 
18162        for (ClaimResponse.AddedItemDetailAdjudicationComponent e : element.getAdjudication()) 
18163          composeClaimResponseAddedItemDetailAdjudicationComponent("adjudication", e);
18164      }
18165      composeElementClose(element);
18166      xml.exit(FHIR_NS, name);
18167    }
18168  }
18169
18170  protected void composeClaimResponseAddedItemDetailAdjudicationComponent(String name, ClaimResponse.AddedItemDetailAdjudicationComponent element) throws IOException {
18171    if (element != null) {
18172      composeElementAttributes(element);
18173      xml.enter(FHIR_NS, name);
18174      composeBackboneElements(element);
18175      if (element.hasCategory()) {
18176        composeCoding("category", element.getCategory());
18177      }
18178      if (element.hasReason()) {
18179        composeCoding("reason", element.getReason());
18180      }
18181      if (element.hasAmount()) {
18182        composeMoney("amount", element.getAmount());
18183      }
18184      if (element.hasValueElement()) {
18185        composeDecimal("value", element.getValueElement());
18186      }
18187      composeElementClose(element);
18188      xml.exit(FHIR_NS, name);
18189    }
18190  }
18191
18192  protected void composeClaimResponseErrorsComponent(String name, ClaimResponse.ErrorsComponent element) throws IOException {
18193    if (element != null) {
18194      composeElementAttributes(element);
18195      xml.enter(FHIR_NS, name);
18196      composeBackboneElements(element);
18197      if (element.hasSequenceLinkIdElement()) {
18198        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
18199      }
18200      if (element.hasDetailSequenceLinkIdElement()) {
18201        composePositiveInt("detailSequenceLinkId", element.getDetailSequenceLinkIdElement());
18202      }
18203      if (element.hasSubdetailSequenceLinkIdElement()) {
18204        composePositiveInt("subdetailSequenceLinkId", element.getSubdetailSequenceLinkIdElement());
18205      }
18206      if (element.hasCode()) {
18207        composeCoding("code", element.getCode());
18208      }
18209      composeElementClose(element);
18210      xml.exit(FHIR_NS, name);
18211    }
18212  }
18213
18214  protected void composeClaimResponseNotesComponent(String name, ClaimResponse.NotesComponent element) throws IOException {
18215    if (element != null) {
18216      composeElementAttributes(element);
18217      xml.enter(FHIR_NS, name);
18218      composeBackboneElements(element);
18219      if (element.hasNumberElement()) {
18220        composePositiveInt("number", element.getNumberElement());
18221      }
18222      if (element.hasType()) {
18223        composeCoding("type", element.getType());
18224      }
18225      if (element.hasTextElement()) {
18226        composeString("text", element.getTextElement());
18227      }
18228      composeElementClose(element);
18229      xml.exit(FHIR_NS, name);
18230    }
18231  }
18232
18233  protected void composeClaimResponseCoverageComponent(String name, ClaimResponse.CoverageComponent element) throws IOException {
18234    if (element != null) {
18235      composeElementAttributes(element);
18236      xml.enter(FHIR_NS, name);
18237      composeBackboneElements(element);
18238      if (element.hasSequenceElement()) {
18239        composePositiveInt("sequence", element.getSequenceElement());
18240      }
18241      if (element.hasFocalElement()) {
18242        composeBoolean("focal", element.getFocalElement());
18243      }
18244      if (element.hasCoverage()) {
18245        composeType("coverage", element.getCoverage());
18246      }      if (element.hasBusinessArrangementElement()) {
18247        composeString("businessArrangement", element.getBusinessArrangementElement());
18248      }
18249      if (element.hasPreAuthRef()) { 
18250        for (StringType e : element.getPreAuthRef()) 
18251          composeString("preAuthRef", e);
18252      }
18253      if (element.hasClaimResponse()) {
18254        composeReference("claimResponse", element.getClaimResponse());
18255      }
18256      composeElementClose(element);
18257      xml.exit(FHIR_NS, name);
18258    }
18259  }
18260
18261  protected void composeClinicalImpression(String name, ClinicalImpression element) throws IOException {
18262    if (element != null) {
18263      composeDomainResourceAttributes(element);
18264      xml.enter(FHIR_NS, name);
18265      composeDomainResourceElements(element);
18266      if (element.hasPatient()) {
18267        composeReference("patient", element.getPatient());
18268      }
18269      if (element.hasAssessor()) {
18270        composeReference("assessor", element.getAssessor());
18271      }
18272      if (element.hasStatusElement())
18273        composeEnumeration("status", element.getStatusElement(), new ClinicalImpression.ClinicalImpressionStatusEnumFactory());
18274      if (element.hasDateElement()) {
18275        composeDateTime("date", element.getDateElement());
18276      }
18277      if (element.hasDescriptionElement()) {
18278        composeString("description", element.getDescriptionElement());
18279      }
18280      if (element.hasPrevious()) {
18281        composeReference("previous", element.getPrevious());
18282      }
18283      if (element.hasProblem()) { 
18284        for (Reference e : element.getProblem()) 
18285          composeReference("problem", e);
18286      }
18287      if (element.hasTrigger()) {
18288        composeType("trigger", element.getTrigger());
18289      }      if (element.hasInvestigations()) { 
18290        for (ClinicalImpression.ClinicalImpressionInvestigationsComponent e : element.getInvestigations()) 
18291          composeClinicalImpressionClinicalImpressionInvestigationsComponent("investigations", e);
18292      }
18293      if (element.hasProtocolElement()) {
18294        composeUri("protocol", element.getProtocolElement());
18295      }
18296      if (element.hasSummaryElement()) {
18297        composeString("summary", element.getSummaryElement());
18298      }
18299      if (element.hasFinding()) { 
18300        for (ClinicalImpression.ClinicalImpressionFindingComponent e : element.getFinding()) 
18301          composeClinicalImpressionClinicalImpressionFindingComponent("finding", e);
18302      }
18303      if (element.hasResolved()) { 
18304        for (CodeableConcept e : element.getResolved()) 
18305          composeCodeableConcept("resolved", e);
18306      }
18307      if (element.hasRuledOut()) { 
18308        for (ClinicalImpression.ClinicalImpressionRuledOutComponent e : element.getRuledOut()) 
18309          composeClinicalImpressionClinicalImpressionRuledOutComponent("ruledOut", e);
18310      }
18311      if (element.hasPrognosisElement()) {
18312        composeString("prognosis", element.getPrognosisElement());
18313      }
18314      if (element.hasPlan()) { 
18315        for (Reference e : element.getPlan()) 
18316          composeReference("plan", e);
18317      }
18318      if (element.hasAction()) { 
18319        for (Reference e : element.getAction()) 
18320          composeReference("action", e);
18321      }
18322      composeElementClose(element);
18323      xml.exit(FHIR_NS, name);
18324    }
18325  }
18326
18327  protected void composeClinicalImpressionClinicalImpressionInvestigationsComponent(String name, ClinicalImpression.ClinicalImpressionInvestigationsComponent element) throws IOException {
18328    if (element != null) {
18329      composeElementAttributes(element);
18330      xml.enter(FHIR_NS, name);
18331      composeBackboneElements(element);
18332      if (element.hasCode()) {
18333        composeCodeableConcept("code", element.getCode());
18334      }
18335      if (element.hasItem()) { 
18336        for (Reference e : element.getItem()) 
18337          composeReference("item", e);
18338      }
18339      composeElementClose(element);
18340      xml.exit(FHIR_NS, name);
18341    }
18342  }
18343
18344  protected void composeClinicalImpressionClinicalImpressionFindingComponent(String name, ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
18345    if (element != null) {
18346      composeElementAttributes(element);
18347      xml.enter(FHIR_NS, name);
18348      composeBackboneElements(element);
18349      if (element.hasItem()) {
18350        composeCodeableConcept("item", element.getItem());
18351      }
18352      if (element.hasCauseElement()) {
18353        composeString("cause", element.getCauseElement());
18354      }
18355      composeElementClose(element);
18356      xml.exit(FHIR_NS, name);
18357    }
18358  }
18359
18360  protected void composeClinicalImpressionClinicalImpressionRuledOutComponent(String name, ClinicalImpression.ClinicalImpressionRuledOutComponent element) throws IOException {
18361    if (element != null) {
18362      composeElementAttributes(element);
18363      xml.enter(FHIR_NS, name);
18364      composeBackboneElements(element);
18365      if (element.hasItem()) {
18366        composeCodeableConcept("item", element.getItem());
18367      }
18368      if (element.hasReasonElement()) {
18369        composeString("reason", element.getReasonElement());
18370      }
18371      composeElementClose(element);
18372      xml.exit(FHIR_NS, name);
18373    }
18374  }
18375
18376  protected void composeCodeSystem(String name, CodeSystem element) throws IOException {
18377    if (element != null) {
18378      composeDomainResourceAttributes(element);
18379      xml.enter(FHIR_NS, name);
18380      composeDomainResourceElements(element);
18381      if (element.hasUrlElement()) {
18382        composeUri("url", element.getUrlElement());
18383      }
18384      if (element.hasIdentifier()) {
18385        composeIdentifier("identifier", element.getIdentifier());
18386      }
18387      if (element.hasVersionElement()) {
18388        composeString("version", element.getVersionElement());
18389      }
18390      if (element.hasNameElement()) {
18391        composeString("name", element.getNameElement());
18392      }
18393      if (element.hasStatusElement())
18394        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
18395      if (element.hasExperimentalElement()) {
18396        composeBoolean("experimental", element.getExperimentalElement());
18397      }
18398      if (element.hasPublisherElement()) {
18399        composeString("publisher", element.getPublisherElement());
18400      }
18401      if (element.hasContact()) { 
18402        for (CodeSystem.CodeSystemContactComponent e : element.getContact()) 
18403          composeCodeSystemCodeSystemContactComponent("contact", e);
18404      }
18405      if (element.hasDateElement()) {
18406        composeDateTime("date", element.getDateElement());
18407      }
18408      if (element.hasDescriptionElement()) {
18409        composeString("description", element.getDescriptionElement());
18410      }
18411      if (element.hasUseContext()) { 
18412        for (CodeableConcept e : element.getUseContext()) 
18413          composeCodeableConcept("useContext", e);
18414      }
18415      if (element.hasRequirementsElement()) {
18416        composeString("requirements", element.getRequirementsElement());
18417      }
18418      if (element.hasCopyrightElement()) {
18419        composeString("copyright", element.getCopyrightElement());
18420      }
18421      if (element.hasCaseSensitiveElement()) {
18422        composeBoolean("caseSensitive", element.getCaseSensitiveElement());
18423      }
18424      if (element.hasValueSetElement()) {
18425        composeUri("valueSet", element.getValueSetElement());
18426      }
18427      if (element.hasCompositionalElement()) {
18428        composeBoolean("compositional", element.getCompositionalElement());
18429      }
18430      if (element.hasVersionNeededElement()) {
18431        composeBoolean("versionNeeded", element.getVersionNeededElement());
18432      }
18433      if (element.hasContentElement())
18434        composeEnumeration("content", element.getContentElement(), new CodeSystem.CodeSystemContentModeEnumFactory());
18435      if (element.hasCountElement()) {
18436        composeUnsignedInt("count", element.getCountElement());
18437      }
18438      if (element.hasFilter()) { 
18439        for (CodeSystem.CodeSystemFilterComponent e : element.getFilter()) 
18440          composeCodeSystemCodeSystemFilterComponent("filter", e);
18441      }
18442      if (element.hasProperty()) { 
18443        for (CodeSystem.CodeSystemPropertyComponent e : element.getProperty()) 
18444          composeCodeSystemCodeSystemPropertyComponent("property", e);
18445      }
18446      if (element.hasConcept()) { 
18447        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
18448          composeCodeSystemConceptDefinitionComponent("concept", e);
18449      }
18450      composeElementClose(element);
18451      xml.exit(FHIR_NS, name);
18452    }
18453  }
18454
18455  protected void composeCodeSystemCodeSystemContactComponent(String name, CodeSystem.CodeSystemContactComponent element) throws IOException {
18456    if (element != null) {
18457      composeElementAttributes(element);
18458      xml.enter(FHIR_NS, name);
18459      composeBackboneElements(element);
18460      if (element.hasNameElement()) {
18461        composeString("name", element.getNameElement());
18462      }
18463      if (element.hasTelecom()) { 
18464        for (ContactPoint e : element.getTelecom()) 
18465          composeContactPoint("telecom", e);
18466      }
18467      composeElementClose(element);
18468      xml.exit(FHIR_NS, name);
18469    }
18470  }
18471
18472  protected void composeCodeSystemCodeSystemFilterComponent(String name, CodeSystem.CodeSystemFilterComponent element) throws IOException {
18473    if (element != null) {
18474      composeElementAttributes(element);
18475      xml.enter(FHIR_NS, name);
18476      composeBackboneElements(element);
18477      if (element.hasCodeElement()) {
18478        composeCode("code", element.getCodeElement());
18479      }
18480      if (element.hasDescriptionElement()) {
18481        composeString("description", element.getDescriptionElement());
18482      }
18483      if (element.hasOperator()) { 
18484        for (CodeType e : element.getOperator()) 
18485          composeCode("operator", e);
18486      }
18487      if (element.hasValueElement()) {
18488        composeString("value", element.getValueElement());
18489      }
18490      composeElementClose(element);
18491      xml.exit(FHIR_NS, name);
18492    }
18493  }
18494
18495  protected void composeCodeSystemCodeSystemPropertyComponent(String name, CodeSystem.CodeSystemPropertyComponent element) throws IOException {
18496    if (element != null) {
18497      composeElementAttributes(element);
18498      xml.enter(FHIR_NS, name);
18499      composeBackboneElements(element);
18500      if (element.hasCodeElement()) {
18501        composeCode("code", element.getCodeElement());
18502      }
18503      if (element.hasDescriptionElement()) {
18504        composeString("description", element.getDescriptionElement());
18505      }
18506      if (element.hasTypeElement())
18507        composeEnumeration("type", element.getTypeElement(), new CodeSystem.PropertyTypeEnumFactory());
18508      composeElementClose(element);
18509      xml.exit(FHIR_NS, name);
18510    }
18511  }
18512
18513  protected void composeCodeSystemConceptDefinitionComponent(String name, CodeSystem.ConceptDefinitionComponent element) throws IOException {
18514    if (element != null) {
18515      composeElementAttributes(element);
18516      xml.enter(FHIR_NS, name);
18517      composeBackboneElements(element);
18518      if (element.hasCodeElement()) {
18519        composeCode("code", element.getCodeElement());
18520      }
18521      if (element.hasDisplayElement()) {
18522        composeString("display", element.getDisplayElement());
18523      }
18524      if (element.hasDefinitionElement()) {
18525        composeString("definition", element.getDefinitionElement());
18526      }
18527      if (element.hasDesignation()) { 
18528        for (CodeSystem.ConceptDefinitionDesignationComponent e : element.getDesignation()) 
18529          composeCodeSystemConceptDefinitionDesignationComponent("designation", e);
18530      }
18531      if (element.hasProperty()) { 
18532        for (CodeSystem.ConceptDefinitionPropertyComponent e : element.getProperty()) 
18533          composeCodeSystemConceptDefinitionPropertyComponent("property", e);
18534      }
18535      if (element.hasConcept()) { 
18536        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
18537          composeCodeSystemConceptDefinitionComponent("concept", e);
18538      }
18539      composeElementClose(element);
18540      xml.exit(FHIR_NS, name);
18541    }
18542  }
18543
18544  protected void composeCodeSystemConceptDefinitionDesignationComponent(String name, CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
18545    if (element != null) {
18546      composeElementAttributes(element);
18547      xml.enter(FHIR_NS, name);
18548      composeBackboneElements(element);
18549      if (element.hasLanguageElement()) {
18550        composeCode("language", element.getLanguageElement());
18551      }
18552      if (element.hasUse()) {
18553        composeCoding("use", element.getUse());
18554      }
18555      if (element.hasValueElement()) {
18556        composeString("value", element.getValueElement());
18557      }
18558      composeElementClose(element);
18559      xml.exit(FHIR_NS, name);
18560    }
18561  }
18562
18563  protected void composeCodeSystemConceptDefinitionPropertyComponent(String name, CodeSystem.ConceptDefinitionPropertyComponent element) throws IOException {
18564    if (element != null) {
18565      composeElementAttributes(element);
18566      xml.enter(FHIR_NS, name);
18567      composeBackboneElements(element);
18568      if (element.hasCodeElement()) {
18569        composeCode("code", element.getCodeElement());
18570      }
18571      if (element.hasValue()) {
18572        composeType("value", element.getValue());
18573      }      composeElementClose(element);
18574      xml.exit(FHIR_NS, name);
18575    }
18576  }
18577
18578  protected void composeCommunication(String name, Communication element) throws IOException {
18579    if (element != null) {
18580      composeDomainResourceAttributes(element);
18581      xml.enter(FHIR_NS, name);
18582      composeDomainResourceElements(element);
18583      if (element.hasIdentifier()) { 
18584        for (Identifier e : element.getIdentifier()) 
18585          composeIdentifier("identifier", e);
18586      }
18587      if (element.hasCategory()) {
18588        composeCodeableConcept("category", element.getCategory());
18589      }
18590      if (element.hasSender()) {
18591        composeReference("sender", element.getSender());
18592      }
18593      if (element.hasRecipient()) { 
18594        for (Reference e : element.getRecipient()) 
18595          composeReference("recipient", e);
18596      }
18597      if (element.hasPayload()) { 
18598        for (Communication.CommunicationPayloadComponent e : element.getPayload()) 
18599          composeCommunicationCommunicationPayloadComponent("payload", e);
18600      }
18601      if (element.hasMedium()) { 
18602        for (CodeableConcept e : element.getMedium()) 
18603          composeCodeableConcept("medium", e);
18604      }
18605      if (element.hasStatusElement())
18606        composeEnumeration("status", element.getStatusElement(), new Communication.CommunicationStatusEnumFactory());
18607      if (element.hasEncounter()) {
18608        composeReference("encounter", element.getEncounter());
18609      }
18610      if (element.hasSentElement()) {
18611        composeDateTime("sent", element.getSentElement());
18612      }
18613      if (element.hasReceivedElement()) {
18614        composeDateTime("received", element.getReceivedElement());
18615      }
18616      if (element.hasReason()) { 
18617        for (CodeableConcept e : element.getReason()) 
18618          composeCodeableConcept("reason", e);
18619      }
18620      if (element.hasSubject()) {
18621        composeReference("subject", element.getSubject());
18622      }
18623      if (element.hasRequestDetail()) {
18624        composeReference("requestDetail", element.getRequestDetail());
18625      }
18626      composeElementClose(element);
18627      xml.exit(FHIR_NS, name);
18628    }
18629  }
18630
18631  protected void composeCommunicationCommunicationPayloadComponent(String name, Communication.CommunicationPayloadComponent element) throws IOException {
18632    if (element != null) {
18633      composeElementAttributes(element);
18634      xml.enter(FHIR_NS, name);
18635      composeBackboneElements(element);
18636      if (element.hasContent()) {
18637        composeType("content", element.getContent());
18638      }      composeElementClose(element);
18639      xml.exit(FHIR_NS, name);
18640    }
18641  }
18642
18643  protected void composeCommunicationRequest(String name, CommunicationRequest element) throws IOException {
18644    if (element != null) {
18645      composeDomainResourceAttributes(element);
18646      xml.enter(FHIR_NS, name);
18647      composeDomainResourceElements(element);
18648      if (element.hasIdentifier()) { 
18649        for (Identifier e : element.getIdentifier()) 
18650          composeIdentifier("identifier", e);
18651      }
18652      if (element.hasCategory()) {
18653        composeCodeableConcept("category", element.getCategory());
18654      }
18655      if (element.hasSender()) {
18656        composeReference("sender", element.getSender());
18657      }
18658      if (element.hasRecipient()) { 
18659        for (Reference e : element.getRecipient()) 
18660          composeReference("recipient", e);
18661      }
18662      if (element.hasPayload()) { 
18663        for (CommunicationRequest.CommunicationRequestPayloadComponent e : element.getPayload()) 
18664          composeCommunicationRequestCommunicationRequestPayloadComponent("payload", e);
18665      }
18666      if (element.hasMedium()) { 
18667        for (CodeableConcept e : element.getMedium()) 
18668          composeCodeableConcept("medium", e);
18669      }
18670      if (element.hasRequester()) {
18671        composeReference("requester", element.getRequester());
18672      }
18673      if (element.hasStatusElement())
18674        composeEnumeration("status", element.getStatusElement(), new CommunicationRequest.CommunicationRequestStatusEnumFactory());
18675      if (element.hasEncounter()) {
18676        composeReference("encounter", element.getEncounter());
18677      }
18678      if (element.hasScheduled()) {
18679        composeType("scheduled", element.getScheduled());
18680      }      if (element.hasReason()) { 
18681        for (CodeableConcept e : element.getReason()) 
18682          composeCodeableConcept("reason", e);
18683      }
18684      if (element.hasRequestedOnElement()) {
18685        composeDateTime("requestedOn", element.getRequestedOnElement());
18686      }
18687      if (element.hasSubject()) {
18688        composeReference("subject", element.getSubject());
18689      }
18690      if (element.hasPriority()) {
18691        composeCodeableConcept("priority", element.getPriority());
18692      }
18693      composeElementClose(element);
18694      xml.exit(FHIR_NS, name);
18695    }
18696  }
18697
18698  protected void composeCommunicationRequestCommunicationRequestPayloadComponent(String name, CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
18699    if (element != null) {
18700      composeElementAttributes(element);
18701      xml.enter(FHIR_NS, name);
18702      composeBackboneElements(element);
18703      if (element.hasContent()) {
18704        composeType("content", element.getContent());
18705      }      composeElementClose(element);
18706      xml.exit(FHIR_NS, name);
18707    }
18708  }
18709
18710  protected void composeCompartmentDefinition(String name, CompartmentDefinition element) throws IOException {
18711    if (element != null) {
18712      composeDomainResourceAttributes(element);
18713      xml.enter(FHIR_NS, name);
18714      composeDomainResourceElements(element);
18715      if (element.hasUrlElement()) {
18716        composeUri("url", element.getUrlElement());
18717      }
18718      if (element.hasNameElement()) {
18719        composeString("name", element.getNameElement());
18720      }
18721      if (element.hasStatusElement())
18722        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
18723      if (element.hasExperimentalElement()) {
18724        composeBoolean("experimental", element.getExperimentalElement());
18725      }
18726      if (element.hasPublisherElement()) {
18727        composeString("publisher", element.getPublisherElement());
18728      }
18729      if (element.hasContact()) { 
18730        for (CompartmentDefinition.CompartmentDefinitionContactComponent e : element.getContact()) 
18731          composeCompartmentDefinitionCompartmentDefinitionContactComponent("contact", e);
18732      }
18733      if (element.hasDateElement()) {
18734        composeDateTime("date", element.getDateElement());
18735      }
18736      if (element.hasDescriptionElement()) {
18737        composeString("description", element.getDescriptionElement());
18738      }
18739      if (element.hasRequirementsElement()) {
18740        composeString("requirements", element.getRequirementsElement());
18741      }
18742      if (element.hasCodeElement())
18743        composeEnumeration("code", element.getCodeElement(), new CompartmentDefinition.CompartmentTypeEnumFactory());
18744      if (element.hasSearchElement()) {
18745        composeBoolean("search", element.getSearchElement());
18746      }
18747      if (element.hasResource()) { 
18748        for (CompartmentDefinition.CompartmentDefinitionResourceComponent e : element.getResource()) 
18749          composeCompartmentDefinitionCompartmentDefinitionResourceComponent("resource", e);
18750      }
18751      composeElementClose(element);
18752      xml.exit(FHIR_NS, name);
18753    }
18754  }
18755
18756  protected void composeCompartmentDefinitionCompartmentDefinitionContactComponent(String name, CompartmentDefinition.CompartmentDefinitionContactComponent element) throws IOException {
18757    if (element != null) {
18758      composeElementAttributes(element);
18759      xml.enter(FHIR_NS, name);
18760      composeBackboneElements(element);
18761      if (element.hasNameElement()) {
18762        composeString("name", element.getNameElement());
18763      }
18764      if (element.hasTelecom()) { 
18765        for (ContactPoint e : element.getTelecom()) 
18766          composeContactPoint("telecom", e);
18767      }
18768      composeElementClose(element);
18769      xml.exit(FHIR_NS, name);
18770    }
18771  }
18772
18773  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponent(String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
18774    if (element != null) {
18775      composeElementAttributes(element);
18776      xml.enter(FHIR_NS, name);
18777      composeBackboneElements(element);
18778      if (element.hasCodeElement()) {
18779        composeCode("code", element.getCodeElement());
18780      }
18781      if (element.hasParam()) { 
18782        for (StringType e : element.getParam()) 
18783          composeString("param", e);
18784      }
18785      if (element.hasDocumentationElement()) {
18786        composeString("documentation", element.getDocumentationElement());
18787      }
18788      composeElementClose(element);
18789      xml.exit(FHIR_NS, name);
18790    }
18791  }
18792
18793  protected void composeComposition(String name, Composition element) throws IOException {
18794    if (element != null) {
18795      composeDomainResourceAttributes(element);
18796      xml.enter(FHIR_NS, name);
18797      composeDomainResourceElements(element);
18798      if (element.hasIdentifier()) {
18799        composeIdentifier("identifier", element.getIdentifier());
18800      }
18801      if (element.hasDateElement()) {
18802        composeDateTime("date", element.getDateElement());
18803      }
18804      if (element.hasType()) {
18805        composeCodeableConcept("type", element.getType());
18806      }
18807      if (element.hasClass_()) {
18808        composeCodeableConcept("class", element.getClass_());
18809      }
18810      if (element.hasTitleElement()) {
18811        composeString("title", element.getTitleElement());
18812      }
18813      if (element.hasStatusElement())
18814        composeEnumeration("status", element.getStatusElement(), new Composition.CompositionStatusEnumFactory());
18815      if (element.hasConfidentialityElement()) {
18816        composeCode("confidentiality", element.getConfidentialityElement());
18817      }
18818      if (element.hasSubject()) {
18819        composeReference("subject", element.getSubject());
18820      }
18821      if (element.hasAuthor()) { 
18822        for (Reference e : element.getAuthor()) 
18823          composeReference("author", e);
18824      }
18825      if (element.hasAttester()) { 
18826        for (Composition.CompositionAttesterComponent e : element.getAttester()) 
18827          composeCompositionCompositionAttesterComponent("attester", e);
18828      }
18829      if (element.hasCustodian()) {
18830        composeReference("custodian", element.getCustodian());
18831      }
18832      if (element.hasEvent()) { 
18833        for (Composition.CompositionEventComponent e : element.getEvent()) 
18834          composeCompositionCompositionEventComponent("event", e);
18835      }
18836      if (element.hasEncounter()) {
18837        composeReference("encounter", element.getEncounter());
18838      }
18839      if (element.hasSection()) { 
18840        for (Composition.SectionComponent e : element.getSection()) 
18841          composeCompositionSectionComponent("section", e);
18842      }
18843      composeElementClose(element);
18844      xml.exit(FHIR_NS, name);
18845    }
18846  }
18847
18848  protected void composeCompositionCompositionAttesterComponent(String name, Composition.CompositionAttesterComponent element) throws IOException {
18849    if (element != null) {
18850      composeElementAttributes(element);
18851      xml.enter(FHIR_NS, name);
18852      composeBackboneElements(element);
18853        if (element.hasMode()) 
18854          for (Enumeration<Composition.CompositionAttestationMode> e : element.getMode()) 
18855            composeEnumeration("mode", e, new Composition.CompositionAttestationModeEnumFactory());
18856      if (element.hasTimeElement()) {
18857        composeDateTime("time", element.getTimeElement());
18858      }
18859      if (element.hasParty()) {
18860        composeReference("party", element.getParty());
18861      }
18862      composeElementClose(element);
18863      xml.exit(FHIR_NS, name);
18864    }
18865  }
18866
18867  protected void composeCompositionCompositionEventComponent(String name, Composition.CompositionEventComponent element) throws IOException {
18868    if (element != null) {
18869      composeElementAttributes(element);
18870      xml.enter(FHIR_NS, name);
18871      composeBackboneElements(element);
18872      if (element.hasCode()) { 
18873        for (CodeableConcept e : element.getCode()) 
18874          composeCodeableConcept("code", e);
18875      }
18876      if (element.hasPeriod()) {
18877        composePeriod("period", element.getPeriod());
18878      }
18879      if (element.hasDetail()) { 
18880        for (Reference e : element.getDetail()) 
18881          composeReference("detail", e);
18882      }
18883      composeElementClose(element);
18884      xml.exit(FHIR_NS, name);
18885    }
18886  }
18887
18888  protected void composeCompositionSectionComponent(String name, Composition.SectionComponent element) throws IOException {
18889    if (element != null) {
18890      composeElementAttributes(element);
18891      xml.enter(FHIR_NS, name);
18892      composeBackboneElements(element);
18893      if (element.hasTitleElement()) {
18894        composeString("title", element.getTitleElement());
18895      }
18896      if (element.hasCode()) {
18897        composeCodeableConcept("code", element.getCode());
18898      }
18899      if (element.hasText()) {
18900        composeNarrative("text", element.getText());
18901      }
18902      if (element.hasModeElement()) {
18903        composeCode("mode", element.getModeElement());
18904      }
18905      if (element.hasOrderedBy()) {
18906        composeCodeableConcept("orderedBy", element.getOrderedBy());
18907      }
18908      if (element.hasEntry()) { 
18909        for (Reference e : element.getEntry()) 
18910          composeReference("entry", e);
18911      }
18912      if (element.hasEmptyReason()) {
18913        composeCodeableConcept("emptyReason", element.getEmptyReason());
18914      }
18915      if (element.hasSection()) { 
18916        for (Composition.SectionComponent e : element.getSection()) 
18917          composeCompositionSectionComponent("section", e);
18918      }
18919      composeElementClose(element);
18920      xml.exit(FHIR_NS, name);
18921    }
18922  }
18923
18924  protected void composeConceptMap(String name, ConceptMap element) throws IOException {
18925    if (element != null) {
18926      composeDomainResourceAttributes(element);
18927      xml.enter(FHIR_NS, name);
18928      composeDomainResourceElements(element);
18929      if (element.hasUrlElement()) {
18930        composeUri("url", element.getUrlElement());
18931      }
18932      if (element.hasIdentifier()) {
18933        composeIdentifier("identifier", element.getIdentifier());
18934      }
18935      if (element.hasVersionElement()) {
18936        composeString("version", element.getVersionElement());
18937      }
18938      if (element.hasNameElement()) {
18939        composeString("name", element.getNameElement());
18940      }
18941      if (element.hasStatusElement())
18942        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
18943      if (element.hasExperimentalElement()) {
18944        composeBoolean("experimental", element.getExperimentalElement());
18945      }
18946      if (element.hasPublisherElement()) {
18947        composeString("publisher", element.getPublisherElement());
18948      }
18949      if (element.hasContact()) { 
18950        for (ConceptMap.ConceptMapContactComponent e : element.getContact()) 
18951          composeConceptMapConceptMapContactComponent("contact", e);
18952      }
18953      if (element.hasDateElement()) {
18954        composeDateTime("date", element.getDateElement());
18955      }
18956      if (element.hasDescriptionElement()) {
18957        composeString("description", element.getDescriptionElement());
18958      }
18959      if (element.hasUseContext()) { 
18960        for (CodeableConcept e : element.getUseContext()) 
18961          composeCodeableConcept("useContext", e);
18962      }
18963      if (element.hasRequirementsElement()) {
18964        composeString("requirements", element.getRequirementsElement());
18965      }
18966      if (element.hasCopyrightElement()) {
18967        composeString("copyright", element.getCopyrightElement());
18968      }
18969      if (element.hasSource()) {
18970        composeType("source", element.getSource());
18971      }      if (element.hasTarget()) {
18972        composeType("target", element.getTarget());
18973      }      if (element.hasElement()) { 
18974        for (ConceptMap.SourceElementComponent e : element.getElement()) 
18975          composeConceptMapSourceElementComponent("element", e);
18976      }
18977      composeElementClose(element);
18978      xml.exit(FHIR_NS, name);
18979    }
18980  }
18981
18982  protected void composeConceptMapConceptMapContactComponent(String name, ConceptMap.ConceptMapContactComponent element) throws IOException {
18983    if (element != null) {
18984      composeElementAttributes(element);
18985      xml.enter(FHIR_NS, name);
18986      composeBackboneElements(element);
18987      if (element.hasNameElement()) {
18988        composeString("name", element.getNameElement());
18989      }
18990      if (element.hasTelecom()) { 
18991        for (ContactPoint e : element.getTelecom()) 
18992          composeContactPoint("telecom", e);
18993      }
18994      composeElementClose(element);
18995      xml.exit(FHIR_NS, name);
18996    }
18997  }
18998
18999  protected void composeConceptMapSourceElementComponent(String name, ConceptMap.SourceElementComponent element) throws IOException {
19000    if (element != null) {
19001      composeElementAttributes(element);
19002      xml.enter(FHIR_NS, name);
19003      composeBackboneElements(element);
19004      if (element.hasSystemElement()) {
19005        composeUri("system", element.getSystemElement());
19006      }
19007      if (element.hasVersionElement()) {
19008        composeString("version", element.getVersionElement());
19009      }
19010      if (element.hasCodeElement()) {
19011        composeCode("code", element.getCodeElement());
19012      }
19013      if (element.hasTarget()) { 
19014        for (ConceptMap.TargetElementComponent e : element.getTarget()) 
19015          composeConceptMapTargetElementComponent("target", e);
19016      }
19017      composeElementClose(element);
19018      xml.exit(FHIR_NS, name);
19019    }
19020  }
19021
19022  protected void composeConceptMapTargetElementComponent(String name, ConceptMap.TargetElementComponent element) throws IOException {
19023    if (element != null) {
19024      composeElementAttributes(element);
19025      xml.enter(FHIR_NS, name);
19026      composeBackboneElements(element);
19027      if (element.hasSystemElement()) {
19028        composeUri("system", element.getSystemElement());
19029      }
19030      if (element.hasVersionElement()) {
19031        composeString("version", element.getVersionElement());
19032      }
19033      if (element.hasCodeElement()) {
19034        composeCode("code", element.getCodeElement());
19035      }
19036      if (element.hasEquivalenceElement())
19037        composeEnumeration("equivalence", element.getEquivalenceElement(), new Enumerations.ConceptMapEquivalenceEnumFactory());
19038      if (element.hasCommentsElement()) {
19039        composeString("comments", element.getCommentsElement());
19040      }
19041      if (element.hasDependsOn()) { 
19042        for (ConceptMap.OtherElementComponent e : element.getDependsOn()) 
19043          composeConceptMapOtherElementComponent("dependsOn", e);
19044      }
19045      if (element.hasProduct()) { 
19046        for (ConceptMap.OtherElementComponent e : element.getProduct()) 
19047          composeConceptMapOtherElementComponent("product", e);
19048      }
19049      composeElementClose(element);
19050      xml.exit(FHIR_NS, name);
19051    }
19052  }
19053
19054  protected void composeConceptMapOtherElementComponent(String name, ConceptMap.OtherElementComponent element) throws IOException {
19055    if (element != null) {
19056      composeElementAttributes(element);
19057      xml.enter(FHIR_NS, name);
19058      composeBackboneElements(element);
19059      if (element.hasElementElement()) {
19060        composeUri("element", element.getElementElement());
19061      }
19062      if (element.hasSystemElement()) {
19063        composeUri("system", element.getSystemElement());
19064      }
19065      if (element.hasCodeElement()) {
19066        composeString("code", element.getCodeElement());
19067      }
19068      composeElementClose(element);
19069      xml.exit(FHIR_NS, name);
19070    }
19071  }
19072
19073  protected void composeCondition(String name, Condition element) throws IOException {
19074    if (element != null) {
19075      composeDomainResourceAttributes(element);
19076      xml.enter(FHIR_NS, name);
19077      composeDomainResourceElements(element);
19078      if (element.hasIdentifier()) { 
19079        for (Identifier e : element.getIdentifier()) 
19080          composeIdentifier("identifier", e);
19081      }
19082      if (element.hasPatient()) {
19083        composeReference("patient", element.getPatient());
19084      }
19085      if (element.hasEncounter()) {
19086        composeReference("encounter", element.getEncounter());
19087      }
19088      if (element.hasAsserter()) {
19089        composeReference("asserter", element.getAsserter());
19090      }
19091      if (element.hasDateRecordedElement()) {
19092        composeDate("dateRecorded", element.getDateRecordedElement());
19093      }
19094      if (element.hasCode()) {
19095        composeCodeableConcept("code", element.getCode());
19096      }
19097      if (element.hasCategory()) {
19098        composeCodeableConcept("category", element.getCategory());
19099      }
19100      if (element.hasClinicalStatusElement()) {
19101        composeCode("clinicalStatus", element.getClinicalStatusElement());
19102      }
19103      if (element.hasVerificationStatusElement())
19104        composeEnumeration("verificationStatus", element.getVerificationStatusElement(), new Condition.ConditionVerificationStatusEnumFactory());
19105      if (element.hasSeverity()) {
19106        composeCodeableConcept("severity", element.getSeverity());
19107      }
19108      if (element.hasOnset()) {
19109        composeType("onset", element.getOnset());
19110      }      if (element.hasAbatement()) {
19111        composeType("abatement", element.getAbatement());
19112      }      if (element.hasStage()) {
19113        composeConditionConditionStageComponent("stage", element.getStage());
19114      }
19115      if (element.hasEvidence()) { 
19116        for (Condition.ConditionEvidenceComponent e : element.getEvidence()) 
19117          composeConditionConditionEvidenceComponent("evidence", e);
19118      }
19119      if (element.hasBodySite()) { 
19120        for (CodeableConcept e : element.getBodySite()) 
19121          composeCodeableConcept("bodySite", e);
19122      }
19123      if (element.hasNotesElement()) {
19124        composeString("notes", element.getNotesElement());
19125      }
19126      composeElementClose(element);
19127      xml.exit(FHIR_NS, name);
19128    }
19129  }
19130
19131  protected void composeConditionConditionStageComponent(String name, Condition.ConditionStageComponent element) throws IOException {
19132    if (element != null) {
19133      composeElementAttributes(element);
19134      xml.enter(FHIR_NS, name);
19135      composeBackboneElements(element);
19136      if (element.hasSummary()) {
19137        composeCodeableConcept("summary", element.getSummary());
19138      }
19139      if (element.hasAssessment()) { 
19140        for (Reference e : element.getAssessment()) 
19141          composeReference("assessment", e);
19142      }
19143      composeElementClose(element);
19144      xml.exit(FHIR_NS, name);
19145    }
19146  }
19147
19148  protected void composeConditionConditionEvidenceComponent(String name, Condition.ConditionEvidenceComponent element) throws IOException {
19149    if (element != null) {
19150      composeElementAttributes(element);
19151      xml.enter(FHIR_NS, name);
19152      composeBackboneElements(element);
19153      if (element.hasCode()) {
19154        composeCodeableConcept("code", element.getCode());
19155      }
19156      if (element.hasDetail()) { 
19157        for (Reference e : element.getDetail()) 
19158          composeReference("detail", e);
19159      }
19160      composeElementClose(element);
19161      xml.exit(FHIR_NS, name);
19162    }
19163  }
19164
19165  protected void composeConformance(String name, Conformance element) throws IOException {
19166    if (element != null) {
19167      composeDomainResourceAttributes(element);
19168      xml.enter(FHIR_NS, name);
19169      composeDomainResourceElements(element);
19170      if (element.hasUrlElement()) {
19171        composeUri("url", element.getUrlElement());
19172      }
19173      if (element.hasVersionElement()) {
19174        composeString("version", element.getVersionElement());
19175      }
19176      if (element.hasNameElement()) {
19177        composeString("name", element.getNameElement());
19178      }
19179      if (element.hasStatusElement())
19180        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
19181      if (element.hasExperimentalElement()) {
19182        composeBoolean("experimental", element.getExperimentalElement());
19183      }
19184      if (element.hasDateElement()) {
19185        composeDateTime("date", element.getDateElement());
19186      }
19187      if (element.hasPublisherElement()) {
19188        composeString("publisher", element.getPublisherElement());
19189      }
19190      if (element.hasContact()) { 
19191        for (Conformance.ConformanceContactComponent e : element.getContact()) 
19192          composeConformanceConformanceContactComponent("contact", e);
19193      }
19194      if (element.hasDescriptionElement()) {
19195        composeString("description", element.getDescriptionElement());
19196      }
19197      if (element.hasUseContext()) { 
19198        for (CodeableConcept e : element.getUseContext()) 
19199          composeCodeableConcept("useContext", e);
19200      }
19201      if (element.hasRequirementsElement()) {
19202        composeString("requirements", element.getRequirementsElement());
19203      }
19204      if (element.hasCopyrightElement()) {
19205        composeString("copyright", element.getCopyrightElement());
19206      }
19207      if (element.hasKindElement())
19208        composeEnumeration("kind", element.getKindElement(), new Conformance.ConformanceStatementKindEnumFactory());
19209      if (element.hasSoftware()) {
19210        composeConformanceConformanceSoftwareComponent("software", element.getSoftware());
19211      }
19212      if (element.hasImplementation()) {
19213        composeConformanceConformanceImplementationComponent("implementation", element.getImplementation());
19214      }
19215      if (element.hasFhirVersionElement()) {
19216        composeId("fhirVersion", element.getFhirVersionElement());
19217      }
19218      if (element.hasAcceptUnknownElement())
19219        composeEnumeration("acceptUnknown", element.getAcceptUnknownElement(), new Conformance.UnknownContentCodeEnumFactory());
19220      if (element.hasFormat()) { 
19221        for (CodeType e : element.getFormat()) 
19222          composeCode("format", e);
19223      }
19224      if (element.hasProfile()) { 
19225        for (Reference e : element.getProfile()) 
19226          composeReference("profile", e);
19227      }
19228      if (element.hasRest()) { 
19229        for (Conformance.ConformanceRestComponent e : element.getRest()) 
19230          composeConformanceConformanceRestComponent("rest", e);
19231      }
19232      if (element.hasMessaging()) { 
19233        for (Conformance.ConformanceMessagingComponent e : element.getMessaging()) 
19234          composeConformanceConformanceMessagingComponent("messaging", e);
19235      }
19236      if (element.hasDocument()) { 
19237        for (Conformance.ConformanceDocumentComponent e : element.getDocument()) 
19238          composeConformanceConformanceDocumentComponent("document", e);
19239      }
19240      composeElementClose(element);
19241      xml.exit(FHIR_NS, name);
19242    }
19243  }
19244
19245  protected void composeConformanceConformanceContactComponent(String name, Conformance.ConformanceContactComponent element) throws IOException {
19246    if (element != null) {
19247      composeElementAttributes(element);
19248      xml.enter(FHIR_NS, name);
19249      composeBackboneElements(element);
19250      if (element.hasNameElement()) {
19251        composeString("name", element.getNameElement());
19252      }
19253      if (element.hasTelecom()) { 
19254        for (ContactPoint e : element.getTelecom()) 
19255          composeContactPoint("telecom", e);
19256      }
19257      composeElementClose(element);
19258      xml.exit(FHIR_NS, name);
19259    }
19260  }
19261
19262  protected void composeConformanceConformanceSoftwareComponent(String name, Conformance.ConformanceSoftwareComponent element) throws IOException {
19263    if (element != null) {
19264      composeElementAttributes(element);
19265      xml.enter(FHIR_NS, name);
19266      composeBackboneElements(element);
19267      if (element.hasNameElement()) {
19268        composeString("name", element.getNameElement());
19269      }
19270      if (element.hasVersionElement()) {
19271        composeString("version", element.getVersionElement());
19272      }
19273      if (element.hasReleaseDateElement()) {
19274        composeDateTime("releaseDate", element.getReleaseDateElement());
19275      }
19276      composeElementClose(element);
19277      xml.exit(FHIR_NS, name);
19278    }
19279  }
19280
19281  protected void composeConformanceConformanceImplementationComponent(String name, Conformance.ConformanceImplementationComponent element) throws IOException {
19282    if (element != null) {
19283      composeElementAttributes(element);
19284      xml.enter(FHIR_NS, name);
19285      composeBackboneElements(element);
19286      if (element.hasDescriptionElement()) {
19287        composeString("description", element.getDescriptionElement());
19288      }
19289      if (element.hasUrlElement()) {
19290        composeUri("url", element.getUrlElement());
19291      }
19292      composeElementClose(element);
19293      xml.exit(FHIR_NS, name);
19294    }
19295  }
19296
19297  protected void composeConformanceConformanceRestComponent(String name, Conformance.ConformanceRestComponent element) throws IOException {
19298    if (element != null) {
19299      composeElementAttributes(element);
19300      xml.enter(FHIR_NS, name);
19301      composeBackboneElements(element);
19302      if (element.hasModeElement())
19303        composeEnumeration("mode", element.getModeElement(), new Conformance.RestfulConformanceModeEnumFactory());
19304      if (element.hasDocumentationElement()) {
19305        composeString("documentation", element.getDocumentationElement());
19306      }
19307      if (element.hasSecurity()) {
19308        composeConformanceConformanceRestSecurityComponent("security", element.getSecurity());
19309      }
19310      if (element.hasResource()) { 
19311        for (Conformance.ConformanceRestResourceComponent e : element.getResource()) 
19312          composeConformanceConformanceRestResourceComponent("resource", e);
19313      }
19314      if (element.hasInteraction()) { 
19315        for (Conformance.SystemInteractionComponent e : element.getInteraction()) 
19316          composeConformanceSystemInteractionComponent("interaction", e);
19317      }
19318      if (element.hasTransactionModeElement())
19319        composeEnumeration("transactionMode", element.getTransactionModeElement(), new Conformance.TransactionModeEnumFactory());
19320      if (element.hasSearchParam()) { 
19321        for (Conformance.ConformanceRestResourceSearchParamComponent e : element.getSearchParam()) 
19322          composeConformanceConformanceRestResourceSearchParamComponent("searchParam", e);
19323      }
19324      if (element.hasOperation()) { 
19325        for (Conformance.ConformanceRestOperationComponent e : element.getOperation()) 
19326          composeConformanceConformanceRestOperationComponent("operation", e);
19327      }
19328      if (element.hasCompartment()) { 
19329        for (UriType e : element.getCompartment()) 
19330          composeUri("compartment", e);
19331      }
19332      composeElementClose(element);
19333      xml.exit(FHIR_NS, name);
19334    }
19335  }
19336
19337  protected void composeConformanceConformanceRestSecurityComponent(String name, Conformance.ConformanceRestSecurityComponent element) throws IOException {
19338    if (element != null) {
19339      composeElementAttributes(element);
19340      xml.enter(FHIR_NS, name);
19341      composeBackboneElements(element);
19342      if (element.hasCorsElement()) {
19343        composeBoolean("cors", element.getCorsElement());
19344      }
19345      if (element.hasService()) { 
19346        for (CodeableConcept e : element.getService()) 
19347          composeCodeableConcept("service", e);
19348      }
19349      if (element.hasDescriptionElement()) {
19350        composeString("description", element.getDescriptionElement());
19351      }
19352      if (element.hasCertificate()) { 
19353        for (Conformance.ConformanceRestSecurityCertificateComponent e : element.getCertificate()) 
19354          composeConformanceConformanceRestSecurityCertificateComponent("certificate", e);
19355      }
19356      composeElementClose(element);
19357      xml.exit(FHIR_NS, name);
19358    }
19359  }
19360
19361  protected void composeConformanceConformanceRestSecurityCertificateComponent(String name, Conformance.ConformanceRestSecurityCertificateComponent element) throws IOException {
19362    if (element != null) {
19363      composeElementAttributes(element);
19364      xml.enter(FHIR_NS, name);
19365      composeBackboneElements(element);
19366      if (element.hasTypeElement()) {
19367        composeCode("type", element.getTypeElement());
19368      }
19369      if (element.hasBlobElement()) {
19370        composeBase64Binary("blob", element.getBlobElement());
19371      }
19372      composeElementClose(element);
19373      xml.exit(FHIR_NS, name);
19374    }
19375  }
19376
19377  protected void composeConformanceConformanceRestResourceComponent(String name, Conformance.ConformanceRestResourceComponent element) throws IOException {
19378    if (element != null) {
19379      composeElementAttributes(element);
19380      xml.enter(FHIR_NS, name);
19381      composeBackboneElements(element);
19382      if (element.hasTypeElement()) {
19383        composeCode("type", element.getTypeElement());
19384      }
19385      if (element.hasProfile()) {
19386        composeReference("profile", element.getProfile());
19387      }
19388      if (element.hasInteraction()) { 
19389        for (Conformance.ResourceInteractionComponent e : element.getInteraction()) 
19390          composeConformanceResourceInteractionComponent("interaction", e);
19391      }
19392      if (element.hasVersioningElement())
19393        composeEnumeration("versioning", element.getVersioningElement(), new Conformance.ResourceVersionPolicyEnumFactory());
19394      if (element.hasReadHistoryElement()) {
19395        composeBoolean("readHistory", element.getReadHistoryElement());
19396      }
19397      if (element.hasUpdateCreateElement()) {
19398        composeBoolean("updateCreate", element.getUpdateCreateElement());
19399      }
19400      if (element.hasConditionalCreateElement()) {
19401        composeBoolean("conditionalCreate", element.getConditionalCreateElement());
19402      }
19403      if (element.hasConditionalUpdateElement()) {
19404        composeBoolean("conditionalUpdate", element.getConditionalUpdateElement());
19405      }
19406      if (element.hasConditionalDeleteElement())
19407        composeEnumeration("conditionalDelete", element.getConditionalDeleteElement(), new Conformance.ConditionalDeleteStatusEnumFactory());
19408      if (element.hasSearchInclude()) { 
19409        for (StringType e : element.getSearchInclude()) 
19410          composeString("searchInclude", e);
19411      }
19412      if (element.hasSearchRevInclude()) { 
19413        for (StringType e : element.getSearchRevInclude()) 
19414          composeString("searchRevInclude", e);
19415      }
19416      if (element.hasSearchParam()) { 
19417        for (Conformance.ConformanceRestResourceSearchParamComponent e : element.getSearchParam()) 
19418          composeConformanceConformanceRestResourceSearchParamComponent("searchParam", e);
19419      }
19420      composeElementClose(element);
19421      xml.exit(FHIR_NS, name);
19422    }
19423  }
19424
19425  protected void composeConformanceResourceInteractionComponent(String name, Conformance.ResourceInteractionComponent element) throws IOException {
19426    if (element != null) {
19427      composeElementAttributes(element);
19428      xml.enter(FHIR_NS, name);
19429      composeBackboneElements(element);
19430      if (element.hasCodeElement())
19431        composeEnumeration("code", element.getCodeElement(), new Conformance.TypeRestfulInteractionEnumFactory());
19432      if (element.hasDocumentationElement()) {
19433        composeString("documentation", element.getDocumentationElement());
19434      }
19435      composeElementClose(element);
19436      xml.exit(FHIR_NS, name);
19437    }
19438  }
19439
19440  protected void composeConformanceConformanceRestResourceSearchParamComponent(String name, Conformance.ConformanceRestResourceSearchParamComponent element) throws IOException {
19441    if (element != null) {
19442      composeElementAttributes(element);
19443      xml.enter(FHIR_NS, name);
19444      composeBackboneElements(element);
19445      if (element.hasNameElement()) {
19446        composeString("name", element.getNameElement());
19447      }
19448      if (element.hasDefinitionElement()) {
19449        composeUri("definition", element.getDefinitionElement());
19450      }
19451      if (element.hasTypeElement())
19452        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
19453      if (element.hasDocumentationElement()) {
19454        composeString("documentation", element.getDocumentationElement());
19455      }
19456      if (element.hasTarget()) { 
19457        for (CodeType e : element.getTarget()) 
19458          composeCode("target", e);
19459      }
19460        if (element.hasModifier()) 
19461          for (Enumeration<Conformance.SearchModifierCode> e : element.getModifier()) 
19462            composeEnumeration("modifier", e, new Conformance.SearchModifierCodeEnumFactory());
19463      if (element.hasChain()) { 
19464        for (StringType e : element.getChain()) 
19465          composeString("chain", e);
19466      }
19467      composeElementClose(element);
19468      xml.exit(FHIR_NS, name);
19469    }
19470  }
19471
19472  protected void composeConformanceSystemInteractionComponent(String name, Conformance.SystemInteractionComponent element) throws IOException {
19473    if (element != null) {
19474      composeElementAttributes(element);
19475      xml.enter(FHIR_NS, name);
19476      composeBackboneElements(element);
19477      if (element.hasCodeElement())
19478        composeEnumeration("code", element.getCodeElement(), new Conformance.SystemRestfulInteractionEnumFactory());
19479      if (element.hasDocumentationElement()) {
19480        composeString("documentation", element.getDocumentationElement());
19481      }
19482      composeElementClose(element);
19483      xml.exit(FHIR_NS, name);
19484    }
19485  }
19486
19487  protected void composeConformanceConformanceRestOperationComponent(String name, Conformance.ConformanceRestOperationComponent element) throws IOException {
19488    if (element != null) {
19489      composeElementAttributes(element);
19490      xml.enter(FHIR_NS, name);
19491      composeBackboneElements(element);
19492      if (element.hasNameElement()) {
19493        composeString("name", element.getNameElement());
19494      }
19495      if (element.hasDefinition()) {
19496        composeReference("definition", element.getDefinition());
19497      }
19498      composeElementClose(element);
19499      xml.exit(FHIR_NS, name);
19500    }
19501  }
19502
19503  protected void composeConformanceConformanceMessagingComponent(String name, Conformance.ConformanceMessagingComponent element) throws IOException {
19504    if (element != null) {
19505      composeElementAttributes(element);
19506      xml.enter(FHIR_NS, name);
19507      composeBackboneElements(element);
19508      if (element.hasEndpoint()) { 
19509        for (Conformance.ConformanceMessagingEndpointComponent e : element.getEndpoint()) 
19510          composeConformanceConformanceMessagingEndpointComponent("endpoint", e);
19511      }
19512      if (element.hasReliableCacheElement()) {
19513        composeUnsignedInt("reliableCache", element.getReliableCacheElement());
19514      }
19515      if (element.hasDocumentationElement()) {
19516        composeString("documentation", element.getDocumentationElement());
19517      }
19518      if (element.hasEvent()) { 
19519        for (Conformance.ConformanceMessagingEventComponent e : element.getEvent()) 
19520          composeConformanceConformanceMessagingEventComponent("event", e);
19521      }
19522      composeElementClose(element);
19523      xml.exit(FHIR_NS, name);
19524    }
19525  }
19526
19527  protected void composeConformanceConformanceMessagingEndpointComponent(String name, Conformance.ConformanceMessagingEndpointComponent element) throws IOException {
19528    if (element != null) {
19529      composeElementAttributes(element);
19530      xml.enter(FHIR_NS, name);
19531      composeBackboneElements(element);
19532      if (element.hasProtocol()) {
19533        composeCoding("protocol", element.getProtocol());
19534      }
19535      if (element.hasAddressElement()) {
19536        composeUri("address", element.getAddressElement());
19537      }
19538      composeElementClose(element);
19539      xml.exit(FHIR_NS, name);
19540    }
19541  }
19542
19543  protected void composeConformanceConformanceMessagingEventComponent(String name, Conformance.ConformanceMessagingEventComponent element) throws IOException {
19544    if (element != null) {
19545      composeElementAttributes(element);
19546      xml.enter(FHIR_NS, name);
19547      composeBackboneElements(element);
19548      if (element.hasCode()) {
19549        composeCoding("code", element.getCode());
19550      }
19551      if (element.hasCategoryElement())
19552        composeEnumeration("category", element.getCategoryElement(), new Conformance.MessageSignificanceCategoryEnumFactory());
19553      if (element.hasModeElement())
19554        composeEnumeration("mode", element.getModeElement(), new Conformance.ConformanceEventModeEnumFactory());
19555      if (element.hasFocusElement()) {
19556        composeCode("focus", element.getFocusElement());
19557      }
19558      if (element.hasRequest()) {
19559        composeReference("request", element.getRequest());
19560      }
19561      if (element.hasResponse()) {
19562        composeReference("response", element.getResponse());
19563      }
19564      if (element.hasDocumentationElement()) {
19565        composeString("documentation", element.getDocumentationElement());
19566      }
19567      composeElementClose(element);
19568      xml.exit(FHIR_NS, name);
19569    }
19570  }
19571
19572  protected void composeConformanceConformanceDocumentComponent(String name, Conformance.ConformanceDocumentComponent element) throws IOException {
19573    if (element != null) {
19574      composeElementAttributes(element);
19575      xml.enter(FHIR_NS, name);
19576      composeBackboneElements(element);
19577      if (element.hasModeElement())
19578        composeEnumeration("mode", element.getModeElement(), new Conformance.DocumentModeEnumFactory());
19579      if (element.hasDocumentationElement()) {
19580        composeString("documentation", element.getDocumentationElement());
19581      }
19582      if (element.hasProfile()) {
19583        composeReference("profile", element.getProfile());
19584      }
19585      composeElementClose(element);
19586      xml.exit(FHIR_NS, name);
19587    }
19588  }
19589
19590  protected void composeContract(String name, Contract element) throws IOException {
19591    if (element != null) {
19592      composeDomainResourceAttributes(element);
19593      xml.enter(FHIR_NS, name);
19594      composeDomainResourceElements(element);
19595      if (element.hasIdentifier()) {
19596        composeIdentifier("identifier", element.getIdentifier());
19597      }
19598      if (element.hasIssuedElement()) {
19599        composeDateTime("issued", element.getIssuedElement());
19600      }
19601      if (element.hasApplies()) {
19602        composePeriod("applies", element.getApplies());
19603      }
19604      if (element.hasSubject()) { 
19605        for (Reference e : element.getSubject()) 
19606          composeReference("subject", e);
19607      }
19608      if (element.hasTopic()) { 
19609        for (Reference e : element.getTopic()) 
19610          composeReference("topic", e);
19611      }
19612      if (element.hasAuthority()) { 
19613        for (Reference e : element.getAuthority()) 
19614          composeReference("authority", e);
19615      }
19616      if (element.hasDomain()) { 
19617        for (Reference e : element.getDomain()) 
19618          composeReference("domain", e);
19619      }
19620      if (element.hasType()) {
19621        composeCodeableConcept("type", element.getType());
19622      }
19623      if (element.hasSubType()) { 
19624        for (CodeableConcept e : element.getSubType()) 
19625          composeCodeableConcept("subType", e);
19626      }
19627      if (element.hasAction()) { 
19628        for (CodeableConcept e : element.getAction()) 
19629          composeCodeableConcept("action", e);
19630      }
19631      if (element.hasActionReason()) { 
19632        for (CodeableConcept e : element.getActionReason()) 
19633          composeCodeableConcept("actionReason", e);
19634      }
19635      if (element.hasAgent()) { 
19636        for (Contract.AgentComponent e : element.getAgent()) 
19637          composeContractAgentComponent("agent", e);
19638      }
19639      if (element.hasSigner()) { 
19640        for (Contract.SignatoryComponent e : element.getSigner()) 
19641          composeContractSignatoryComponent("signer", e);
19642      }
19643      if (element.hasValuedItem()) { 
19644        for (Contract.ValuedItemComponent e : element.getValuedItem()) 
19645          composeContractValuedItemComponent("valuedItem", e);
19646      }
19647      if (element.hasTerm()) { 
19648        for (Contract.TermComponent e : element.getTerm()) 
19649          composeContractTermComponent("term", e);
19650      }
19651      if (element.hasBinding()) {
19652        composeType("binding", element.getBinding());
19653      }      if (element.hasFriendly()) { 
19654        for (Contract.FriendlyLanguageComponent e : element.getFriendly()) 
19655          composeContractFriendlyLanguageComponent("friendly", e);
19656      }
19657      if (element.hasLegal()) { 
19658        for (Contract.LegalLanguageComponent e : element.getLegal()) 
19659          composeContractLegalLanguageComponent("legal", e);
19660      }
19661      if (element.hasRule()) { 
19662        for (Contract.ComputableLanguageComponent e : element.getRule()) 
19663          composeContractComputableLanguageComponent("rule", e);
19664      }
19665      composeElementClose(element);
19666      xml.exit(FHIR_NS, name);
19667    }
19668  }
19669
19670  protected void composeContractAgentComponent(String name, Contract.AgentComponent element) throws IOException {
19671    if (element != null) {
19672      composeElementAttributes(element);
19673      xml.enter(FHIR_NS, name);
19674      composeBackboneElements(element);
19675      if (element.hasActor()) {
19676        composeReference("actor", element.getActor());
19677      }
19678      if (element.hasRole()) { 
19679        for (CodeableConcept e : element.getRole()) 
19680          composeCodeableConcept("role", e);
19681      }
19682      composeElementClose(element);
19683      xml.exit(FHIR_NS, name);
19684    }
19685  }
19686
19687  protected void composeContractSignatoryComponent(String name, Contract.SignatoryComponent element) throws IOException {
19688    if (element != null) {
19689      composeElementAttributes(element);
19690      xml.enter(FHIR_NS, name);
19691      composeBackboneElements(element);
19692      if (element.hasType()) {
19693        composeCoding("type", element.getType());
19694      }
19695      if (element.hasParty()) {
19696        composeReference("party", element.getParty());
19697      }
19698      if (element.hasSignature()) { 
19699        for (Signature e : element.getSignature()) 
19700          composeSignature("signature", e);
19701      }
19702      composeElementClose(element);
19703      xml.exit(FHIR_NS, name);
19704    }
19705  }
19706
19707  protected void composeContractValuedItemComponent(String name, Contract.ValuedItemComponent element) throws IOException {
19708    if (element != null) {
19709      composeElementAttributes(element);
19710      xml.enter(FHIR_NS, name);
19711      composeBackboneElements(element);
19712      if (element.hasEntity()) {
19713        composeType("entity", element.getEntity());
19714      }      if (element.hasIdentifier()) {
19715        composeIdentifier("identifier", element.getIdentifier());
19716      }
19717      if (element.hasEffectiveTimeElement()) {
19718        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
19719      }
19720      if (element.hasQuantity()) {
19721        composeSimpleQuantity("quantity", element.getQuantity());
19722      }
19723      if (element.hasUnitPrice()) {
19724        composeMoney("unitPrice", element.getUnitPrice());
19725      }
19726      if (element.hasFactorElement()) {
19727        composeDecimal("factor", element.getFactorElement());
19728      }
19729      if (element.hasPointsElement()) {
19730        composeDecimal("points", element.getPointsElement());
19731      }
19732      if (element.hasNet()) {
19733        composeMoney("net", element.getNet());
19734      }
19735      composeElementClose(element);
19736      xml.exit(FHIR_NS, name);
19737    }
19738  }
19739
19740  protected void composeContractTermComponent(String name, Contract.TermComponent element) throws IOException {
19741    if (element != null) {
19742      composeElementAttributes(element);
19743      xml.enter(FHIR_NS, name);
19744      composeBackboneElements(element);
19745      if (element.hasIdentifier()) {
19746        composeIdentifier("identifier", element.getIdentifier());
19747      }
19748      if (element.hasIssuedElement()) {
19749        composeDateTime("issued", element.getIssuedElement());
19750      }
19751      if (element.hasApplies()) {
19752        composePeriod("applies", element.getApplies());
19753      }
19754      if (element.hasType()) {
19755        composeCodeableConcept("type", element.getType());
19756      }
19757      if (element.hasSubType()) {
19758        composeCodeableConcept("subType", element.getSubType());
19759      }
19760      if (element.hasTopic()) { 
19761        for (Reference e : element.getTopic()) 
19762          composeReference("topic", e);
19763      }
19764      if (element.hasAction()) { 
19765        for (CodeableConcept e : element.getAction()) 
19766          composeCodeableConcept("action", e);
19767      }
19768      if (element.hasActionReason()) { 
19769        for (CodeableConcept e : element.getActionReason()) 
19770          composeCodeableConcept("actionReason", e);
19771      }
19772      if (element.hasAgent()) { 
19773        for (Contract.TermAgentComponent e : element.getAgent()) 
19774          composeContractTermAgentComponent("agent", e);
19775      }
19776      if (element.hasTextElement()) {
19777        composeString("text", element.getTextElement());
19778      }
19779      if (element.hasValuedItem()) { 
19780        for (Contract.TermValuedItemComponent e : element.getValuedItem()) 
19781          composeContractTermValuedItemComponent("valuedItem", e);
19782      }
19783      if (element.hasGroup()) { 
19784        for (Contract.TermComponent e : element.getGroup()) 
19785          composeContractTermComponent("group", e);
19786      }
19787      composeElementClose(element);
19788      xml.exit(FHIR_NS, name);
19789    }
19790  }
19791
19792  protected void composeContractTermAgentComponent(String name, Contract.TermAgentComponent element) throws IOException {
19793    if (element != null) {
19794      composeElementAttributes(element);
19795      xml.enter(FHIR_NS, name);
19796      composeBackboneElements(element);
19797      if (element.hasActor()) {
19798        composeReference("actor", element.getActor());
19799      }
19800      if (element.hasRole()) { 
19801        for (CodeableConcept e : element.getRole()) 
19802          composeCodeableConcept("role", e);
19803      }
19804      composeElementClose(element);
19805      xml.exit(FHIR_NS, name);
19806    }
19807  }
19808
19809  protected void composeContractTermValuedItemComponent(String name, Contract.TermValuedItemComponent element) throws IOException {
19810    if (element != null) {
19811      composeElementAttributes(element);
19812      xml.enter(FHIR_NS, name);
19813      composeBackboneElements(element);
19814      if (element.hasEntity()) {
19815        composeType("entity", element.getEntity());
19816      }      if (element.hasIdentifier()) {
19817        composeIdentifier("identifier", element.getIdentifier());
19818      }
19819      if (element.hasEffectiveTimeElement()) {
19820        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
19821      }
19822      if (element.hasQuantity()) {
19823        composeSimpleQuantity("quantity", element.getQuantity());
19824      }
19825      if (element.hasUnitPrice()) {
19826        composeMoney("unitPrice", element.getUnitPrice());
19827      }
19828      if (element.hasFactorElement()) {
19829        composeDecimal("factor", element.getFactorElement());
19830      }
19831      if (element.hasPointsElement()) {
19832        composeDecimal("points", element.getPointsElement());
19833      }
19834      if (element.hasNet()) {
19835        composeMoney("net", element.getNet());
19836      }
19837      composeElementClose(element);
19838      xml.exit(FHIR_NS, name);
19839    }
19840  }
19841
19842  protected void composeContractFriendlyLanguageComponent(String name, Contract.FriendlyLanguageComponent element) throws IOException {
19843    if (element != null) {
19844      composeElementAttributes(element);
19845      xml.enter(FHIR_NS, name);
19846      composeBackboneElements(element);
19847      if (element.hasContent()) {
19848        composeType("content", element.getContent());
19849      }      composeElementClose(element);
19850      xml.exit(FHIR_NS, name);
19851    }
19852  }
19853
19854  protected void composeContractLegalLanguageComponent(String name, Contract.LegalLanguageComponent element) throws IOException {
19855    if (element != null) {
19856      composeElementAttributes(element);
19857      xml.enter(FHIR_NS, name);
19858      composeBackboneElements(element);
19859      if (element.hasContent()) {
19860        composeType("content", element.getContent());
19861      }      composeElementClose(element);
19862      xml.exit(FHIR_NS, name);
19863    }
19864  }
19865
19866  protected void composeContractComputableLanguageComponent(String name, Contract.ComputableLanguageComponent element) throws IOException {
19867    if (element != null) {
19868      composeElementAttributes(element);
19869      xml.enter(FHIR_NS, name);
19870      composeBackboneElements(element);
19871      if (element.hasContent()) {
19872        composeType("content", element.getContent());
19873      }      composeElementClose(element);
19874      xml.exit(FHIR_NS, name);
19875    }
19876  }
19877
19878  protected void composeCoverage(String name, Coverage element) throws IOException {
19879    if (element != null) {
19880      composeDomainResourceAttributes(element);
19881      xml.enter(FHIR_NS, name);
19882      composeDomainResourceElements(element);
19883      if (element.hasIssuer()) {
19884        composeType("issuer", element.getIssuer());
19885      }      if (element.hasBinElement()) {
19886        composeString("bin", element.getBinElement());
19887      }
19888      if (element.hasPeriod()) {
19889        composePeriod("period", element.getPeriod());
19890      }
19891      if (element.hasType()) {
19892        composeCoding("type", element.getType());
19893      }
19894      if (element.hasPlanholder()) {
19895        composeType("planholder", element.getPlanholder());
19896      }      if (element.hasBeneficiary()) {
19897        composeType("beneficiary", element.getBeneficiary());
19898      }      if (element.hasRelationship()) {
19899        composeCoding("relationship", element.getRelationship());
19900      }
19901      if (element.hasIdentifier()) { 
19902        for (Identifier e : element.getIdentifier()) 
19903          composeIdentifier("identifier", e);
19904      }
19905      if (element.hasGroupElement()) {
19906        composeString("group", element.getGroupElement());
19907      }
19908      if (element.hasPlanElement()) {
19909        composeString("plan", element.getPlanElement());
19910      }
19911      if (element.hasSubPlanElement()) {
19912        composeString("subPlan", element.getSubPlanElement());
19913      }
19914      if (element.hasDependentElement()) {
19915        composePositiveInt("dependent", element.getDependentElement());
19916      }
19917      if (element.hasSequenceElement()) {
19918        composePositiveInt("sequence", element.getSequenceElement());
19919      }
19920      if (element.hasException()) { 
19921        for (Coding e : element.getException()) 
19922          composeCoding("exception", e);
19923      }
19924      if (element.hasSchoolElement()) {
19925        composeString("school", element.getSchoolElement());
19926      }
19927      if (element.hasNetworkElement()) {
19928        composeString("network", element.getNetworkElement());
19929      }
19930      if (element.hasContract()) { 
19931        for (Reference e : element.getContract()) 
19932          composeReference("contract", e);
19933      }
19934      composeElementClose(element);
19935      xml.exit(FHIR_NS, name);
19936    }
19937  }
19938
19939  protected void composeDataElement(String name, DataElement element) throws IOException {
19940    if (element != null) {
19941      composeDomainResourceAttributes(element);
19942      xml.enter(FHIR_NS, name);
19943      composeDomainResourceElements(element);
19944      if (element.hasUrlElement()) {
19945        composeUri("url", element.getUrlElement());
19946      }
19947      if (element.hasIdentifier()) { 
19948        for (Identifier e : element.getIdentifier()) 
19949          composeIdentifier("identifier", e);
19950      }
19951      if (element.hasVersionElement()) {
19952        composeString("version", element.getVersionElement());
19953      }
19954      if (element.hasStatusElement())
19955        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
19956      if (element.hasExperimentalElement()) {
19957        composeBoolean("experimental", element.getExperimentalElement());
19958      }
19959      if (element.hasPublisherElement()) {
19960        composeString("publisher", element.getPublisherElement());
19961      }
19962      if (element.hasDateElement()) {
19963        composeDateTime("date", element.getDateElement());
19964      }
19965      if (element.hasNameElement()) {
19966        composeString("name", element.getNameElement());
19967      }
19968      if (element.hasContact()) { 
19969        for (DataElement.DataElementContactComponent e : element.getContact()) 
19970          composeDataElementDataElementContactComponent("contact", e);
19971      }
19972      if (element.hasUseContext()) { 
19973        for (CodeableConcept e : element.getUseContext()) 
19974          composeCodeableConcept("useContext", e);
19975      }
19976      if (element.hasCopyrightElement()) {
19977        composeString("copyright", element.getCopyrightElement());
19978      }
19979      if (element.hasStringencyElement())
19980        composeEnumeration("stringency", element.getStringencyElement(), new DataElement.DataElementStringencyEnumFactory());
19981      if (element.hasMapping()) { 
19982        for (DataElement.DataElementMappingComponent e : element.getMapping()) 
19983          composeDataElementDataElementMappingComponent("mapping", e);
19984      }
19985      if (element.hasElement()) { 
19986        for (ElementDefinition e : element.getElement()) 
19987          composeElementDefinition("element", e);
19988      }
19989      composeElementClose(element);
19990      xml.exit(FHIR_NS, name);
19991    }
19992  }
19993
19994  protected void composeDataElementDataElementContactComponent(String name, DataElement.DataElementContactComponent element) throws IOException {
19995    if (element != null) {
19996      composeElementAttributes(element);
19997      xml.enter(FHIR_NS, name);
19998      composeBackboneElements(element);
19999      if (element.hasNameElement()) {
20000        composeString("name", element.getNameElement());
20001      }
20002      if (element.hasTelecom()) { 
20003        for (ContactPoint e : element.getTelecom()) 
20004          composeContactPoint("telecom", e);
20005      }
20006      composeElementClose(element);
20007      xml.exit(FHIR_NS, name);
20008    }
20009  }
20010
20011  protected void composeDataElementDataElementMappingComponent(String name, DataElement.DataElementMappingComponent element) throws IOException {
20012    if (element != null) {
20013      composeElementAttributes(element);
20014      xml.enter(FHIR_NS, name);
20015      composeBackboneElements(element);
20016      if (element.hasIdentityElement()) {
20017        composeId("identity", element.getIdentityElement());
20018      }
20019      if (element.hasUriElement()) {
20020        composeUri("uri", element.getUriElement());
20021      }
20022      if (element.hasNameElement()) {
20023        composeString("name", element.getNameElement());
20024      }
20025      if (element.hasCommentElement()) {
20026        composeString("comment", element.getCommentElement());
20027      }
20028      composeElementClose(element);
20029      xml.exit(FHIR_NS, name);
20030    }
20031  }
20032
20033  protected void composeDecisionSupportRule(String name, DecisionSupportRule element) throws IOException {
20034    if (element != null) {
20035      composeDomainResourceAttributes(element);
20036      xml.enter(FHIR_NS, name);
20037      composeDomainResourceElements(element);
20038      if (element.hasModuleMetadata()) {
20039        composeModuleMetadata("moduleMetadata", element.getModuleMetadata());
20040      }
20041      if (element.hasLibrary()) { 
20042        for (Reference e : element.getLibrary()) 
20043          composeReference("library", e);
20044      }
20045      if (element.hasTrigger()) { 
20046        for (TriggerDefinition e : element.getTrigger()) 
20047          composeTriggerDefinition("trigger", e);
20048      }
20049      if (element.hasConditionElement()) {
20050        composeString("condition", element.getConditionElement());
20051      }
20052      if (element.hasAction()) { 
20053        for (ActionDefinition e : element.getAction()) 
20054          composeActionDefinition("action", e);
20055      }
20056      composeElementClose(element);
20057      xml.exit(FHIR_NS, name);
20058    }
20059  }
20060
20061  protected void composeDecisionSupportServiceModule(String name, DecisionSupportServiceModule element) throws IOException {
20062    if (element != null) {
20063      composeDomainResourceAttributes(element);
20064      xml.enter(FHIR_NS, name);
20065      composeDomainResourceElements(element);
20066      if (element.hasModuleMetadata()) {
20067        composeModuleMetadata("moduleMetadata", element.getModuleMetadata());
20068      }
20069      if (element.hasTrigger()) { 
20070        for (TriggerDefinition e : element.getTrigger()) 
20071          composeTriggerDefinition("trigger", e);
20072      }
20073      if (element.hasParameter()) { 
20074        for (ParameterDefinition e : element.getParameter()) 
20075          composeParameterDefinition("parameter", e);
20076      }
20077      if (element.hasDataRequirement()) { 
20078        for (DataRequirement e : element.getDataRequirement()) 
20079          composeDataRequirement("dataRequirement", e);
20080      }
20081      composeElementClose(element);
20082      xml.exit(FHIR_NS, name);
20083    }
20084  }
20085
20086  protected void composeDetectedIssue(String name, DetectedIssue element) throws IOException {
20087    if (element != null) {
20088      composeDomainResourceAttributes(element);
20089      xml.enter(FHIR_NS, name);
20090      composeDomainResourceElements(element);
20091      if (element.hasPatient()) {
20092        composeReference("patient", element.getPatient());
20093      }
20094      if (element.hasCategory()) {
20095        composeCodeableConcept("category", element.getCategory());
20096      }
20097      if (element.hasSeverityElement())
20098        composeEnumeration("severity", element.getSeverityElement(), new DetectedIssue.DetectedIssueSeverityEnumFactory());
20099      if (element.hasImplicated()) { 
20100        for (Reference e : element.getImplicated()) 
20101          composeReference("implicated", e);
20102      }
20103      if (element.hasDetailElement()) {
20104        composeString("detail", element.getDetailElement());
20105      }
20106      if (element.hasDateElement()) {
20107        composeDateTime("date", element.getDateElement());
20108      }
20109      if (element.hasAuthor()) {
20110        composeReference("author", element.getAuthor());
20111      }
20112      if (element.hasIdentifier()) {
20113        composeIdentifier("identifier", element.getIdentifier());
20114      }
20115      if (element.hasReferenceElement()) {
20116        composeUri("reference", element.getReferenceElement());
20117      }
20118      if (element.hasMitigation()) { 
20119        for (DetectedIssue.DetectedIssueMitigationComponent e : element.getMitigation()) 
20120          composeDetectedIssueDetectedIssueMitigationComponent("mitigation", e);
20121      }
20122      composeElementClose(element);
20123      xml.exit(FHIR_NS, name);
20124    }
20125  }
20126
20127  protected void composeDetectedIssueDetectedIssueMitigationComponent(String name, DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
20128    if (element != null) {
20129      composeElementAttributes(element);
20130      xml.enter(FHIR_NS, name);
20131      composeBackboneElements(element);
20132      if (element.hasAction()) {
20133        composeCodeableConcept("action", element.getAction());
20134      }
20135      if (element.hasDateElement()) {
20136        composeDateTime("date", element.getDateElement());
20137      }
20138      if (element.hasAuthor()) {
20139        composeReference("author", element.getAuthor());
20140      }
20141      composeElementClose(element);
20142      xml.exit(FHIR_NS, name);
20143    }
20144  }
20145
20146  protected void composeDevice(String name, Device element) throws IOException {
20147    if (element != null) {
20148      composeDomainResourceAttributes(element);
20149      xml.enter(FHIR_NS, name);
20150      composeDomainResourceElements(element);
20151      if (element.hasIdentifier()) { 
20152        for (Identifier e : element.getIdentifier()) 
20153          composeIdentifier("identifier", e);
20154      }
20155      if (element.hasUdiCarrier()) {
20156        composeIdentifier("udiCarrier", element.getUdiCarrier());
20157      }
20158      if (element.hasStatusElement())
20159        composeEnumeration("status", element.getStatusElement(), new Device.DeviceStatusEnumFactory());
20160      if (element.hasType()) {
20161        composeCodeableConcept("type", element.getType());
20162      }
20163      if (element.hasLotNumberElement()) {
20164        composeString("lotNumber", element.getLotNumberElement());
20165      }
20166      if (element.hasManufacturerElement()) {
20167        composeString("manufacturer", element.getManufacturerElement());
20168      }
20169      if (element.hasManufactureDateElement()) {
20170        composeDateTime("manufactureDate", element.getManufactureDateElement());
20171      }
20172      if (element.hasExpirationDateElement()) {
20173        composeDateTime("expirationDate", element.getExpirationDateElement());
20174      }
20175      if (element.hasModelElement()) {
20176        composeString("model", element.getModelElement());
20177      }
20178      if (element.hasVersionElement()) {
20179        composeString("version", element.getVersionElement());
20180      }
20181      if (element.hasPatient()) {
20182        composeReference("patient", element.getPatient());
20183      }
20184      if (element.hasOwner()) {
20185        composeReference("owner", element.getOwner());
20186      }
20187      if (element.hasContact()) { 
20188        for (ContactPoint e : element.getContact()) 
20189          composeContactPoint("contact", e);
20190      }
20191      if (element.hasLocation()) {
20192        composeReference("location", element.getLocation());
20193      }
20194      if (element.hasUrlElement()) {
20195        composeUri("url", element.getUrlElement());
20196      }
20197      if (element.hasNote()) { 
20198        for (Annotation e : element.getNote()) 
20199          composeAnnotation("note", e);
20200      }
20201      composeElementClose(element);
20202      xml.exit(FHIR_NS, name);
20203    }
20204  }
20205
20206  protected void composeDeviceComponent(String name, DeviceComponent element) throws IOException {
20207    if (element != null) {
20208      composeDomainResourceAttributes(element);
20209      xml.enter(FHIR_NS, name);
20210      composeDomainResourceElements(element);
20211      if (element.hasType()) {
20212        composeCodeableConcept("type", element.getType());
20213      }
20214      if (element.hasIdentifier()) {
20215        composeIdentifier("identifier", element.getIdentifier());
20216      }
20217      if (element.hasLastSystemChangeElement()) {
20218        composeInstant("lastSystemChange", element.getLastSystemChangeElement());
20219      }
20220      if (element.hasSource()) {
20221        composeReference("source", element.getSource());
20222      }
20223      if (element.hasParent()) {
20224        composeReference("parent", element.getParent());
20225      }
20226      if (element.hasOperationalStatus()) { 
20227        for (CodeableConcept e : element.getOperationalStatus()) 
20228          composeCodeableConcept("operationalStatus", e);
20229      }
20230      if (element.hasParameterGroup()) {
20231        composeCodeableConcept("parameterGroup", element.getParameterGroup());
20232      }
20233      if (element.hasMeasurementPrincipleElement())
20234        composeEnumeration("measurementPrinciple", element.getMeasurementPrincipleElement(), new DeviceComponent.MeasmntPrincipleEnumFactory());
20235      if (element.hasProductionSpecification()) { 
20236        for (DeviceComponent.DeviceComponentProductionSpecificationComponent e : element.getProductionSpecification()) 
20237          composeDeviceComponentDeviceComponentProductionSpecificationComponent("productionSpecification", e);
20238      }
20239      if (element.hasLanguageCode()) {
20240        composeCodeableConcept("languageCode", element.getLanguageCode());
20241      }
20242      composeElementClose(element);
20243      xml.exit(FHIR_NS, name);
20244    }
20245  }
20246
20247  protected void composeDeviceComponentDeviceComponentProductionSpecificationComponent(String name, DeviceComponent.DeviceComponentProductionSpecificationComponent element) throws IOException {
20248    if (element != null) {
20249      composeElementAttributes(element);
20250      xml.enter(FHIR_NS, name);
20251      composeBackboneElements(element);
20252      if (element.hasSpecType()) {
20253        composeCodeableConcept("specType", element.getSpecType());
20254      }
20255      if (element.hasComponentId()) {
20256        composeIdentifier("componentId", element.getComponentId());
20257      }
20258      if (element.hasProductionSpecElement()) {
20259        composeString("productionSpec", element.getProductionSpecElement());
20260      }
20261      composeElementClose(element);
20262      xml.exit(FHIR_NS, name);
20263    }
20264  }
20265
20266  protected void composeDeviceMetric(String name, DeviceMetric element) throws IOException {
20267    if (element != null) {
20268      composeDomainResourceAttributes(element);
20269      xml.enter(FHIR_NS, name);
20270      composeDomainResourceElements(element);
20271      if (element.hasType()) {
20272        composeCodeableConcept("type", element.getType());
20273      }
20274      if (element.hasIdentifier()) {
20275        composeIdentifier("identifier", element.getIdentifier());
20276      }
20277      if (element.hasUnit()) {
20278        composeCodeableConcept("unit", element.getUnit());
20279      }
20280      if (element.hasSource()) {
20281        composeReference("source", element.getSource());
20282      }
20283      if (element.hasParent()) {
20284        composeReference("parent", element.getParent());
20285      }
20286      if (element.hasOperationalStatusElement())
20287        composeEnumeration("operationalStatus", element.getOperationalStatusElement(), new DeviceMetric.DeviceMetricOperationalStatusEnumFactory());
20288      if (element.hasColorElement())
20289        composeEnumeration("color", element.getColorElement(), new DeviceMetric.DeviceMetricColorEnumFactory());
20290      if (element.hasCategoryElement())
20291        composeEnumeration("category", element.getCategoryElement(), new DeviceMetric.DeviceMetricCategoryEnumFactory());
20292      if (element.hasMeasurementPeriod()) {
20293        composeTiming("measurementPeriod", element.getMeasurementPeriod());
20294      }
20295      if (element.hasCalibration()) { 
20296        for (DeviceMetric.DeviceMetricCalibrationComponent e : element.getCalibration()) 
20297          composeDeviceMetricDeviceMetricCalibrationComponent("calibration", e);
20298      }
20299      composeElementClose(element);
20300      xml.exit(FHIR_NS, name);
20301    }
20302  }
20303
20304  protected void composeDeviceMetricDeviceMetricCalibrationComponent(String name, DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
20305    if (element != null) {
20306      composeElementAttributes(element);
20307      xml.enter(FHIR_NS, name);
20308      composeBackboneElements(element);
20309      if (element.hasTypeElement())
20310        composeEnumeration("type", element.getTypeElement(), new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory());
20311      if (element.hasStateElement())
20312        composeEnumeration("state", element.getStateElement(), new DeviceMetric.DeviceMetricCalibrationStateEnumFactory());
20313      if (element.hasTimeElement()) {
20314        composeInstant("time", element.getTimeElement());
20315      }
20316      composeElementClose(element);
20317      xml.exit(FHIR_NS, name);
20318    }
20319  }
20320
20321  protected void composeDeviceUseRequest(String name, DeviceUseRequest element) throws IOException {
20322    if (element != null) {
20323      composeDomainResourceAttributes(element);
20324      xml.enter(FHIR_NS, name);
20325      composeDomainResourceElements(element);
20326      if (element.hasBodySite()) {
20327        composeType("bodySite", element.getBodySite());
20328      }      if (element.hasStatusElement())
20329        composeEnumeration("status", element.getStatusElement(), new DeviceUseRequest.DeviceUseRequestStatusEnumFactory());
20330      if (element.hasDevice()) {
20331        composeReference("device", element.getDevice());
20332      }
20333      if (element.hasEncounter()) {
20334        composeReference("encounter", element.getEncounter());
20335      }
20336      if (element.hasIdentifier()) { 
20337        for (Identifier e : element.getIdentifier()) 
20338          composeIdentifier("identifier", e);
20339      }
20340      if (element.hasIndication()) { 
20341        for (CodeableConcept e : element.getIndication()) 
20342          composeCodeableConcept("indication", e);
20343      }
20344      if (element.hasNotes()) { 
20345        for (StringType e : element.getNotes()) 
20346          composeString("notes", e);
20347      }
20348      if (element.hasPrnReason()) { 
20349        for (CodeableConcept e : element.getPrnReason()) 
20350          composeCodeableConcept("prnReason", e);
20351      }
20352      if (element.hasOrderedOnElement()) {
20353        composeDateTime("orderedOn", element.getOrderedOnElement());
20354      }
20355      if (element.hasRecordedOnElement()) {
20356        composeDateTime("recordedOn", element.getRecordedOnElement());
20357      }
20358      if (element.hasSubject()) {
20359        composeReference("subject", element.getSubject());
20360      }
20361      if (element.hasTiming()) {
20362        composeType("timing", element.getTiming());
20363      }      if (element.hasPriorityElement())
20364        composeEnumeration("priority", element.getPriorityElement(), new DeviceUseRequest.DeviceUseRequestPriorityEnumFactory());
20365      composeElementClose(element);
20366      xml.exit(FHIR_NS, name);
20367    }
20368  }
20369
20370  protected void composeDeviceUseStatement(String name, DeviceUseStatement element) throws IOException {
20371    if (element != null) {
20372      composeDomainResourceAttributes(element);
20373      xml.enter(FHIR_NS, name);
20374      composeDomainResourceElements(element);
20375      if (element.hasBodySite()) {
20376        composeType("bodySite", element.getBodySite());
20377      }      if (element.hasWhenUsed()) {
20378        composePeriod("whenUsed", element.getWhenUsed());
20379      }
20380      if (element.hasDevice()) {
20381        composeReference("device", element.getDevice());
20382      }
20383      if (element.hasIdentifier()) { 
20384        for (Identifier e : element.getIdentifier()) 
20385          composeIdentifier("identifier", e);
20386      }
20387      if (element.hasIndication()) { 
20388        for (CodeableConcept e : element.getIndication()) 
20389          composeCodeableConcept("indication", e);
20390      }
20391      if (element.hasNotes()) { 
20392        for (StringType e : element.getNotes()) 
20393          composeString("notes", e);
20394      }
20395      if (element.hasRecordedOnElement()) {
20396        composeDateTime("recordedOn", element.getRecordedOnElement());
20397      }
20398      if (element.hasSubject()) {
20399        composeReference("subject", element.getSubject());
20400      }
20401      if (element.hasTiming()) {
20402        composeType("timing", element.getTiming());
20403      }      composeElementClose(element);
20404      xml.exit(FHIR_NS, name);
20405    }
20406  }
20407
20408  protected void composeDiagnosticOrder(String name, DiagnosticOrder element) throws IOException {
20409    if (element != null) {
20410      composeDomainResourceAttributes(element);
20411      xml.enter(FHIR_NS, name);
20412      composeDomainResourceElements(element);
20413      if (element.hasIdentifier()) { 
20414        for (Identifier e : element.getIdentifier()) 
20415          composeIdentifier("identifier", e);
20416      }
20417      if (element.hasStatusElement())
20418        composeEnumeration("status", element.getStatusElement(), new DiagnosticOrder.DiagnosticOrderStatusEnumFactory());
20419      if (element.hasPriorityElement())
20420        composeEnumeration("priority", element.getPriorityElement(), new DiagnosticOrder.DiagnosticOrderPriorityEnumFactory());
20421      if (element.hasSubject()) {
20422        composeReference("subject", element.getSubject());
20423      }
20424      if (element.hasEncounter()) {
20425        composeReference("encounter", element.getEncounter());
20426      }
20427      if (element.hasOrderer()) {
20428        composeReference("orderer", element.getOrderer());
20429      }
20430      if (element.hasReason()) { 
20431        for (CodeableConcept e : element.getReason()) 
20432          composeCodeableConcept("reason", e);
20433      }
20434      if (element.hasSupportingInformation()) { 
20435        for (Reference e : element.getSupportingInformation()) 
20436          composeReference("supportingInformation", e);
20437      }
20438      if (element.hasSpecimen()) { 
20439        for (Reference e : element.getSpecimen()) 
20440          composeReference("specimen", e);
20441      }
20442      if (element.hasEvent()) { 
20443        for (DiagnosticOrder.DiagnosticOrderEventComponent e : element.getEvent()) 
20444          composeDiagnosticOrderDiagnosticOrderEventComponent("event", e);
20445      }
20446      if (element.hasItem()) { 
20447        for (DiagnosticOrder.DiagnosticOrderItemComponent e : element.getItem()) 
20448          composeDiagnosticOrderDiagnosticOrderItemComponent("item", e);
20449      }
20450      if (element.hasNote()) { 
20451        for (Annotation e : element.getNote()) 
20452          composeAnnotation("note", e);
20453      }
20454      composeElementClose(element);
20455      xml.exit(FHIR_NS, name);
20456    }
20457  }
20458
20459  protected void composeDiagnosticOrderDiagnosticOrderEventComponent(String name, DiagnosticOrder.DiagnosticOrderEventComponent element) throws IOException {
20460    if (element != null) {
20461      composeElementAttributes(element);
20462      xml.enter(FHIR_NS, name);
20463      composeBackboneElements(element);
20464      if (element.hasStatusElement())
20465        composeEnumeration("status", element.getStatusElement(), new DiagnosticOrder.DiagnosticOrderStatusEnumFactory());
20466      if (element.hasDescription()) {
20467        composeCodeableConcept("description", element.getDescription());
20468      }
20469      if (element.hasDateTimeElement()) {
20470        composeDateTime("dateTime", element.getDateTimeElement());
20471      }
20472      if (element.hasActor()) {
20473        composeReference("actor", element.getActor());
20474      }
20475      composeElementClose(element);
20476      xml.exit(FHIR_NS, name);
20477    }
20478  }
20479
20480  protected void composeDiagnosticOrderDiagnosticOrderItemComponent(String name, DiagnosticOrder.DiagnosticOrderItemComponent element) throws IOException {
20481    if (element != null) {
20482      composeElementAttributes(element);
20483      xml.enter(FHIR_NS, name);
20484      composeBackboneElements(element);
20485      if (element.hasCode()) {
20486        composeCodeableConcept("code", element.getCode());
20487      }
20488      if (element.hasSpecimen()) { 
20489        for (Reference e : element.getSpecimen()) 
20490          composeReference("specimen", e);
20491      }
20492      if (element.hasBodySite()) {
20493        composeCodeableConcept("bodySite", element.getBodySite());
20494      }
20495      if (element.hasStatusElement())
20496        composeEnumeration("status", element.getStatusElement(), new DiagnosticOrder.DiagnosticOrderStatusEnumFactory());
20497      if (element.hasEvent()) { 
20498        for (DiagnosticOrder.DiagnosticOrderEventComponent e : element.getEvent()) 
20499          composeDiagnosticOrderDiagnosticOrderEventComponent("event", e);
20500      }
20501      composeElementClose(element);
20502      xml.exit(FHIR_NS, name);
20503    }
20504  }
20505
20506  protected void composeDiagnosticReport(String name, DiagnosticReport element) throws IOException {
20507    if (element != null) {
20508      composeDomainResourceAttributes(element);
20509      xml.enter(FHIR_NS, name);
20510      composeDomainResourceElements(element);
20511      if (element.hasIdentifier()) { 
20512        for (Identifier e : element.getIdentifier()) 
20513          composeIdentifier("identifier", e);
20514      }
20515      if (element.hasStatusElement())
20516        composeEnumeration("status", element.getStatusElement(), new DiagnosticReport.DiagnosticReportStatusEnumFactory());
20517      if (element.hasCategory()) {
20518        composeCodeableConcept("category", element.getCategory());
20519      }
20520      if (element.hasCode()) {
20521        composeCodeableConcept("code", element.getCode());
20522      }
20523      if (element.hasSubject()) {
20524        composeReference("subject", element.getSubject());
20525      }
20526      if (element.hasEncounter()) {
20527        composeReference("encounter", element.getEncounter());
20528      }
20529      if (element.hasEffective()) {
20530        composeType("effective", element.getEffective());
20531      }      if (element.hasIssuedElement()) {
20532        composeInstant("issued", element.getIssuedElement());
20533      }
20534      if (element.hasPerformer()) {
20535        composeReference("performer", element.getPerformer());
20536      }
20537      if (element.hasRequest()) { 
20538        for (Reference e : element.getRequest()) 
20539          composeReference("request", e);
20540      }
20541      if (element.hasSpecimen()) { 
20542        for (Reference e : element.getSpecimen()) 
20543          composeReference("specimen", e);
20544      }
20545      if (element.hasResult()) { 
20546        for (Reference e : element.getResult()) 
20547          composeReference("result", e);
20548      }
20549      if (element.hasImagingStudy()) { 
20550        for (Reference e : element.getImagingStudy()) 
20551          composeReference("imagingStudy", e);
20552      }
20553      if (element.hasImage()) { 
20554        for (DiagnosticReport.DiagnosticReportImageComponent e : element.getImage()) 
20555          composeDiagnosticReportDiagnosticReportImageComponent("image", e);
20556      }
20557      if (element.hasConclusionElement()) {
20558        composeString("conclusion", element.getConclusionElement());
20559      }
20560      if (element.hasCodedDiagnosis()) { 
20561        for (CodeableConcept e : element.getCodedDiagnosis()) 
20562          composeCodeableConcept("codedDiagnosis", e);
20563      }
20564      if (element.hasPresentedForm()) { 
20565        for (Attachment e : element.getPresentedForm()) 
20566          composeAttachment("presentedForm", e);
20567      }
20568      composeElementClose(element);
20569      xml.exit(FHIR_NS, name);
20570    }
20571  }
20572
20573  protected void composeDiagnosticReportDiagnosticReportImageComponent(String name, DiagnosticReport.DiagnosticReportImageComponent element) throws IOException {
20574    if (element != null) {
20575      composeElementAttributes(element);
20576      xml.enter(FHIR_NS, name);
20577      composeBackboneElements(element);
20578      if (element.hasCommentElement()) {
20579        composeString("comment", element.getCommentElement());
20580      }
20581      if (element.hasLink()) {
20582        composeReference("link", element.getLink());
20583      }
20584      composeElementClose(element);
20585      xml.exit(FHIR_NS, name);
20586    }
20587  }
20588
20589  protected void composeDocumentManifest(String name, DocumentManifest element) throws IOException {
20590    if (element != null) {
20591      composeDomainResourceAttributes(element);
20592      xml.enter(FHIR_NS, name);
20593      composeDomainResourceElements(element);
20594      if (element.hasMasterIdentifier()) {
20595        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
20596      }
20597      if (element.hasIdentifier()) { 
20598        for (Identifier e : element.getIdentifier()) 
20599          composeIdentifier("identifier", e);
20600      }
20601      if (element.hasSubject()) {
20602        composeReference("subject", element.getSubject());
20603      }
20604      if (element.hasRecipient()) { 
20605        for (Reference e : element.getRecipient()) 
20606          composeReference("recipient", e);
20607      }
20608      if (element.hasType()) {
20609        composeCodeableConcept("type", element.getType());
20610      }
20611      if (element.hasAuthor()) { 
20612        for (Reference e : element.getAuthor()) 
20613          composeReference("author", e);
20614      }
20615      if (element.hasCreatedElement()) {
20616        composeDateTime("created", element.getCreatedElement());
20617      }
20618      if (element.hasSourceElement()) {
20619        composeUri("source", element.getSourceElement());
20620      }
20621      if (element.hasStatusElement())
20622        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
20623      if (element.hasDescriptionElement()) {
20624        composeString("description", element.getDescriptionElement());
20625      }
20626      if (element.hasContent()) { 
20627        for (DocumentManifest.DocumentManifestContentComponent e : element.getContent()) 
20628          composeDocumentManifestDocumentManifestContentComponent("content", e);
20629      }
20630      if (element.hasRelated()) { 
20631        for (DocumentManifest.DocumentManifestRelatedComponent e : element.getRelated()) 
20632          composeDocumentManifestDocumentManifestRelatedComponent("related", e);
20633      }
20634      composeElementClose(element);
20635      xml.exit(FHIR_NS, name);
20636    }
20637  }
20638
20639  protected void composeDocumentManifestDocumentManifestContentComponent(String name, DocumentManifest.DocumentManifestContentComponent element) throws IOException {
20640    if (element != null) {
20641      composeElementAttributes(element);
20642      xml.enter(FHIR_NS, name);
20643      composeBackboneElements(element);
20644      if (element.hasP()) {
20645        composeType("p", element.getP());
20646      }      composeElementClose(element);
20647      xml.exit(FHIR_NS, name);
20648    }
20649  }
20650
20651  protected void composeDocumentManifestDocumentManifestRelatedComponent(String name, DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
20652    if (element != null) {
20653      composeElementAttributes(element);
20654      xml.enter(FHIR_NS, name);
20655      composeBackboneElements(element);
20656      if (element.hasIdentifier()) {
20657        composeIdentifier("identifier", element.getIdentifier());
20658      }
20659      if (element.hasRef()) {
20660        composeReference("ref", element.getRef());
20661      }
20662      composeElementClose(element);
20663      xml.exit(FHIR_NS, name);
20664    }
20665  }
20666
20667  protected void composeDocumentReference(String name, DocumentReference element) throws IOException {
20668    if (element != null) {
20669      composeDomainResourceAttributes(element);
20670      xml.enter(FHIR_NS, name);
20671      composeDomainResourceElements(element);
20672      if (element.hasMasterIdentifier()) {
20673        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
20674      }
20675      if (element.hasIdentifier()) { 
20676        for (Identifier e : element.getIdentifier()) 
20677          composeIdentifier("identifier", e);
20678      }
20679      if (element.hasSubject()) {
20680        composeReference("subject", element.getSubject());
20681      }
20682      if (element.hasType()) {
20683        composeCodeableConcept("type", element.getType());
20684      }
20685      if (element.hasClass_()) {
20686        composeCodeableConcept("class", element.getClass_());
20687      }
20688      if (element.hasAuthor()) { 
20689        for (Reference e : element.getAuthor()) 
20690          composeReference("author", e);
20691      }
20692      if (element.hasCustodian()) {
20693        composeReference("custodian", element.getCustodian());
20694      }
20695      if (element.hasAuthenticator()) {
20696        composeReference("authenticator", element.getAuthenticator());
20697      }
20698      if (element.hasCreatedElement()) {
20699        composeDateTime("created", element.getCreatedElement());
20700      }
20701      if (element.hasIndexedElement()) {
20702        composeInstant("indexed", element.getIndexedElement());
20703      }
20704      if (element.hasStatusElement())
20705        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
20706      if (element.hasDocStatus()) {
20707        composeCodeableConcept("docStatus", element.getDocStatus());
20708      }
20709      if (element.hasRelatesTo()) { 
20710        for (DocumentReference.DocumentReferenceRelatesToComponent e : element.getRelatesTo()) 
20711          composeDocumentReferenceDocumentReferenceRelatesToComponent("relatesTo", e);
20712      }
20713      if (element.hasDescriptionElement()) {
20714        composeString("description", element.getDescriptionElement());
20715      }
20716      if (element.hasSecurityLabel()) { 
20717        for (CodeableConcept e : element.getSecurityLabel()) 
20718          composeCodeableConcept("securityLabel", e);
20719      }
20720      if (element.hasContent()) { 
20721        for (DocumentReference.DocumentReferenceContentComponent e : element.getContent()) 
20722          composeDocumentReferenceDocumentReferenceContentComponent("content", e);
20723      }
20724      if (element.hasContext()) {
20725        composeDocumentReferenceDocumentReferenceContextComponent("context", element.getContext());
20726      }
20727      composeElementClose(element);
20728      xml.exit(FHIR_NS, name);
20729    }
20730  }
20731
20732  protected void composeDocumentReferenceDocumentReferenceRelatesToComponent(String name, DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
20733    if (element != null) {
20734      composeElementAttributes(element);
20735      xml.enter(FHIR_NS, name);
20736      composeBackboneElements(element);
20737      if (element.hasCodeElement())
20738        composeEnumeration("code", element.getCodeElement(), new DocumentReference.DocumentRelationshipTypeEnumFactory());
20739      if (element.hasTarget()) {
20740        composeReference("target", element.getTarget());
20741      }
20742      composeElementClose(element);
20743      xml.exit(FHIR_NS, name);
20744    }
20745  }
20746
20747  protected void composeDocumentReferenceDocumentReferenceContentComponent(String name, DocumentReference.DocumentReferenceContentComponent element) throws IOException {
20748    if (element != null) {
20749      composeElementAttributes(element);
20750      xml.enter(FHIR_NS, name);
20751      composeBackboneElements(element);
20752      if (element.hasAttachment()) {
20753        composeAttachment("attachment", element.getAttachment());
20754      }
20755      if (element.hasFormat()) { 
20756        for (Coding e : element.getFormat()) 
20757          composeCoding("format", e);
20758      }
20759      composeElementClose(element);
20760      xml.exit(FHIR_NS, name);
20761    }
20762  }
20763
20764  protected void composeDocumentReferenceDocumentReferenceContextComponent(String name, DocumentReference.DocumentReferenceContextComponent element) throws IOException {
20765    if (element != null) {
20766      composeElementAttributes(element);
20767      xml.enter(FHIR_NS, name);
20768      composeBackboneElements(element);
20769      if (element.hasEncounter()) {
20770        composeReference("encounter", element.getEncounter());
20771      }
20772      if (element.hasEvent()) { 
20773        for (CodeableConcept e : element.getEvent()) 
20774          composeCodeableConcept("event", e);
20775      }
20776      if (element.hasPeriod()) {
20777        composePeriod("period", element.getPeriod());
20778      }
20779      if (element.hasFacilityType()) {
20780        composeCodeableConcept("facilityType", element.getFacilityType());
20781      }
20782      if (element.hasPracticeSetting()) {
20783        composeCodeableConcept("practiceSetting", element.getPracticeSetting());
20784      }
20785      if (element.hasSourcePatientInfo()) {
20786        composeReference("sourcePatientInfo", element.getSourcePatientInfo());
20787      }
20788      if (element.hasRelated()) { 
20789        for (DocumentReference.DocumentReferenceContextRelatedComponent e : element.getRelated()) 
20790          composeDocumentReferenceDocumentReferenceContextRelatedComponent("related", e);
20791      }
20792      composeElementClose(element);
20793      xml.exit(FHIR_NS, name);
20794    }
20795  }
20796
20797  protected void composeDocumentReferenceDocumentReferenceContextRelatedComponent(String name, DocumentReference.DocumentReferenceContextRelatedComponent element) throws IOException {
20798    if (element != null) {
20799      composeElementAttributes(element);
20800      xml.enter(FHIR_NS, name);
20801      composeBackboneElements(element);
20802      if (element.hasIdentifier()) {
20803        composeIdentifier("identifier", element.getIdentifier());
20804      }
20805      if (element.hasRef()) {
20806        composeReference("ref", element.getRef());
20807      }
20808      composeElementClose(element);
20809      xml.exit(FHIR_NS, name);
20810    }
20811  }
20812
20813  protected void composeEligibilityRequest(String name, EligibilityRequest element) throws IOException {
20814    if (element != null) {
20815      composeDomainResourceAttributes(element);
20816      xml.enter(FHIR_NS, name);
20817      composeDomainResourceElements(element);
20818      if (element.hasIdentifier()) { 
20819        for (Identifier e : element.getIdentifier()) 
20820          composeIdentifier("identifier", e);
20821      }
20822      if (element.hasRuleset()) {
20823        composeCoding("ruleset", element.getRuleset());
20824      }
20825      if (element.hasOriginalRuleset()) {
20826        composeCoding("originalRuleset", element.getOriginalRuleset());
20827      }
20828      if (element.hasCreatedElement()) {
20829        composeDateTime("created", element.getCreatedElement());
20830      }
20831      if (element.hasTarget()) {
20832        composeType("target", element.getTarget());
20833      }      if (element.hasProvider()) {
20834        composeType("provider", element.getProvider());
20835      }      if (element.hasOrganization()) {
20836        composeType("organization", element.getOrganization());
20837      }      if (element.hasPriority()) {
20838        composeCoding("priority", element.getPriority());
20839      }
20840      if (element.hasEnterer()) {
20841        composeType("enterer", element.getEnterer());
20842      }      if (element.hasFacility()) {
20843        composeType("facility", element.getFacility());
20844      }      if (element.hasPatient()) {
20845        composeType("patient", element.getPatient());
20846      }      if (element.hasCoverage()) {
20847        composeType("coverage", element.getCoverage());
20848      }      if (element.hasBusinessArrangementElement()) {
20849        composeString("businessArrangement", element.getBusinessArrangementElement());
20850      }
20851      if (element.hasServiced()) {
20852        composeType("serviced", element.getServiced());
20853      }      if (element.hasBenefitCategory()) {
20854        composeCoding("benefitCategory", element.getBenefitCategory());
20855      }
20856      if (element.hasBenefitSubCategory()) {
20857        composeCoding("benefitSubCategory", element.getBenefitSubCategory());
20858      }
20859      composeElementClose(element);
20860      xml.exit(FHIR_NS, name);
20861    }
20862  }
20863
20864  protected void composeEligibilityResponse(String name, EligibilityResponse element) throws IOException {
20865    if (element != null) {
20866      composeDomainResourceAttributes(element);
20867      xml.enter(FHIR_NS, name);
20868      composeDomainResourceElements(element);
20869      if (element.hasIdentifier()) { 
20870        for (Identifier e : element.getIdentifier()) 
20871          composeIdentifier("identifier", e);
20872      }
20873      if (element.hasRequest()) {
20874        composeType("request", element.getRequest());
20875      }      if (element.hasOutcomeElement())
20876        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
20877      if (element.hasDispositionElement()) {
20878        composeString("disposition", element.getDispositionElement());
20879      }
20880      if (element.hasRuleset()) {
20881        composeCoding("ruleset", element.getRuleset());
20882      }
20883      if (element.hasOriginalRuleset()) {
20884        composeCoding("originalRuleset", element.getOriginalRuleset());
20885      }
20886      if (element.hasCreatedElement()) {
20887        composeDateTime("created", element.getCreatedElement());
20888      }
20889      if (element.hasOrganization()) {
20890        composeType("organization", element.getOrganization());
20891      }      if (element.hasRequestProvider()) {
20892        composeType("requestProvider", element.getRequestProvider());
20893      }      if (element.hasRequestOrganization()) {
20894        composeType("requestOrganization", element.getRequestOrganization());
20895      }      if (element.hasInforceElement()) {
20896        composeBoolean("inforce", element.getInforceElement());
20897      }
20898      if (element.hasContract()) {
20899        composeReference("contract", element.getContract());
20900      }
20901      if (element.hasForm()) {
20902        composeCoding("form", element.getForm());
20903      }
20904      if (element.hasBenefitBalance()) { 
20905        for (EligibilityResponse.BenefitsComponent e : element.getBenefitBalance()) 
20906          composeEligibilityResponseBenefitsComponent("benefitBalance", e);
20907      }
20908      if (element.hasError()) { 
20909        for (EligibilityResponse.ErrorsComponent e : element.getError()) 
20910          composeEligibilityResponseErrorsComponent("error", e);
20911      }
20912      composeElementClose(element);
20913      xml.exit(FHIR_NS, name);
20914    }
20915  }
20916
20917  protected void composeEligibilityResponseBenefitsComponent(String name, EligibilityResponse.BenefitsComponent element) throws IOException {
20918    if (element != null) {
20919      composeElementAttributes(element);
20920      xml.enter(FHIR_NS, name);
20921      composeBackboneElements(element);
20922      if (element.hasCategory()) {
20923        composeCoding("category", element.getCategory());
20924      }
20925      if (element.hasSubCategory()) {
20926        composeCoding("subCategory", element.getSubCategory());
20927      }
20928      if (element.hasNetwork()) {
20929        composeCoding("network", element.getNetwork());
20930      }
20931      if (element.hasUnit()) {
20932        composeCoding("unit", element.getUnit());
20933      }
20934      if (element.hasTerm()) {
20935        composeCoding("term", element.getTerm());
20936      }
20937      if (element.hasFinancial()) { 
20938        for (EligibilityResponse.BenefitComponent e : element.getFinancial()) 
20939          composeEligibilityResponseBenefitComponent("financial", e);
20940      }
20941      composeElementClose(element);
20942      xml.exit(FHIR_NS, name);
20943    }
20944  }
20945
20946  protected void composeEligibilityResponseBenefitComponent(String name, EligibilityResponse.BenefitComponent element) throws IOException {
20947    if (element != null) {
20948      composeElementAttributes(element);
20949      xml.enter(FHIR_NS, name);
20950      composeBackboneElements(element);
20951      if (element.hasType()) {
20952        composeCoding("type", element.getType());
20953      }
20954      if (element.hasBenefit()) {
20955        composeType("benefit", element.getBenefit());
20956      }      if (element.hasBenefitUsed()) {
20957        composeType("benefitUsed", element.getBenefitUsed());
20958      }      composeElementClose(element);
20959      xml.exit(FHIR_NS, name);
20960    }
20961  }
20962
20963  protected void composeEligibilityResponseErrorsComponent(String name, EligibilityResponse.ErrorsComponent element) throws IOException {
20964    if (element != null) {
20965      composeElementAttributes(element);
20966      xml.enter(FHIR_NS, name);
20967      composeBackboneElements(element);
20968      if (element.hasCode()) {
20969        composeCoding("code", element.getCode());
20970      }
20971      composeElementClose(element);
20972      xml.exit(FHIR_NS, name);
20973    }
20974  }
20975
20976  protected void composeEncounter(String name, Encounter element) throws IOException {
20977    if (element != null) {
20978      composeDomainResourceAttributes(element);
20979      xml.enter(FHIR_NS, name);
20980      composeDomainResourceElements(element);
20981      if (element.hasIdentifier()) { 
20982        for (Identifier e : element.getIdentifier()) 
20983          composeIdentifier("identifier", e);
20984      }
20985      if (element.hasStatusElement())
20986        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStateEnumFactory());
20987      if (element.hasStatusHistory()) { 
20988        for (Encounter.EncounterStatusHistoryComponent e : element.getStatusHistory()) 
20989          composeEncounterEncounterStatusHistoryComponent("statusHistory", e);
20990      }
20991      if (element.hasClass_Element())
20992        composeEnumeration("class", element.getClass_Element(), new Encounter.EncounterClassEnumFactory());
20993      if (element.hasType()) { 
20994        for (CodeableConcept e : element.getType()) 
20995          composeCodeableConcept("type", e);
20996      }
20997      if (element.hasPriority()) {
20998        composeCodeableConcept("priority", element.getPriority());
20999      }
21000      if (element.hasPatient()) {
21001        composeReference("patient", element.getPatient());
21002      }
21003      if (element.hasEpisodeOfCare()) { 
21004        for (Reference e : element.getEpisodeOfCare()) 
21005          composeReference("episodeOfCare", e);
21006      }
21007      if (element.hasIncomingReferral()) { 
21008        for (Reference e : element.getIncomingReferral()) 
21009          composeReference("incomingReferral", e);
21010      }
21011      if (element.hasParticipant()) { 
21012        for (Encounter.EncounterParticipantComponent e : element.getParticipant()) 
21013          composeEncounterEncounterParticipantComponent("participant", e);
21014      }
21015      if (element.hasAppointment()) {
21016        composeReference("appointment", element.getAppointment());
21017      }
21018      if (element.hasPeriod()) {
21019        composePeriod("period", element.getPeriod());
21020      }
21021      if (element.hasLength()) {
21022        composeDuration("length", element.getLength());
21023      }
21024      if (element.hasReason()) { 
21025        for (CodeableConcept e : element.getReason()) 
21026          composeCodeableConcept("reason", e);
21027      }
21028      if (element.hasIndication()) { 
21029        for (Reference e : element.getIndication()) 
21030          composeReference("indication", e);
21031      }
21032      if (element.hasHospitalization()) {
21033        composeEncounterEncounterHospitalizationComponent("hospitalization", element.getHospitalization());
21034      }
21035      if (element.hasLocation()) { 
21036        for (Encounter.EncounterLocationComponent e : element.getLocation()) 
21037          composeEncounterEncounterLocationComponent("location", e);
21038      }
21039      if (element.hasServiceProvider()) {
21040        composeReference("serviceProvider", element.getServiceProvider());
21041      }
21042      if (element.hasPartOf()) {
21043        composeReference("partOf", element.getPartOf());
21044      }
21045      composeElementClose(element);
21046      xml.exit(FHIR_NS, name);
21047    }
21048  }
21049
21050  protected void composeEncounterEncounterStatusHistoryComponent(String name, Encounter.EncounterStatusHistoryComponent element) throws IOException {
21051    if (element != null) {
21052      composeElementAttributes(element);
21053      xml.enter(FHIR_NS, name);
21054      composeBackboneElements(element);
21055      if (element.hasStatusElement())
21056        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStateEnumFactory());
21057      if (element.hasPeriod()) {
21058        composePeriod("period", element.getPeriod());
21059      }
21060      composeElementClose(element);
21061      xml.exit(FHIR_NS, name);
21062    }
21063  }
21064
21065  protected void composeEncounterEncounterParticipantComponent(String name, Encounter.EncounterParticipantComponent element) throws IOException {
21066    if (element != null) {
21067      composeElementAttributes(element);
21068      xml.enter(FHIR_NS, name);
21069      composeBackboneElements(element);
21070      if (element.hasType()) { 
21071        for (CodeableConcept e : element.getType()) 
21072          composeCodeableConcept("type", e);
21073      }
21074      if (element.hasPeriod()) {
21075        composePeriod("period", element.getPeriod());
21076      }
21077      if (element.hasIndividual()) {
21078        composeReference("individual", element.getIndividual());
21079      }
21080      composeElementClose(element);
21081      xml.exit(FHIR_NS, name);
21082    }
21083  }
21084
21085  protected void composeEncounterEncounterHospitalizationComponent(String name, Encounter.EncounterHospitalizationComponent element) throws IOException {
21086    if (element != null) {
21087      composeElementAttributes(element);
21088      xml.enter(FHIR_NS, name);
21089      composeBackboneElements(element);
21090      if (element.hasPreAdmissionIdentifier()) {
21091        composeIdentifier("preAdmissionIdentifier", element.getPreAdmissionIdentifier());
21092      }
21093      if (element.hasOrigin()) {
21094        composeReference("origin", element.getOrigin());
21095      }
21096      if (element.hasAdmitSource()) {
21097        composeCodeableConcept("admitSource", element.getAdmitSource());
21098      }
21099      if (element.hasAdmittingDiagnosis()) { 
21100        for (Reference e : element.getAdmittingDiagnosis()) 
21101          composeReference("admittingDiagnosis", e);
21102      }
21103      if (element.hasReAdmission()) {
21104        composeCodeableConcept("reAdmission", element.getReAdmission());
21105      }
21106      if (element.hasDietPreference()) { 
21107        for (CodeableConcept e : element.getDietPreference()) 
21108          composeCodeableConcept("dietPreference", e);
21109      }
21110      if (element.hasSpecialCourtesy()) { 
21111        for (CodeableConcept e : element.getSpecialCourtesy()) 
21112          composeCodeableConcept("specialCourtesy", e);
21113      }
21114      if (element.hasSpecialArrangement()) { 
21115        for (CodeableConcept e : element.getSpecialArrangement()) 
21116          composeCodeableConcept("specialArrangement", e);
21117      }
21118      if (element.hasDestination()) {
21119        composeReference("destination", element.getDestination());
21120      }
21121      if (element.hasDischargeDisposition()) {
21122        composeCodeableConcept("dischargeDisposition", element.getDischargeDisposition());
21123      }
21124      if (element.hasDischargeDiagnosis()) { 
21125        for (Reference e : element.getDischargeDiagnosis()) 
21126          composeReference("dischargeDiagnosis", e);
21127      }
21128      composeElementClose(element);
21129      xml.exit(FHIR_NS, name);
21130    }
21131  }
21132
21133  protected void composeEncounterEncounterLocationComponent(String name, Encounter.EncounterLocationComponent element) throws IOException {
21134    if (element != null) {
21135      composeElementAttributes(element);
21136      xml.enter(FHIR_NS, name);
21137      composeBackboneElements(element);
21138      if (element.hasLocation()) {
21139        composeReference("location", element.getLocation());
21140      }
21141      if (element.hasStatusElement())
21142        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterLocationStatusEnumFactory());
21143      if (element.hasPeriod()) {
21144        composePeriod("period", element.getPeriod());
21145      }
21146      composeElementClose(element);
21147      xml.exit(FHIR_NS, name);
21148    }
21149  }
21150
21151  protected void composeEnrollmentRequest(String name, EnrollmentRequest element) throws IOException {
21152    if (element != null) {
21153      composeDomainResourceAttributes(element);
21154      xml.enter(FHIR_NS, name);
21155      composeDomainResourceElements(element);
21156      if (element.hasIdentifier()) { 
21157        for (Identifier e : element.getIdentifier()) 
21158          composeIdentifier("identifier", e);
21159      }
21160      if (element.hasRuleset()) {
21161        composeCoding("ruleset", element.getRuleset());
21162      }
21163      if (element.hasOriginalRuleset()) {
21164        composeCoding("originalRuleset", element.getOriginalRuleset());
21165      }
21166      if (element.hasCreatedElement()) {
21167        composeDateTime("created", element.getCreatedElement());
21168      }
21169      if (element.hasTarget()) {
21170        composeReference("target", element.getTarget());
21171      }
21172      if (element.hasProvider()) {
21173        composeReference("provider", element.getProvider());
21174      }
21175      if (element.hasOrganization()) {
21176        composeReference("organization", element.getOrganization());
21177      }
21178      if (element.hasSubject()) {
21179        composeReference("subject", element.getSubject());
21180      }
21181      if (element.hasCoverage()) {
21182        composeReference("coverage", element.getCoverage());
21183      }
21184      if (element.hasRelationship()) {
21185        composeCoding("relationship", element.getRelationship());
21186      }
21187      composeElementClose(element);
21188      xml.exit(FHIR_NS, name);
21189    }
21190  }
21191
21192  protected void composeEnrollmentResponse(String name, EnrollmentResponse element) throws IOException {
21193    if (element != null) {
21194      composeDomainResourceAttributes(element);
21195      xml.enter(FHIR_NS, name);
21196      composeDomainResourceElements(element);
21197      if (element.hasIdentifier()) { 
21198        for (Identifier e : element.getIdentifier()) 
21199          composeIdentifier("identifier", e);
21200      }
21201      if (element.hasRequest()) {
21202        composeReference("request", element.getRequest());
21203      }
21204      if (element.hasOutcomeElement())
21205        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
21206      if (element.hasDispositionElement()) {
21207        composeString("disposition", element.getDispositionElement());
21208      }
21209      if (element.hasRuleset()) {
21210        composeCoding("ruleset", element.getRuleset());
21211      }
21212      if (element.hasOriginalRuleset()) {
21213        composeCoding("originalRuleset", element.getOriginalRuleset());
21214      }
21215      if (element.hasCreatedElement()) {
21216        composeDateTime("created", element.getCreatedElement());
21217      }
21218      if (element.hasOrganization()) {
21219        composeReference("organization", element.getOrganization());
21220      }
21221      if (element.hasRequestProvider()) {
21222        composeReference("requestProvider", element.getRequestProvider());
21223      }
21224      if (element.hasRequestOrganization()) {
21225        composeReference("requestOrganization", element.getRequestOrganization());
21226      }
21227      composeElementClose(element);
21228      xml.exit(FHIR_NS, name);
21229    }
21230  }
21231
21232  protected void composeEpisodeOfCare(String name, EpisodeOfCare element) throws IOException {
21233    if (element != null) {
21234      composeDomainResourceAttributes(element);
21235      xml.enter(FHIR_NS, name);
21236      composeDomainResourceElements(element);
21237      if (element.hasIdentifier()) { 
21238        for (Identifier e : element.getIdentifier()) 
21239          composeIdentifier("identifier", e);
21240      }
21241      if (element.hasStatusElement())
21242        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
21243      if (element.hasStatusHistory()) { 
21244        for (EpisodeOfCare.EpisodeOfCareStatusHistoryComponent e : element.getStatusHistory()) 
21245          composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent("statusHistory", e);
21246      }
21247      if (element.hasType()) { 
21248        for (CodeableConcept e : element.getType()) 
21249          composeCodeableConcept("type", e);
21250      }
21251      if (element.hasCondition()) { 
21252        for (Reference e : element.getCondition()) 
21253          composeReference("condition", e);
21254      }
21255      if (element.hasPatient()) {
21256        composeReference("patient", element.getPatient());
21257      }
21258      if (element.hasManagingOrganization()) {
21259        composeReference("managingOrganization", element.getManagingOrganization());
21260      }
21261      if (element.hasPeriod()) {
21262        composePeriod("period", element.getPeriod());
21263      }
21264      if (element.hasReferralRequest()) { 
21265        for (Reference e : element.getReferralRequest()) 
21266          composeReference("referralRequest", e);
21267      }
21268      if (element.hasCareManager()) {
21269        composeReference("careManager", element.getCareManager());
21270      }
21271      if (element.hasTeam()) { 
21272        for (Reference e : element.getTeam()) 
21273          composeReference("team", e);
21274      }
21275      composeElementClose(element);
21276      xml.exit(FHIR_NS, name);
21277    }
21278  }
21279
21280  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
21281    if (element != null) {
21282      composeElementAttributes(element);
21283      xml.enter(FHIR_NS, name);
21284      composeBackboneElements(element);
21285      if (element.hasStatusElement())
21286        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
21287      if (element.hasPeriod()) {
21288        composePeriod("period", element.getPeriod());
21289      }
21290      composeElementClose(element);
21291      xml.exit(FHIR_NS, name);
21292    }
21293  }
21294
21295  protected void composeExpansionProfile(String name, ExpansionProfile element) throws IOException {
21296    if (element != null) {
21297      composeDomainResourceAttributes(element);
21298      xml.enter(FHIR_NS, name);
21299      composeDomainResourceElements(element);
21300      if (element.hasUrlElement()) {
21301        composeUri("url", element.getUrlElement());
21302      }
21303      if (element.hasIdentifier()) {
21304        composeIdentifier("identifier", element.getIdentifier());
21305      }
21306      if (element.hasVersionElement()) {
21307        composeString("version", element.getVersionElement());
21308      }
21309      if (element.hasNameElement()) {
21310        composeString("name", element.getNameElement());
21311      }
21312      if (element.hasStatusElement())
21313        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
21314      if (element.hasExperimentalElement()) {
21315        composeBoolean("experimental", element.getExperimentalElement());
21316      }
21317      if (element.hasPublisherElement()) {
21318        composeString("publisher", element.getPublisherElement());
21319      }
21320      if (element.hasContact()) { 
21321        for (ExpansionProfile.ExpansionProfileContactComponent e : element.getContact()) 
21322          composeExpansionProfileExpansionProfileContactComponent("contact", e);
21323      }
21324      if (element.hasDateElement()) {
21325        composeDateTime("date", element.getDateElement());
21326      }
21327      if (element.hasDescriptionElement()) {
21328        composeString("description", element.getDescriptionElement());
21329      }
21330      if (element.hasCodeSystem()) {
21331        composeExpansionProfileExpansionProfileCodeSystemComponent("codeSystem", element.getCodeSystem());
21332      }
21333      if (element.hasIncludeDesignationsElement()) {
21334        composeBoolean("includeDesignations", element.getIncludeDesignationsElement());
21335      }
21336      if (element.hasDesignation()) {
21337        composeExpansionProfileExpansionProfileDesignationComponent("designation", element.getDesignation());
21338      }
21339      if (element.hasIncludeDefinitionElement()) {
21340        composeBoolean("includeDefinition", element.getIncludeDefinitionElement());
21341      }
21342      if (element.hasIncludeInactiveElement()) {
21343        composeBoolean("includeInactive", element.getIncludeInactiveElement());
21344      }
21345      if (element.hasExcludeNestedElement()) {
21346        composeBoolean("excludeNested", element.getExcludeNestedElement());
21347      }
21348      if (element.hasExcludeNotForUIElement()) {
21349        composeBoolean("excludeNotForUI", element.getExcludeNotForUIElement());
21350      }
21351      if (element.hasExcludePostCoordinatedElement()) {
21352        composeBoolean("excludePostCoordinated", element.getExcludePostCoordinatedElement());
21353      }
21354      if (element.hasDisplayLanguageElement()) {
21355        composeCode("displayLanguage", element.getDisplayLanguageElement());
21356      }
21357      if (element.hasLimitedExpansionElement()) {
21358        composeBoolean("limitedExpansion", element.getLimitedExpansionElement());
21359      }
21360      composeElementClose(element);
21361      xml.exit(FHIR_NS, name);
21362    }
21363  }
21364
21365  protected void composeExpansionProfileExpansionProfileContactComponent(String name, ExpansionProfile.ExpansionProfileContactComponent element) throws IOException {
21366    if (element != null) {
21367      composeElementAttributes(element);
21368      xml.enter(FHIR_NS, name);
21369      composeBackboneElements(element);
21370      if (element.hasNameElement()) {
21371        composeString("name", element.getNameElement());
21372      }
21373      if (element.hasTelecom()) { 
21374        for (ContactPoint e : element.getTelecom()) 
21375          composeContactPoint("telecom", e);
21376      }
21377      composeElementClose(element);
21378      xml.exit(FHIR_NS, name);
21379    }
21380  }
21381
21382  protected void composeExpansionProfileExpansionProfileCodeSystemComponent(String name, ExpansionProfile.ExpansionProfileCodeSystemComponent element) throws IOException {
21383    if (element != null) {
21384      composeElementAttributes(element);
21385      xml.enter(FHIR_NS, name);
21386      composeBackboneElements(element);
21387      if (element.hasInclude()) {
21388        composeExpansionProfileCodeSystemIncludeComponent("include", element.getInclude());
21389      }
21390      if (element.hasExclude()) {
21391        composeExpansionProfileCodeSystemExcludeComponent("exclude", element.getExclude());
21392      }
21393      composeElementClose(element);
21394      xml.exit(FHIR_NS, name);
21395    }
21396  }
21397
21398  protected void composeExpansionProfileCodeSystemIncludeComponent(String name, ExpansionProfile.CodeSystemIncludeComponent element) throws IOException {
21399    if (element != null) {
21400      composeElementAttributes(element);
21401      xml.enter(FHIR_NS, name);
21402      composeBackboneElements(element);
21403      if (element.hasCodeSystem()) { 
21404        for (ExpansionProfile.CodeSystemIncludeCodeSystemComponent e : element.getCodeSystem()) 
21405          composeExpansionProfileCodeSystemIncludeCodeSystemComponent("codeSystem", e);
21406      }
21407      composeElementClose(element);
21408      xml.exit(FHIR_NS, name);
21409    }
21410  }
21411
21412  protected void composeExpansionProfileCodeSystemIncludeCodeSystemComponent(String name, ExpansionProfile.CodeSystemIncludeCodeSystemComponent element) throws IOException {
21413    if (element != null) {
21414      composeElementAttributes(element);
21415      xml.enter(FHIR_NS, name);
21416      composeBackboneElements(element);
21417      if (element.hasSystemElement()) {
21418        composeUri("system", element.getSystemElement());
21419      }
21420      if (element.hasVersionElement()) {
21421        composeString("version", element.getVersionElement());
21422      }
21423      composeElementClose(element);
21424      xml.exit(FHIR_NS, name);
21425    }
21426  }
21427
21428  protected void composeExpansionProfileCodeSystemExcludeComponent(String name, ExpansionProfile.CodeSystemExcludeComponent element) throws IOException {
21429    if (element != null) {
21430      composeElementAttributes(element);
21431      xml.enter(FHIR_NS, name);
21432      composeBackboneElements(element);
21433      if (element.hasCodeSystem()) { 
21434        for (ExpansionProfile.CodeSystemExcludeCodeSystemComponent e : element.getCodeSystem()) 
21435          composeExpansionProfileCodeSystemExcludeCodeSystemComponent("codeSystem", e);
21436      }
21437      composeElementClose(element);
21438      xml.exit(FHIR_NS, name);
21439    }
21440  }
21441
21442  protected void composeExpansionProfileCodeSystemExcludeCodeSystemComponent(String name, ExpansionProfile.CodeSystemExcludeCodeSystemComponent element) throws IOException {
21443    if (element != null) {
21444      composeElementAttributes(element);
21445      xml.enter(FHIR_NS, name);
21446      composeBackboneElements(element);
21447      if (element.hasSystemElement()) {
21448        composeUri("system", element.getSystemElement());
21449      }
21450      if (element.hasVersionElement()) {
21451        composeString("version", element.getVersionElement());
21452      }
21453      composeElementClose(element);
21454      xml.exit(FHIR_NS, name);
21455    }
21456  }
21457
21458  protected void composeExpansionProfileExpansionProfileDesignationComponent(String name, ExpansionProfile.ExpansionProfileDesignationComponent element) throws IOException {
21459    if (element != null) {
21460      composeElementAttributes(element);
21461      xml.enter(FHIR_NS, name);
21462      composeBackboneElements(element);
21463      if (element.hasInclude()) {
21464        composeExpansionProfileDesignationIncludeComponent("include", element.getInclude());
21465      }
21466      if (element.hasExclude()) {
21467        composeExpansionProfileDesignationExcludeComponent("exclude", element.getExclude());
21468      }
21469      composeElementClose(element);
21470      xml.exit(FHIR_NS, name);
21471    }
21472  }
21473
21474  protected void composeExpansionProfileDesignationIncludeComponent(String name, ExpansionProfile.DesignationIncludeComponent element) throws IOException {
21475    if (element != null) {
21476      composeElementAttributes(element);
21477      xml.enter(FHIR_NS, name);
21478      composeBackboneElements(element);
21479      if (element.hasDesignation()) { 
21480        for (ExpansionProfile.DesignationIncludeDesignationComponent e : element.getDesignation()) 
21481          composeExpansionProfileDesignationIncludeDesignationComponent("designation", e);
21482      }
21483      composeElementClose(element);
21484      xml.exit(FHIR_NS, name);
21485    }
21486  }
21487
21488  protected void composeExpansionProfileDesignationIncludeDesignationComponent(String name, ExpansionProfile.DesignationIncludeDesignationComponent element) throws IOException {
21489    if (element != null) {
21490      composeElementAttributes(element);
21491      xml.enter(FHIR_NS, name);
21492      composeBackboneElements(element);
21493      if (element.hasLanguageElement()) {
21494        composeCode("language", element.getLanguageElement());
21495      }
21496      if (element.hasUse()) {
21497        composeCoding("use", element.getUse());
21498      }
21499      composeElementClose(element);
21500      xml.exit(FHIR_NS, name);
21501    }
21502  }
21503
21504  protected void composeExpansionProfileDesignationExcludeComponent(String name, ExpansionProfile.DesignationExcludeComponent element) throws IOException {
21505    if (element != null) {
21506      composeElementAttributes(element);
21507      xml.enter(FHIR_NS, name);
21508      composeBackboneElements(element);
21509      if (element.hasDesignation()) { 
21510        for (ExpansionProfile.DesignationExcludeDesignationComponent e : element.getDesignation()) 
21511          composeExpansionProfileDesignationExcludeDesignationComponent("designation", e);
21512      }
21513      composeElementClose(element);
21514      xml.exit(FHIR_NS, name);
21515    }
21516  }
21517
21518  protected void composeExpansionProfileDesignationExcludeDesignationComponent(String name, ExpansionProfile.DesignationExcludeDesignationComponent element) throws IOException {
21519    if (element != null) {
21520      composeElementAttributes(element);
21521      xml.enter(FHIR_NS, name);
21522      composeBackboneElements(element);
21523      if (element.hasLanguageElement()) {
21524        composeCode("language", element.getLanguageElement());
21525      }
21526      if (element.hasUse()) {
21527        composeCoding("use", element.getUse());
21528      }
21529      composeElementClose(element);
21530      xml.exit(FHIR_NS, name);
21531    }
21532  }
21533
21534  protected void composeExplanationOfBenefit(String name, ExplanationOfBenefit element) throws IOException {
21535    if (element != null) {
21536      composeDomainResourceAttributes(element);
21537      xml.enter(FHIR_NS, name);
21538      composeDomainResourceElements(element);
21539      if (element.hasIdentifier()) { 
21540        for (Identifier e : element.getIdentifier()) 
21541          composeIdentifier("identifier", e);
21542      }
21543      if (element.hasClaim()) {
21544        composeType("claim", element.getClaim());
21545      }      if (element.hasClaimResponse()) {
21546        composeType("claimResponse", element.getClaimResponse());
21547      }      if (element.hasSubType()) { 
21548        for (Coding e : element.getSubType()) 
21549          composeCoding("subType", e);
21550      }
21551      if (element.hasRuleset()) {
21552        composeCoding("ruleset", element.getRuleset());
21553      }
21554      if (element.hasOriginalRuleset()) {
21555        composeCoding("originalRuleset", element.getOriginalRuleset());
21556      }
21557      if (element.hasCreatedElement()) {
21558        composeDateTime("created", element.getCreatedElement());
21559      }
21560      if (element.hasBillablePeriod()) {
21561        composePeriod("billablePeriod", element.getBillablePeriod());
21562      }
21563      if (element.hasDispositionElement()) {
21564        composeString("disposition", element.getDispositionElement());
21565      }
21566      if (element.hasProvider()) {
21567        composeType("provider", element.getProvider());
21568      }      if (element.hasOrganization()) {
21569        composeType("organization", element.getOrganization());
21570      }      if (element.hasFacility()) {
21571        composeType("facility", element.getFacility());
21572      }      if (element.hasRelated()) { 
21573        for (ExplanationOfBenefit.RelatedClaimsComponent e : element.getRelated()) 
21574          composeExplanationOfBenefitRelatedClaimsComponent("related", e);
21575      }
21576      if (element.hasPrescription()) {
21577        composeType("prescription", element.getPrescription());
21578      }      if (element.hasOriginalPrescription()) {
21579        composeType("originalPrescription", element.getOriginalPrescription());
21580      }      if (element.hasPayee()) {
21581        composeExplanationOfBenefitPayeeComponent("payee", element.getPayee());
21582      }
21583      if (element.hasReferral()) {
21584        composeType("referral", element.getReferral());
21585      }      if (element.hasOccurrenceCode()) { 
21586        for (Coding e : element.getOccurrenceCode()) 
21587          composeCoding("occurrenceCode", e);
21588      }
21589      if (element.hasOccurenceSpanCode()) { 
21590        for (Coding e : element.getOccurenceSpanCode()) 
21591          composeCoding("occurenceSpanCode", e);
21592      }
21593      if (element.hasValueCode()) { 
21594        for (Coding e : element.getValueCode()) 
21595          composeCoding("valueCode", e);
21596      }
21597      if (element.hasDiagnosis()) { 
21598        for (ExplanationOfBenefit.DiagnosisComponent e : element.getDiagnosis()) 
21599          composeExplanationOfBenefitDiagnosisComponent("diagnosis", e);
21600      }
21601      if (element.hasProcedure()) { 
21602        for (ExplanationOfBenefit.ProcedureComponent e : element.getProcedure()) 
21603          composeExplanationOfBenefitProcedureComponent("procedure", e);
21604      }
21605      if (element.hasSpecialCondition()) { 
21606        for (Coding e : element.getSpecialCondition()) 
21607          composeCoding("specialCondition", e);
21608      }
21609      if (element.hasPatient()) {
21610        composeType("patient", element.getPatient());
21611      }      if (element.hasPrecedenceElement()) {
21612        composePositiveInt("precedence", element.getPrecedenceElement());
21613      }
21614      if (element.hasCoverage()) {
21615        composeExplanationOfBenefitCoverageComponent("coverage", element.getCoverage());
21616      }
21617      if (element.hasAccidentDateElement()) {
21618        composeDate("accidentDate", element.getAccidentDateElement());
21619      }
21620      if (element.hasAccidentType()) {
21621        composeCoding("accidentType", element.getAccidentType());
21622      }
21623      if (element.hasAccidentLocation()) {
21624        composeType("accidentLocation", element.getAccidentLocation());
21625      }      if (element.hasInterventionException()) { 
21626        for (Coding e : element.getInterventionException()) 
21627          composeCoding("interventionException", e);
21628      }
21629      if (element.hasOnset()) { 
21630        for (ExplanationOfBenefit.OnsetComponent e : element.getOnset()) 
21631          composeExplanationOfBenefitOnsetComponent("onset", e);
21632      }
21633      if (element.hasEmploymentImpacted()) {
21634        composePeriod("employmentImpacted", element.getEmploymentImpacted());
21635      }
21636      if (element.hasHospitalization()) {
21637        composePeriod("hospitalization", element.getHospitalization());
21638      }
21639      if (element.hasItem()) { 
21640        for (ExplanationOfBenefit.ItemsComponent e : element.getItem()) 
21641          composeExplanationOfBenefitItemsComponent("item", e);
21642      }
21643      if (element.hasAddItem()) { 
21644        for (ExplanationOfBenefit.AddedItemComponent e : element.getAddItem()) 
21645          composeExplanationOfBenefitAddedItemComponent("addItem", e);
21646      }
21647      if (element.hasMissingTeeth()) { 
21648        for (ExplanationOfBenefit.MissingTeethComponent e : element.getMissingTeeth()) 
21649          composeExplanationOfBenefitMissingTeethComponent("missingTeeth", e);
21650      }
21651      if (element.hasTotalCost()) {
21652        composeMoney("totalCost", element.getTotalCost());
21653      }
21654      if (element.hasUnallocDeductable()) {
21655        composeMoney("unallocDeductable", element.getUnallocDeductable());
21656      }
21657      if (element.hasTotalBenefit()) {
21658        composeMoney("totalBenefit", element.getTotalBenefit());
21659      }
21660      if (element.hasPaymentAdjustment()) {
21661        composeMoney("paymentAdjustment", element.getPaymentAdjustment());
21662      }
21663      if (element.hasPaymentAdjustmentReason()) {
21664        composeCoding("paymentAdjustmentReason", element.getPaymentAdjustmentReason());
21665      }
21666      if (element.hasPaymentDateElement()) {
21667        composeDate("paymentDate", element.getPaymentDateElement());
21668      }
21669      if (element.hasPaymentAmount()) {
21670        composeMoney("paymentAmount", element.getPaymentAmount());
21671      }
21672      if (element.hasPaymentRef()) {
21673        composeIdentifier("paymentRef", element.getPaymentRef());
21674      }
21675      if (element.hasReserved()) {
21676        composeCoding("reserved", element.getReserved());
21677      }
21678      if (element.hasForm()) {
21679        composeCoding("form", element.getForm());
21680      }
21681      if (element.hasNote()) { 
21682        for (ExplanationOfBenefit.NotesComponent e : element.getNote()) 
21683          composeExplanationOfBenefitNotesComponent("note", e);
21684      }
21685      if (element.hasBenefitBalance()) { 
21686        for (ExplanationOfBenefit.BenefitBalanceComponent e : element.getBenefitBalance()) 
21687          composeExplanationOfBenefitBenefitBalanceComponent("benefitBalance", e);
21688      }
21689      composeElementClose(element);
21690      xml.exit(FHIR_NS, name);
21691    }
21692  }
21693
21694  protected void composeExplanationOfBenefitRelatedClaimsComponent(String name, ExplanationOfBenefit.RelatedClaimsComponent element) throws IOException {
21695    if (element != null) {
21696      composeElementAttributes(element);
21697      xml.enter(FHIR_NS, name);
21698      composeBackboneElements(element);
21699      if (element.hasClaim()) {
21700        composeType("claim", element.getClaim());
21701      }      if (element.hasRelationship()) {
21702        composeCoding("relationship", element.getRelationship());
21703      }
21704      if (element.hasReference()) {
21705        composeIdentifier("reference", element.getReference());
21706      }
21707      composeElementClose(element);
21708      xml.exit(FHIR_NS, name);
21709    }
21710  }
21711
21712  protected void composeExplanationOfBenefitPayeeComponent(String name, ExplanationOfBenefit.PayeeComponent element) throws IOException {
21713    if (element != null) {
21714      composeElementAttributes(element);
21715      xml.enter(FHIR_NS, name);
21716      composeBackboneElements(element);
21717      if (element.hasType()) {
21718        composeCoding("type", element.getType());
21719      }
21720      if (element.hasParty()) {
21721        composeType("party", element.getParty());
21722      }      composeElementClose(element);
21723      xml.exit(FHIR_NS, name);
21724    }
21725  }
21726
21727  protected void composeExplanationOfBenefitDiagnosisComponent(String name, ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
21728    if (element != null) {
21729      composeElementAttributes(element);
21730      xml.enter(FHIR_NS, name);
21731      composeBackboneElements(element);
21732      if (element.hasSequenceElement()) {
21733        composePositiveInt("sequence", element.getSequenceElement());
21734      }
21735      if (element.hasDiagnosis()) {
21736        composeCoding("diagnosis", element.getDiagnosis());
21737      }
21738      composeElementClose(element);
21739      xml.exit(FHIR_NS, name);
21740    }
21741  }
21742
21743  protected void composeExplanationOfBenefitProcedureComponent(String name, ExplanationOfBenefit.ProcedureComponent element) throws IOException {
21744    if (element != null) {
21745      composeElementAttributes(element);
21746      xml.enter(FHIR_NS, name);
21747      composeBackboneElements(element);
21748      if (element.hasSequenceElement()) {
21749        composePositiveInt("sequence", element.getSequenceElement());
21750      }
21751      if (element.hasDateElement()) {
21752        composeDateTime("date", element.getDateElement());
21753      }
21754      if (element.hasProcedure()) {
21755        composeType("procedure", element.getProcedure());
21756      }      composeElementClose(element);
21757      xml.exit(FHIR_NS, name);
21758    }
21759  }
21760
21761  protected void composeExplanationOfBenefitCoverageComponent(String name, ExplanationOfBenefit.CoverageComponent element) throws IOException {
21762    if (element != null) {
21763      composeElementAttributes(element);
21764      xml.enter(FHIR_NS, name);
21765      composeBackboneElements(element);
21766      if (element.hasCoverage()) {
21767        composeType("coverage", element.getCoverage());
21768      }      if (element.hasPreAuthRef()) { 
21769        for (StringType e : element.getPreAuthRef()) 
21770          composeString("preAuthRef", e);
21771      }
21772      composeElementClose(element);
21773      xml.exit(FHIR_NS, name);
21774    }
21775  }
21776
21777  protected void composeExplanationOfBenefitOnsetComponent(String name, ExplanationOfBenefit.OnsetComponent element) throws IOException {
21778    if (element != null) {
21779      composeElementAttributes(element);
21780      xml.enter(FHIR_NS, name);
21781      composeBackboneElements(element);
21782      if (element.hasTime()) {
21783        composeType("time", element.getTime());
21784      }      if (element.hasType()) {
21785        composeCoding("type", element.getType());
21786      }
21787      composeElementClose(element);
21788      xml.exit(FHIR_NS, name);
21789    }
21790  }
21791
21792  protected void composeExplanationOfBenefitItemsComponent(String name, ExplanationOfBenefit.ItemsComponent element) throws IOException {
21793    if (element != null) {
21794      composeElementAttributes(element);
21795      xml.enter(FHIR_NS, name);
21796      composeBackboneElements(element);
21797      if (element.hasSequenceElement()) {
21798        composePositiveInt("sequence", element.getSequenceElement());
21799      }
21800      if (element.hasType()) {
21801        composeCoding("type", element.getType());
21802      }
21803      if (element.hasProvider()) {
21804        composeType("provider", element.getProvider());
21805      }      if (element.hasSupervisor()) {
21806        composeType("supervisor", element.getSupervisor());
21807      }      if (element.hasProviderQualification()) {
21808        composeCoding("providerQualification", element.getProviderQualification());
21809      }
21810      if (element.hasDiagnosisLinkId()) { 
21811        for (PositiveIntType e : element.getDiagnosisLinkId()) 
21812          composePositiveInt("diagnosisLinkId", e);
21813      }
21814      if (element.hasService()) {
21815        composeCoding("service", element.getService());
21816      }
21817      if (element.hasServiceModifier()) { 
21818        for (Coding e : element.getServiceModifier()) 
21819          composeCoding("serviceModifier", e);
21820      }
21821      if (element.hasModifier()) { 
21822        for (Coding e : element.getModifier()) 
21823          composeCoding("modifier", e);
21824      }
21825      if (element.hasProgramCode()) { 
21826        for (Coding e : element.getProgramCode()) 
21827          composeCoding("programCode", e);
21828      }
21829      if (element.hasServiced()) {
21830        composeType("serviced", element.getServiced());
21831      }      if (element.hasPlace()) {
21832        composeCoding("place", element.getPlace());
21833      }
21834      if (element.hasQuantity()) {
21835        composeSimpleQuantity("quantity", element.getQuantity());
21836      }
21837      if (element.hasUnitPrice()) {
21838        composeMoney("unitPrice", element.getUnitPrice());
21839      }
21840      if (element.hasFactorElement()) {
21841        composeDecimal("factor", element.getFactorElement());
21842      }
21843      if (element.hasPointsElement()) {
21844        composeDecimal("points", element.getPointsElement());
21845      }
21846      if (element.hasNet()) {
21847        composeMoney("net", element.getNet());
21848      }
21849      if (element.hasUdi()) { 
21850        for (Reference e : element.getUdi()) 
21851          composeReference("udi", e);
21852      }
21853      if (element.hasBodySite()) {
21854        composeCoding("bodySite", element.getBodySite());
21855      }
21856      if (element.hasSubSite()) { 
21857        for (Coding e : element.getSubSite()) 
21858          composeCoding("subSite", e);
21859      }
21860      if (element.hasNoteNumber()) { 
21861        for (PositiveIntType e : element.getNoteNumber()) 
21862          composePositiveInt("noteNumber", e);
21863      }
21864      if (element.hasAdjudication()) { 
21865        for (ExplanationOfBenefit.ItemAdjudicationComponent e : element.getAdjudication()) 
21866          composeExplanationOfBenefitItemAdjudicationComponent("adjudication", e);
21867      }
21868      if (element.hasDetail()) { 
21869        for (ExplanationOfBenefit.DetailComponent e : element.getDetail()) 
21870          composeExplanationOfBenefitDetailComponent("detail", e);
21871      }
21872      if (element.hasProsthesis()) {
21873        composeExplanationOfBenefitProsthesisComponent("prosthesis", element.getProsthesis());
21874      }
21875      composeElementClose(element);
21876      xml.exit(FHIR_NS, name);
21877    }
21878  }
21879
21880  protected void composeExplanationOfBenefitItemAdjudicationComponent(String name, ExplanationOfBenefit.ItemAdjudicationComponent element) throws IOException {
21881    if (element != null) {
21882      composeElementAttributes(element);
21883      xml.enter(FHIR_NS, name);
21884      composeBackboneElements(element);
21885      if (element.hasCategory()) {
21886        composeCoding("category", element.getCategory());
21887      }
21888      if (element.hasReason()) {
21889        composeCoding("reason", element.getReason());
21890      }
21891      if (element.hasAmount()) {
21892        composeMoney("amount", element.getAmount());
21893      }
21894      if (element.hasValueElement()) {
21895        composeDecimal("value", element.getValueElement());
21896      }
21897      composeElementClose(element);
21898      xml.exit(FHIR_NS, name);
21899    }
21900  }
21901
21902  protected void composeExplanationOfBenefitDetailComponent(String name, ExplanationOfBenefit.DetailComponent element) throws IOException {
21903    if (element != null) {
21904      composeElementAttributes(element);
21905      xml.enter(FHIR_NS, name);
21906      composeBackboneElements(element);
21907      if (element.hasSequenceElement()) {
21908        composePositiveInt("sequence", element.getSequenceElement());
21909      }
21910      if (element.hasType()) {
21911        composeCoding("type", element.getType());
21912      }
21913      if (element.hasService()) {
21914        composeCoding("service", element.getService());
21915      }
21916      if (element.hasProgramCode()) { 
21917        for (Coding e : element.getProgramCode()) 
21918          composeCoding("programCode", e);
21919      }
21920      if (element.hasQuantity()) {
21921        composeSimpleQuantity("quantity", element.getQuantity());
21922      }
21923      if (element.hasUnitPrice()) {
21924        composeMoney("unitPrice", element.getUnitPrice());
21925      }
21926      if (element.hasFactorElement()) {
21927        composeDecimal("factor", element.getFactorElement());
21928      }
21929      if (element.hasPointsElement()) {
21930        composeDecimal("points", element.getPointsElement());
21931      }
21932      if (element.hasNet()) {
21933        composeMoney("net", element.getNet());
21934      }
21935      if (element.hasUdi()) { 
21936        for (Reference e : element.getUdi()) 
21937          composeReference("udi", e);
21938      }
21939      if (element.hasAdjudication()) { 
21940        for (ExplanationOfBenefit.DetailAdjudicationComponent e : element.getAdjudication()) 
21941          composeExplanationOfBenefitDetailAdjudicationComponent("adjudication", e);
21942      }
21943      if (element.hasSubDetail()) { 
21944        for (ExplanationOfBenefit.SubDetailComponent e : element.getSubDetail()) 
21945          composeExplanationOfBenefitSubDetailComponent("subDetail", e);
21946      }
21947      composeElementClose(element);
21948      xml.exit(FHIR_NS, name);
21949    }
21950  }
21951
21952  protected void composeExplanationOfBenefitDetailAdjudicationComponent(String name, ExplanationOfBenefit.DetailAdjudicationComponent element) throws IOException {
21953    if (element != null) {
21954      composeElementAttributes(element);
21955      xml.enter(FHIR_NS, name);
21956      composeBackboneElements(element);
21957      if (element.hasCategory()) {
21958        composeCoding("category", element.getCategory());
21959      }
21960      if (element.hasReason()) {
21961        composeCoding("reason", element.getReason());
21962      }
21963      if (element.hasAmount()) {
21964        composeMoney("amount", element.getAmount());
21965      }
21966      if (element.hasValueElement()) {
21967        composeDecimal("value", element.getValueElement());
21968      }
21969      composeElementClose(element);
21970      xml.exit(FHIR_NS, name);
21971    }
21972  }
21973
21974  protected void composeExplanationOfBenefitSubDetailComponent(String name, ExplanationOfBenefit.SubDetailComponent element) throws IOException {
21975    if (element != null) {
21976      composeElementAttributes(element);
21977      xml.enter(FHIR_NS, name);
21978      composeBackboneElements(element);
21979      if (element.hasSequenceElement()) {
21980        composePositiveInt("sequence", element.getSequenceElement());
21981      }
21982      if (element.hasType()) {
21983        composeCoding("type", element.getType());
21984      }
21985      if (element.hasService()) {
21986        composeCoding("service", element.getService());
21987      }
21988      if (element.hasProgramCode()) { 
21989        for (Coding e : element.getProgramCode()) 
21990          composeCoding("programCode", e);
21991      }
21992      if (element.hasQuantity()) {
21993        composeSimpleQuantity("quantity", element.getQuantity());
21994      }
21995      if (element.hasUnitPrice()) {
21996        composeMoney("unitPrice", element.getUnitPrice());
21997      }
21998      if (element.hasFactorElement()) {
21999        composeDecimal("factor", element.getFactorElement());
22000      }
22001      if (element.hasPointsElement()) {
22002        composeDecimal("points", element.getPointsElement());
22003      }
22004      if (element.hasNet()) {
22005        composeMoney("net", element.getNet());
22006      }
22007      if (element.hasUdi()) { 
22008        for (Reference e : element.getUdi()) 
22009          composeReference("udi", e);
22010      }
22011      if (element.hasAdjudication()) { 
22012        for (ExplanationOfBenefit.SubDetailAdjudicationComponent e : element.getAdjudication()) 
22013          composeExplanationOfBenefitSubDetailAdjudicationComponent("adjudication", e);
22014      }
22015      composeElementClose(element);
22016      xml.exit(FHIR_NS, name);
22017    }
22018  }
22019
22020  protected void composeExplanationOfBenefitSubDetailAdjudicationComponent(String name, ExplanationOfBenefit.SubDetailAdjudicationComponent element) throws IOException {
22021    if (element != null) {
22022      composeElementAttributes(element);
22023      xml.enter(FHIR_NS, name);
22024      composeBackboneElements(element);
22025      if (element.hasCategory()) {
22026        composeCoding("category", element.getCategory());
22027      }
22028      if (element.hasReason()) {
22029        composeCoding("reason", element.getReason());
22030      }
22031      if (element.hasAmount()) {
22032        composeMoney("amount", element.getAmount());
22033      }
22034      if (element.hasValueElement()) {
22035        composeDecimal("value", element.getValueElement());
22036      }
22037      composeElementClose(element);
22038      xml.exit(FHIR_NS, name);
22039    }
22040  }
22041
22042  protected void composeExplanationOfBenefitProsthesisComponent(String name, ExplanationOfBenefit.ProsthesisComponent element) throws IOException {
22043    if (element != null) {
22044      composeElementAttributes(element);
22045      xml.enter(FHIR_NS, name);
22046      composeBackboneElements(element);
22047      if (element.hasInitialElement()) {
22048        composeBoolean("initial", element.getInitialElement());
22049      }
22050      if (element.hasPriorDateElement()) {
22051        composeDate("priorDate", element.getPriorDateElement());
22052      }
22053      if (element.hasPriorMaterial()) {
22054        composeCoding("priorMaterial", element.getPriorMaterial());
22055      }
22056      composeElementClose(element);
22057      xml.exit(FHIR_NS, name);
22058    }
22059  }
22060
22061  protected void composeExplanationOfBenefitAddedItemComponent(String name, ExplanationOfBenefit.AddedItemComponent element) throws IOException {
22062    if (element != null) {
22063      composeElementAttributes(element);
22064      xml.enter(FHIR_NS, name);
22065      composeBackboneElements(element);
22066      if (element.hasSequenceLinkId()) { 
22067        for (PositiveIntType e : element.getSequenceLinkId()) 
22068          composePositiveInt("sequenceLinkId", e);
22069      }
22070      if (element.hasService()) {
22071        composeCoding("service", element.getService());
22072      }
22073      if (element.hasFee()) {
22074        composeMoney("fee", element.getFee());
22075      }
22076      if (element.hasNoteNumberLinkId()) { 
22077        for (PositiveIntType e : element.getNoteNumberLinkId()) 
22078          composePositiveInt("noteNumberLinkId", e);
22079      }
22080      if (element.hasAdjudication()) { 
22081        for (ExplanationOfBenefit.AddedItemAdjudicationComponent e : element.getAdjudication()) 
22082          composeExplanationOfBenefitAddedItemAdjudicationComponent("adjudication", e);
22083      }
22084      if (element.hasDetail()) { 
22085        for (ExplanationOfBenefit.AddedItemsDetailComponent e : element.getDetail()) 
22086          composeExplanationOfBenefitAddedItemsDetailComponent("detail", e);
22087      }
22088      composeElementClose(element);
22089      xml.exit(FHIR_NS, name);
22090    }
22091  }
22092
22093  protected void composeExplanationOfBenefitAddedItemAdjudicationComponent(String name, ExplanationOfBenefit.AddedItemAdjudicationComponent element) throws IOException {
22094    if (element != null) {
22095      composeElementAttributes(element);
22096      xml.enter(FHIR_NS, name);
22097      composeBackboneElements(element);
22098      if (element.hasCategory()) {
22099        composeCoding("category", element.getCategory());
22100      }
22101      if (element.hasReason()) {
22102        composeCoding("reason", element.getReason());
22103      }
22104      if (element.hasAmount()) {
22105        composeMoney("amount", element.getAmount());
22106      }
22107      if (element.hasValueElement()) {
22108        composeDecimal("value", element.getValueElement());
22109      }
22110      composeElementClose(element);
22111      xml.exit(FHIR_NS, name);
22112    }
22113  }
22114
22115  protected void composeExplanationOfBenefitAddedItemsDetailComponent(String name, ExplanationOfBenefit.AddedItemsDetailComponent element) throws IOException {
22116    if (element != null) {
22117      composeElementAttributes(element);
22118      xml.enter(FHIR_NS, name);
22119      composeBackboneElements(element);
22120      if (element.hasService()) {
22121        composeCoding("service", element.getService());
22122      }
22123      if (element.hasFee()) {
22124        composeMoney("fee", element.getFee());
22125      }
22126      if (element.hasAdjudication()) { 
22127        for (ExplanationOfBenefit.AddedItemDetailAdjudicationComponent e : element.getAdjudication()) 
22128          composeExplanationOfBenefitAddedItemDetailAdjudicationComponent("adjudication", e);
22129      }
22130      composeElementClose(element);
22131      xml.exit(FHIR_NS, name);
22132    }
22133  }
22134
22135  protected void composeExplanationOfBenefitAddedItemDetailAdjudicationComponent(String name, ExplanationOfBenefit.AddedItemDetailAdjudicationComponent element) throws IOException {
22136    if (element != null) {
22137      composeElementAttributes(element);
22138      xml.enter(FHIR_NS, name);
22139      composeBackboneElements(element);
22140      if (element.hasCategory()) {
22141        composeCoding("category", element.getCategory());
22142      }
22143      if (element.hasReason()) {
22144        composeCoding("reason", element.getReason());
22145      }
22146      if (element.hasAmount()) {
22147        composeMoney("amount", element.getAmount());
22148      }
22149      if (element.hasValueElement()) {
22150        composeDecimal("value", element.getValueElement());
22151      }
22152      composeElementClose(element);
22153      xml.exit(FHIR_NS, name);
22154    }
22155  }
22156
22157  protected void composeExplanationOfBenefitMissingTeethComponent(String name, ExplanationOfBenefit.MissingTeethComponent element) throws IOException {
22158    if (element != null) {
22159      composeElementAttributes(element);
22160      xml.enter(FHIR_NS, name);
22161      composeBackboneElements(element);
22162      if (element.hasTooth()) {
22163        composeCoding("tooth", element.getTooth());
22164      }
22165      if (element.hasReason()) {
22166        composeCoding("reason", element.getReason());
22167      }
22168      if (element.hasExtractionDateElement()) {
22169        composeDate("extractionDate", element.getExtractionDateElement());
22170      }
22171      composeElementClose(element);
22172      xml.exit(FHIR_NS, name);
22173    }
22174  }
22175
22176  protected void composeExplanationOfBenefitNotesComponent(String name, ExplanationOfBenefit.NotesComponent element) throws IOException {
22177    if (element != null) {
22178      composeElementAttributes(element);
22179      xml.enter(FHIR_NS, name);
22180      composeBackboneElements(element);
22181      if (element.hasNumberElement()) {
22182        composePositiveInt("number", element.getNumberElement());
22183      }
22184      if (element.hasType()) {
22185        composeCoding("type", element.getType());
22186      }
22187      if (element.hasTextElement()) {
22188        composeString("text", element.getTextElement());
22189      }
22190      composeElementClose(element);
22191      xml.exit(FHIR_NS, name);
22192    }
22193  }
22194
22195  protected void composeExplanationOfBenefitBenefitBalanceComponent(String name, ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
22196    if (element != null) {
22197      composeElementAttributes(element);
22198      xml.enter(FHIR_NS, name);
22199      composeBackboneElements(element);
22200      if (element.hasCategory()) {
22201        composeCoding("category", element.getCategory());
22202      }
22203      if (element.hasSubCategory()) {
22204        composeCoding("subCategory", element.getSubCategory());
22205      }
22206      if (element.hasNetwork()) {
22207        composeCoding("network", element.getNetwork());
22208      }
22209      if (element.hasUnit()) {
22210        composeCoding("unit", element.getUnit());
22211      }
22212      if (element.hasTerm()) {
22213        composeCoding("term", element.getTerm());
22214      }
22215      if (element.hasFinancial()) { 
22216        for (ExplanationOfBenefit.BenefitComponent e : element.getFinancial()) 
22217          composeExplanationOfBenefitBenefitComponent("financial", e);
22218      }
22219      composeElementClose(element);
22220      xml.exit(FHIR_NS, name);
22221    }
22222  }
22223
22224  protected void composeExplanationOfBenefitBenefitComponent(String name, ExplanationOfBenefit.BenefitComponent element) throws IOException {
22225    if (element != null) {
22226      composeElementAttributes(element);
22227      xml.enter(FHIR_NS, name);
22228      composeBackboneElements(element);
22229      if (element.hasType()) {
22230        composeCoding("type", element.getType());
22231      }
22232      if (element.hasBenefit()) {
22233        composeType("benefit", element.getBenefit());
22234      }      if (element.hasBenefitUsed()) {
22235        composeType("benefitUsed", element.getBenefitUsed());
22236      }      composeElementClose(element);
22237      xml.exit(FHIR_NS, name);
22238    }
22239  }
22240
22241  protected void composeFamilyMemberHistory(String name, FamilyMemberHistory element) throws IOException {
22242    if (element != null) {
22243      composeDomainResourceAttributes(element);
22244      xml.enter(FHIR_NS, name);
22245      composeDomainResourceElements(element);
22246      if (element.hasIdentifier()) { 
22247        for (Identifier e : element.getIdentifier()) 
22248          composeIdentifier("identifier", e);
22249      }
22250      if (element.hasPatient()) {
22251        composeReference("patient", element.getPatient());
22252      }
22253      if (element.hasDateElement()) {
22254        composeDateTime("date", element.getDateElement());
22255      }
22256      if (element.hasStatusElement())
22257        composeEnumeration("status", element.getStatusElement(), new FamilyMemberHistory.FamilyHistoryStatusEnumFactory());
22258      if (element.hasNameElement()) {
22259        composeString("name", element.getNameElement());
22260      }
22261      if (element.hasRelationship()) {
22262        composeCodeableConcept("relationship", element.getRelationship());
22263      }
22264      if (element.hasGenderElement())
22265        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
22266      if (element.hasBorn()) {
22267        composeType("born", element.getBorn());
22268      }      if (element.hasAge()) {
22269        composeType("age", element.getAge());
22270      }      if (element.hasDeceased()) {
22271        composeType("deceased", element.getDeceased());
22272      }      if (element.hasNote()) {
22273        composeAnnotation("note", element.getNote());
22274      }
22275      if (element.hasCondition()) { 
22276        for (FamilyMemberHistory.FamilyMemberHistoryConditionComponent e : element.getCondition()) 
22277          composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent("condition", e);
22278      }
22279      composeElementClose(element);
22280      xml.exit(FHIR_NS, name);
22281    }
22282  }
22283
22284  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
22285    if (element != null) {
22286      composeElementAttributes(element);
22287      xml.enter(FHIR_NS, name);
22288      composeBackboneElements(element);
22289      if (element.hasCode()) {
22290        composeCodeableConcept("code", element.getCode());
22291      }
22292      if (element.hasOutcome()) {
22293        composeCodeableConcept("outcome", element.getOutcome());
22294      }
22295      if (element.hasOnset()) {
22296        composeType("onset", element.getOnset());
22297      }      if (element.hasNote()) {
22298        composeAnnotation("note", element.getNote());
22299      }
22300      composeElementClose(element);
22301      xml.exit(FHIR_NS, name);
22302    }
22303  }
22304
22305  protected void composeFlag(String name, Flag element) throws IOException {
22306    if (element != null) {
22307      composeDomainResourceAttributes(element);
22308      xml.enter(FHIR_NS, name);
22309      composeDomainResourceElements(element);
22310      if (element.hasIdentifier()) { 
22311        for (Identifier e : element.getIdentifier()) 
22312          composeIdentifier("identifier", e);
22313      }
22314      if (element.hasCategory()) {
22315        composeCodeableConcept("category", element.getCategory());
22316      }
22317      if (element.hasStatusElement())
22318        composeEnumeration("status", element.getStatusElement(), new Flag.FlagStatusEnumFactory());
22319      if (element.hasPeriod()) {
22320        composePeriod("period", element.getPeriod());
22321      }
22322      if (element.hasSubject()) {
22323        composeReference("subject", element.getSubject());
22324      }
22325      if (element.hasEncounter()) {
22326        composeReference("encounter", element.getEncounter());
22327      }
22328      if (element.hasAuthor()) {
22329        composeReference("author", element.getAuthor());
22330      }
22331      if (element.hasCode()) {
22332        composeCodeableConcept("code", element.getCode());
22333      }
22334      composeElementClose(element);
22335      xml.exit(FHIR_NS, name);
22336    }
22337  }
22338
22339  protected void composeGoal(String name, Goal element) throws IOException {
22340    if (element != null) {
22341      composeDomainResourceAttributes(element);
22342      xml.enter(FHIR_NS, name);
22343      composeDomainResourceElements(element);
22344      if (element.hasIdentifier()) { 
22345        for (Identifier e : element.getIdentifier()) 
22346          composeIdentifier("identifier", e);
22347      }
22348      if (element.hasSubject()) {
22349        composeReference("subject", element.getSubject());
22350      }
22351      if (element.hasStart()) {
22352        composeType("start", element.getStart());
22353      }      if (element.hasTarget()) {
22354        composeType("target", element.getTarget());
22355      }      if (element.hasCategory()) { 
22356        for (CodeableConcept e : element.getCategory()) 
22357          composeCodeableConcept("category", e);
22358      }
22359      if (element.hasDescriptionElement()) {
22360        composeString("description", element.getDescriptionElement());
22361      }
22362      if (element.hasStatusElement())
22363        composeEnumeration("status", element.getStatusElement(), new Goal.GoalStatusEnumFactory());
22364      if (element.hasStatusDateElement()) {
22365        composeDate("statusDate", element.getStatusDateElement());
22366      }
22367      if (element.hasStatusReason()) {
22368        composeCodeableConcept("statusReason", element.getStatusReason());
22369      }
22370      if (element.hasAuthor()) {
22371        composeReference("author", element.getAuthor());
22372      }
22373      if (element.hasPriority()) {
22374        composeCodeableConcept("priority", element.getPriority());
22375      }
22376      if (element.hasAddresses()) { 
22377        for (Reference e : element.getAddresses()) 
22378          composeReference("addresses", e);
22379      }
22380      if (element.hasNote()) { 
22381        for (Annotation e : element.getNote()) 
22382          composeAnnotation("note", e);
22383      }
22384      if (element.hasOutcome()) { 
22385        for (Goal.GoalOutcomeComponent e : element.getOutcome()) 
22386          composeGoalGoalOutcomeComponent("outcome", e);
22387      }
22388      composeElementClose(element);
22389      xml.exit(FHIR_NS, name);
22390    }
22391  }
22392
22393  protected void composeGoalGoalOutcomeComponent(String name, Goal.GoalOutcomeComponent element) throws IOException {
22394    if (element != null) {
22395      composeElementAttributes(element);
22396      xml.enter(FHIR_NS, name);
22397      composeBackboneElements(element);
22398      if (element.hasResult()) {
22399        composeType("result", element.getResult());
22400      }      composeElementClose(element);
22401      xml.exit(FHIR_NS, name);
22402    }
22403  }
22404
22405  protected void composeGroup(String name, Group element) throws IOException {
22406    if (element != null) {
22407      composeDomainResourceAttributes(element);
22408      xml.enter(FHIR_NS, name);
22409      composeDomainResourceElements(element);
22410      if (element.hasIdentifier()) { 
22411        for (Identifier e : element.getIdentifier()) 
22412          composeIdentifier("identifier", e);
22413      }
22414      if (element.hasTypeElement())
22415        composeEnumeration("type", element.getTypeElement(), new Group.GroupTypeEnumFactory());
22416      if (element.hasActualElement()) {
22417        composeBoolean("actual", element.getActualElement());
22418      }
22419      if (element.hasActiveElement()) {
22420        composeBoolean("active", element.getActiveElement());
22421      }
22422      if (element.hasCode()) {
22423        composeCodeableConcept("code", element.getCode());
22424      }
22425      if (element.hasNameElement()) {
22426        composeString("name", element.getNameElement());
22427      }
22428      if (element.hasQuantityElement()) {
22429        composeUnsignedInt("quantity", element.getQuantityElement());
22430      }
22431      if (element.hasCharacteristic()) { 
22432        for (Group.GroupCharacteristicComponent e : element.getCharacteristic()) 
22433          composeGroupGroupCharacteristicComponent("characteristic", e);
22434      }
22435      if (element.hasMember()) { 
22436        for (Group.GroupMemberComponent e : element.getMember()) 
22437          composeGroupGroupMemberComponent("member", e);
22438      }
22439      composeElementClose(element);
22440      xml.exit(FHIR_NS, name);
22441    }
22442  }
22443
22444  protected void composeGroupGroupCharacteristicComponent(String name, Group.GroupCharacteristicComponent element) throws IOException {
22445    if (element != null) {
22446      composeElementAttributes(element);
22447      xml.enter(FHIR_NS, name);
22448      composeBackboneElements(element);
22449      if (element.hasCode()) {
22450        composeCodeableConcept("code", element.getCode());
22451      }
22452      if (element.hasValue()) {
22453        composeType("value", element.getValue());
22454      }      if (element.hasExcludeElement()) {
22455        composeBoolean("exclude", element.getExcludeElement());
22456      }
22457      if (element.hasPeriod()) {
22458        composePeriod("period", element.getPeriod());
22459      }
22460      composeElementClose(element);
22461      xml.exit(FHIR_NS, name);
22462    }
22463  }
22464
22465  protected void composeGroupGroupMemberComponent(String name, Group.GroupMemberComponent element) throws IOException {
22466    if (element != null) {
22467      composeElementAttributes(element);
22468      xml.enter(FHIR_NS, name);
22469      composeBackboneElements(element);
22470      if (element.hasEntity()) {
22471        composeReference("entity", element.getEntity());
22472      }
22473      if (element.hasPeriod()) {
22474        composePeriod("period", element.getPeriod());
22475      }
22476      if (element.hasInactiveElement()) {
22477        composeBoolean("inactive", element.getInactiveElement());
22478      }
22479      composeElementClose(element);
22480      xml.exit(FHIR_NS, name);
22481    }
22482  }
22483
22484  protected void composeGuidanceResponse(String name, GuidanceResponse element) throws IOException {
22485    if (element != null) {
22486      composeDomainResourceAttributes(element);
22487      xml.enter(FHIR_NS, name);
22488      composeDomainResourceElements(element);
22489      if (element.hasRequestIdElement()) {
22490        composeString("requestId", element.getRequestIdElement());
22491      }
22492      if (element.hasModule()) {
22493        composeReference("module", element.getModule());
22494      }
22495      if (element.hasStatusElement())
22496        composeEnumeration("status", element.getStatusElement(), new GuidanceResponse.GuidanceResponseStatusEnumFactory());
22497      if (element.hasEvaluationMessage()) { 
22498        for (Reference e : element.getEvaluationMessage()) 
22499          composeReference("evaluationMessage", e);
22500      }
22501      if (element.hasOutputParameters()) {
22502        composeReference("outputParameters", element.getOutputParameters());
22503      }
22504      if (element.hasAction()) { 
22505        for (GuidanceResponse.GuidanceResponseActionComponent e : element.getAction()) 
22506          composeGuidanceResponseGuidanceResponseActionComponent("action", e);
22507      }
22508      if (element.hasDataRequirement()) { 
22509        for (DataRequirement e : element.getDataRequirement()) 
22510          composeDataRequirement("dataRequirement", e);
22511      }
22512      composeElementClose(element);
22513      xml.exit(FHIR_NS, name);
22514    }
22515  }
22516
22517  protected void composeGuidanceResponseGuidanceResponseActionComponent(String name, GuidanceResponse.GuidanceResponseActionComponent element) throws IOException {
22518    if (element != null) {
22519      composeElementAttributes(element);
22520      xml.enter(FHIR_NS, name);
22521      composeBackboneElements(element);
22522      if (element.hasActionIdentifier()) {
22523        composeIdentifier("actionIdentifier", element.getActionIdentifier());
22524      }
22525      if (element.hasLabelElement()) {
22526        composeString("label", element.getLabelElement());
22527      }
22528      if (element.hasTitleElement()) {
22529        composeString("title", element.getTitleElement());
22530      }
22531      if (element.hasDescriptionElement()) {
22532        composeString("description", element.getDescriptionElement());
22533      }
22534      if (element.hasTextEquivalentElement()) {
22535        composeString("textEquivalent", element.getTextEquivalentElement());
22536      }
22537      if (element.hasConcept()) { 
22538        for (CodeableConcept e : element.getConcept()) 
22539          composeCodeableConcept("concept", e);
22540      }
22541      if (element.hasSupportingEvidence()) { 
22542        for (Attachment e : element.getSupportingEvidence()) 
22543          composeAttachment("supportingEvidence", e);
22544      }
22545      if (element.hasRelatedAction()) {
22546        composeGuidanceResponseGuidanceResponseActionRelatedActionComponent("relatedAction", element.getRelatedAction());
22547      }
22548      if (element.hasDocumentation()) { 
22549        for (Attachment e : element.getDocumentation()) 
22550          composeAttachment("documentation", e);
22551      }
22552      if (element.hasParticipant()) { 
22553        for (Reference e : element.getParticipant()) 
22554          composeReference("participant", e);
22555      }
22556      if (element.hasTypeElement()) {
22557        composeCode("type", element.getTypeElement());
22558      }
22559      if (element.hasBehavior()) { 
22560        for (GuidanceResponse.GuidanceResponseActionBehaviorComponent e : element.getBehavior()) 
22561          composeGuidanceResponseGuidanceResponseActionBehaviorComponent("behavior", e);
22562      }
22563      if (element.hasResource()) {
22564        composeReference("resource", element.getResource());
22565      }
22566      if (element.hasAction()) { 
22567        for (GuidanceResponse.GuidanceResponseActionComponent e : element.getAction()) 
22568          composeGuidanceResponseGuidanceResponseActionComponent("action", e);
22569      }
22570      composeElementClose(element);
22571      xml.exit(FHIR_NS, name);
22572    }
22573  }
22574
22575  protected void composeGuidanceResponseGuidanceResponseActionRelatedActionComponent(String name, GuidanceResponse.GuidanceResponseActionRelatedActionComponent element) throws IOException {
22576    if (element != null) {
22577      composeElementAttributes(element);
22578      xml.enter(FHIR_NS, name);
22579      composeBackboneElements(element);
22580      if (element.hasActionIdentifier()) {
22581        composeIdentifier("actionIdentifier", element.getActionIdentifier());
22582      }
22583      if (element.hasRelationshipElement()) {
22584        composeCode("relationship", element.getRelationshipElement());
22585      }
22586      if (element.hasOffset()) {
22587        composeType("offset", element.getOffset());
22588      }      if (element.hasAnchorElement()) {
22589        composeCode("anchor", element.getAnchorElement());
22590      }
22591      composeElementClose(element);
22592      xml.exit(FHIR_NS, name);
22593    }
22594  }
22595
22596  protected void composeGuidanceResponseGuidanceResponseActionBehaviorComponent(String name, GuidanceResponse.GuidanceResponseActionBehaviorComponent element) throws IOException {
22597    if (element != null) {
22598      composeElementAttributes(element);
22599      xml.enter(FHIR_NS, name);
22600      composeBackboneElements(element);
22601      if (element.hasType()) {
22602        composeCoding("type", element.getType());
22603      }
22604      if (element.hasValue()) {
22605        composeCoding("value", element.getValue());
22606      }
22607      composeElementClose(element);
22608      xml.exit(FHIR_NS, name);
22609    }
22610  }
22611
22612  protected void composeHealthcareService(String name, HealthcareService element) throws IOException {
22613    if (element != null) {
22614      composeDomainResourceAttributes(element);
22615      xml.enter(FHIR_NS, name);
22616      composeDomainResourceElements(element);
22617      if (element.hasIdentifier()) { 
22618        for (Identifier e : element.getIdentifier()) 
22619          composeIdentifier("identifier", e);
22620      }
22621      if (element.hasProvidedBy()) {
22622        composeReference("providedBy", element.getProvidedBy());
22623      }
22624      if (element.hasServiceCategory()) {
22625        composeCodeableConcept("serviceCategory", element.getServiceCategory());
22626      }
22627      if (element.hasServiceType()) { 
22628        for (CodeableConcept e : element.getServiceType()) 
22629          composeCodeableConcept("serviceType", e);
22630      }
22631      if (element.hasSpecialty()) { 
22632        for (CodeableConcept e : element.getSpecialty()) 
22633          composeCodeableConcept("specialty", e);
22634      }
22635      if (element.hasLocation()) { 
22636        for (Reference e : element.getLocation()) 
22637          composeReference("location", e);
22638      }
22639      if (element.hasServiceNameElement()) {
22640        composeString("serviceName", element.getServiceNameElement());
22641      }
22642      if (element.hasCommentElement()) {
22643        composeString("comment", element.getCommentElement());
22644      }
22645      if (element.hasExtraDetailsElement()) {
22646        composeString("extraDetails", element.getExtraDetailsElement());
22647      }
22648      if (element.hasPhoto()) {
22649        composeAttachment("photo", element.getPhoto());
22650      }
22651      if (element.hasTelecom()) { 
22652        for (ContactPoint e : element.getTelecom()) 
22653          composeContactPoint("telecom", e);
22654      }
22655      if (element.hasCoverageArea()) { 
22656        for (Reference e : element.getCoverageArea()) 
22657          composeReference("coverageArea", e);
22658      }
22659      if (element.hasServiceProvisionCode()) { 
22660        for (CodeableConcept e : element.getServiceProvisionCode()) 
22661          composeCodeableConcept("serviceProvisionCode", e);
22662      }
22663      if (element.hasEligibility()) {
22664        composeCodeableConcept("eligibility", element.getEligibility());
22665      }
22666      if (element.hasEligibilityNoteElement()) {
22667        composeString("eligibilityNote", element.getEligibilityNoteElement());
22668      }
22669      if (element.hasProgramName()) { 
22670        for (StringType e : element.getProgramName()) 
22671          composeString("programName", e);
22672      }
22673      if (element.hasCharacteristic()) { 
22674        for (CodeableConcept e : element.getCharacteristic()) 
22675          composeCodeableConcept("characteristic", e);
22676      }
22677      if (element.hasReferralMethod()) { 
22678        for (CodeableConcept e : element.getReferralMethod()) 
22679          composeCodeableConcept("referralMethod", e);
22680      }
22681      if (element.hasPublicKeyElement()) {
22682        composeString("publicKey", element.getPublicKeyElement());
22683      }
22684      if (element.hasAppointmentRequiredElement()) {
22685        composeBoolean("appointmentRequired", element.getAppointmentRequiredElement());
22686      }
22687      if (element.hasAvailableTime()) { 
22688        for (HealthcareService.HealthcareServiceAvailableTimeComponent e : element.getAvailableTime()) 
22689          composeHealthcareServiceHealthcareServiceAvailableTimeComponent("availableTime", e);
22690      }
22691      if (element.hasNotAvailable()) { 
22692        for (HealthcareService.HealthcareServiceNotAvailableComponent e : element.getNotAvailable()) 
22693          composeHealthcareServiceHealthcareServiceNotAvailableComponent("notAvailable", e);
22694      }
22695      if (element.hasAvailabilityExceptionsElement()) {
22696        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
22697      }
22698      composeElementClose(element);
22699      xml.exit(FHIR_NS, name);
22700    }
22701  }
22702
22703  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponent(String name, HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
22704    if (element != null) {
22705      composeElementAttributes(element);
22706      xml.enter(FHIR_NS, name);
22707      composeBackboneElements(element);
22708        if (element.hasDaysOfWeek()) 
22709          for (Enumeration<HealthcareService.DaysOfWeek> e : element.getDaysOfWeek()) 
22710            composeEnumeration("daysOfWeek", e, new HealthcareService.DaysOfWeekEnumFactory());
22711      if (element.hasAllDayElement()) {
22712        composeBoolean("allDay", element.getAllDayElement());
22713      }
22714      if (element.hasAvailableStartTimeElement()) {
22715        composeTime("availableStartTime", element.getAvailableStartTimeElement());
22716      }
22717      if (element.hasAvailableEndTimeElement()) {
22718        composeTime("availableEndTime", element.getAvailableEndTimeElement());
22719      }
22720      composeElementClose(element);
22721      xml.exit(FHIR_NS, name);
22722    }
22723  }
22724
22725  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponent(String name, HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
22726    if (element != null) {
22727      composeElementAttributes(element);
22728      xml.enter(FHIR_NS, name);
22729      composeBackboneElements(element);
22730      if (element.hasDescriptionElement()) {
22731        composeString("description", element.getDescriptionElement());
22732      }
22733      if (element.hasDuring()) {
22734        composePeriod("during", element.getDuring());
22735      }
22736      composeElementClose(element);
22737      xml.exit(FHIR_NS, name);
22738    }
22739  }
22740
22741  protected void composeImagingExcerpt(String name, ImagingExcerpt element) throws IOException {
22742    if (element != null) {
22743      composeDomainResourceAttributes(element);
22744      xml.enter(FHIR_NS, name);
22745      composeDomainResourceElements(element);
22746      if (element.hasUidElement()) {
22747        composeOid("uid", element.getUidElement());
22748      }
22749      if (element.hasPatient()) {
22750        composeReference("patient", element.getPatient());
22751      }
22752      if (element.hasAuthoringTimeElement()) {
22753        composeDateTime("authoringTime", element.getAuthoringTimeElement());
22754      }
22755      if (element.hasAuthor()) {
22756        composeReference("author", element.getAuthor());
22757      }
22758      if (element.hasTitle()) {
22759        composeCodeableConcept("title", element.getTitle());
22760      }
22761      if (element.hasDescriptionElement()) {
22762        composeString("description", element.getDescriptionElement());
22763      }
22764      if (element.hasStudy()) { 
22765        for (ImagingExcerpt.StudyComponent e : element.getStudy()) 
22766          composeImagingExcerptStudyComponent("study", e);
22767      }
22768      composeElementClose(element);
22769      xml.exit(FHIR_NS, name);
22770    }
22771  }
22772
22773  protected void composeImagingExcerptStudyComponent(String name, ImagingExcerpt.StudyComponent element) throws IOException {
22774    if (element != null) {
22775      composeElementAttributes(element);
22776      xml.enter(FHIR_NS, name);
22777      composeBackboneElements(element);
22778      if (element.hasUidElement()) {
22779        composeOid("uid", element.getUidElement());
22780      }
22781      if (element.hasImagingStudy()) {
22782        composeReference("imagingStudy", element.getImagingStudy());
22783      }
22784      if (element.hasDicom()) { 
22785        for (ImagingExcerpt.StudyDicomComponent e : element.getDicom()) 
22786          composeImagingExcerptStudyDicomComponent("dicom", e);
22787      }
22788      if (element.hasViewable()) { 
22789        for (ImagingExcerpt.StudyViewableComponent e : element.getViewable()) 
22790          composeImagingExcerptStudyViewableComponent("viewable", e);
22791      }
22792      if (element.hasSeries()) { 
22793        for (ImagingExcerpt.SeriesComponent e : element.getSeries()) 
22794          composeImagingExcerptSeriesComponent("series", e);
22795      }
22796      composeElementClose(element);
22797      xml.exit(FHIR_NS, name);
22798    }
22799  }
22800
22801  protected void composeImagingExcerptStudyDicomComponent(String name, ImagingExcerpt.StudyDicomComponent element) throws IOException {
22802    if (element != null) {
22803      composeElementAttributes(element);
22804      xml.enter(FHIR_NS, name);
22805      composeBackboneElements(element);
22806      if (element.hasTypeElement())
22807        composeEnumeration("type", element.getTypeElement(), new ImagingExcerpt.DWebTypeEnumFactory());
22808      if (element.hasUrlElement()) {
22809        composeUri("url", element.getUrlElement());
22810      }
22811      composeElementClose(element);
22812      xml.exit(FHIR_NS, name);
22813    }
22814  }
22815
22816  protected void composeImagingExcerptStudyViewableComponent(String name, ImagingExcerpt.StudyViewableComponent element) throws IOException {
22817    if (element != null) {
22818      composeElementAttributes(element);
22819      xml.enter(FHIR_NS, name);
22820      composeBackboneElements(element);
22821      if (element.hasContentTypeElement()) {
22822        composeCode("contentType", element.getContentTypeElement());
22823      }
22824      if (element.hasHeightElement()) {
22825        composePositiveInt("height", element.getHeightElement());
22826      }
22827      if (element.hasWidthElement()) {
22828        composePositiveInt("width", element.getWidthElement());
22829      }
22830      if (element.hasFramesElement()) {
22831        composePositiveInt("frames", element.getFramesElement());
22832      }
22833      if (element.hasDurationElement()) {
22834        composeUnsignedInt("duration", element.getDurationElement());
22835      }
22836      if (element.hasSizeElement()) {
22837        composeUnsignedInt("size", element.getSizeElement());
22838      }
22839      if (element.hasTitleElement()) {
22840        composeString("title", element.getTitleElement());
22841      }
22842      if (element.hasUrlElement()) {
22843        composeUri("url", element.getUrlElement());
22844      }
22845      composeElementClose(element);
22846      xml.exit(FHIR_NS, name);
22847    }
22848  }
22849
22850  protected void composeImagingExcerptSeriesComponent(String name, ImagingExcerpt.SeriesComponent element) throws IOException {
22851    if (element != null) {
22852      composeElementAttributes(element);
22853      xml.enter(FHIR_NS, name);
22854      composeBackboneElements(element);
22855      if (element.hasUidElement()) {
22856        composeOid("uid", element.getUidElement());
22857      }
22858      if (element.hasDicom()) { 
22859        for (ImagingExcerpt.SeriesDicomComponent e : element.getDicom()) 
22860          composeImagingExcerptSeriesDicomComponent("dicom", e);
22861      }
22862      if (element.hasInstance()) { 
22863        for (ImagingExcerpt.InstanceComponent e : element.getInstance()) 
22864          composeImagingExcerptInstanceComponent("instance", e);
22865      }
22866      composeElementClose(element);
22867      xml.exit(FHIR_NS, name);
22868    }
22869  }
22870
22871  protected void composeImagingExcerptSeriesDicomComponent(String name, ImagingExcerpt.SeriesDicomComponent element) throws IOException {
22872    if (element != null) {
22873      composeElementAttributes(element);
22874      xml.enter(FHIR_NS, name);
22875      composeBackboneElements(element);
22876      if (element.hasTypeElement())
22877        composeEnumeration("type", element.getTypeElement(), new ImagingExcerpt.DWebTypeEnumFactory());
22878      if (element.hasUrlElement()) {
22879        composeUri("url", element.getUrlElement());
22880      }
22881      composeElementClose(element);
22882      xml.exit(FHIR_NS, name);
22883    }
22884  }
22885
22886  protected void composeImagingExcerptInstanceComponent(String name, ImagingExcerpt.InstanceComponent element) throws IOException {
22887    if (element != null) {
22888      composeElementAttributes(element);
22889      xml.enter(FHIR_NS, name);
22890      composeBackboneElements(element);
22891      if (element.hasSopClassElement()) {
22892        composeOid("sopClass", element.getSopClassElement());
22893      }
22894      if (element.hasUidElement()) {
22895        composeOid("uid", element.getUidElement());
22896      }
22897      if (element.hasDicom()) { 
22898        for (ImagingExcerpt.InstanceDicomComponent e : element.getDicom()) 
22899          composeImagingExcerptInstanceDicomComponent("dicom", e);
22900      }
22901      if (element.hasFrameNumbers()) { 
22902        for (UnsignedIntType e : element.getFrameNumbers()) 
22903          composeUnsignedInt("frameNumbers", e);
22904      }
22905      composeElementClose(element);
22906      xml.exit(FHIR_NS, name);
22907    }
22908  }
22909
22910  protected void composeImagingExcerptInstanceDicomComponent(String name, ImagingExcerpt.InstanceDicomComponent element) throws IOException {
22911    if (element != null) {
22912      composeElementAttributes(element);
22913      xml.enter(FHIR_NS, name);
22914      composeBackboneElements(element);
22915      if (element.hasTypeElement())
22916        composeEnumeration("type", element.getTypeElement(), new ImagingExcerpt.DWebTypeEnumFactory());
22917      if (element.hasUrlElement()) {
22918        composeUri("url", element.getUrlElement());
22919      }
22920      composeElementClose(element);
22921      xml.exit(FHIR_NS, name);
22922    }
22923  }
22924
22925  protected void composeImagingObjectSelection(String name, ImagingObjectSelection element) throws IOException {
22926    if (element != null) {
22927      composeDomainResourceAttributes(element);
22928      xml.enter(FHIR_NS, name);
22929      composeDomainResourceElements(element);
22930      if (element.hasUidElement()) {
22931        composeOid("uid", element.getUidElement());
22932      }
22933      if (element.hasPatient()) {
22934        composeReference("patient", element.getPatient());
22935      }
22936      if (element.hasAuthoringTimeElement()) {
22937        composeDateTime("authoringTime", element.getAuthoringTimeElement());
22938      }
22939      if (element.hasAuthor()) {
22940        composeReference("author", element.getAuthor());
22941      }
22942      if (element.hasTitle()) {
22943        composeCodeableConcept("title", element.getTitle());
22944      }
22945      if (element.hasDescriptionElement()) {
22946        composeString("description", element.getDescriptionElement());
22947      }
22948      if (element.hasStudy()) { 
22949        for (ImagingObjectSelection.StudyComponent e : element.getStudy()) 
22950          composeImagingObjectSelectionStudyComponent("study", e);
22951      }
22952      composeElementClose(element);
22953      xml.exit(FHIR_NS, name);
22954    }
22955  }
22956
22957  protected void composeImagingObjectSelectionStudyComponent(String name, ImagingObjectSelection.StudyComponent element) throws IOException {
22958    if (element != null) {
22959      composeElementAttributes(element);
22960      xml.enter(FHIR_NS, name);
22961      composeBackboneElements(element);
22962      if (element.hasUidElement()) {
22963        composeOid("uid", element.getUidElement());
22964      }
22965      if (element.hasUrlElement()) {
22966        composeUri("url", element.getUrlElement());
22967      }
22968      if (element.hasImagingStudy()) {
22969        composeReference("imagingStudy", element.getImagingStudy());
22970      }
22971      if (element.hasSeries()) { 
22972        for (ImagingObjectSelection.SeriesComponent e : element.getSeries()) 
22973          composeImagingObjectSelectionSeriesComponent("series", e);
22974      }
22975      composeElementClose(element);
22976      xml.exit(FHIR_NS, name);
22977    }
22978  }
22979
22980  protected void composeImagingObjectSelectionSeriesComponent(String name, ImagingObjectSelection.SeriesComponent element) throws IOException {
22981    if (element != null) {
22982      composeElementAttributes(element);
22983      xml.enter(FHIR_NS, name);
22984      composeBackboneElements(element);
22985      if (element.hasUidElement()) {
22986        composeOid("uid", element.getUidElement());
22987      }
22988      if (element.hasUrlElement()) {
22989        composeUri("url", element.getUrlElement());
22990      }
22991      if (element.hasInstance()) { 
22992        for (ImagingObjectSelection.InstanceComponent e : element.getInstance()) 
22993          composeImagingObjectSelectionInstanceComponent("instance", e);
22994      }
22995      composeElementClose(element);
22996      xml.exit(FHIR_NS, name);
22997    }
22998  }
22999
23000  protected void composeImagingObjectSelectionInstanceComponent(String name, ImagingObjectSelection.InstanceComponent element) throws IOException {
23001    if (element != null) {
23002      composeElementAttributes(element);
23003      xml.enter(FHIR_NS, name);
23004      composeBackboneElements(element);
23005      if (element.hasSopClassElement()) {
23006        composeOid("sopClass", element.getSopClassElement());
23007      }
23008      if (element.hasUidElement()) {
23009        composeOid("uid", element.getUidElement());
23010      }
23011      if (element.hasUrlElement()) {
23012        composeUri("url", element.getUrlElement());
23013      }
23014      if (element.hasFrame()) { 
23015        for (ImagingObjectSelection.FramesComponent e : element.getFrame()) 
23016          composeImagingObjectSelectionFramesComponent("frame", e);
23017      }
23018      composeElementClose(element);
23019      xml.exit(FHIR_NS, name);
23020    }
23021  }
23022
23023  protected void composeImagingObjectSelectionFramesComponent(String name, ImagingObjectSelection.FramesComponent element) throws IOException {
23024    if (element != null) {
23025      composeElementAttributes(element);
23026      xml.enter(FHIR_NS, name);
23027      composeBackboneElements(element);
23028      if (element.hasNumber()) { 
23029        for (UnsignedIntType e : element.getNumber()) 
23030          composeUnsignedInt("number", e);
23031      }
23032      if (element.hasUrlElement()) {
23033        composeUri("url", element.getUrlElement());
23034      }
23035      composeElementClose(element);
23036      xml.exit(FHIR_NS, name);
23037    }
23038  }
23039
23040  protected void composeImagingStudy(String name, ImagingStudy element) throws IOException {
23041    if (element != null) {
23042      composeDomainResourceAttributes(element);
23043      xml.enter(FHIR_NS, name);
23044      composeDomainResourceElements(element);
23045      if (element.hasUidElement()) {
23046        composeOid("uid", element.getUidElement());
23047      }
23048      if (element.hasAccession()) {
23049        composeIdentifier("accession", element.getAccession());
23050      }
23051      if (element.hasIdentifier()) { 
23052        for (Identifier e : element.getIdentifier()) 
23053          composeIdentifier("identifier", e);
23054      }
23055      if (element.hasAvailabilityElement())
23056        composeEnumeration("availability", element.getAvailabilityElement(), new ImagingStudy.InstanceAvailabilityEnumFactory());
23057      if (element.hasModalityList()) { 
23058        for (Coding e : element.getModalityList()) 
23059          composeCoding("modalityList", e);
23060      }
23061      if (element.hasPatient()) {
23062        composeReference("patient", element.getPatient());
23063      }
23064      if (element.hasStartedElement()) {
23065        composeDateTime("started", element.getStartedElement());
23066      }
23067      if (element.hasOrder()) { 
23068        for (Reference e : element.getOrder()) 
23069          composeReference("order", e);
23070      }
23071      if (element.hasReferrer()) {
23072        composeReference("referrer", element.getReferrer());
23073      }
23074      if (element.hasInterpreter()) {
23075        composeReference("interpreter", element.getInterpreter());
23076      }
23077      if (element.hasUrlElement()) {
23078        composeUri("url", element.getUrlElement());
23079      }
23080      if (element.hasNumberOfSeriesElement()) {
23081        composeUnsignedInt("numberOfSeries", element.getNumberOfSeriesElement());
23082      }
23083      if (element.hasNumberOfInstancesElement()) {
23084        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
23085      }
23086      if (element.hasProcedure()) { 
23087        for (Reference e : element.getProcedure()) 
23088          composeReference("procedure", e);
23089      }
23090      if (element.hasDescriptionElement()) {
23091        composeString("description", element.getDescriptionElement());
23092      }
23093      if (element.hasSeries()) { 
23094        for (ImagingStudy.ImagingStudySeriesComponent e : element.getSeries()) 
23095          composeImagingStudyImagingStudySeriesComponent("series", e);
23096      }
23097      composeElementClose(element);
23098      xml.exit(FHIR_NS, name);
23099    }
23100  }
23101
23102  protected void composeImagingStudyImagingStudySeriesComponent(String name, ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
23103    if (element != null) {
23104      composeElementAttributes(element);
23105      xml.enter(FHIR_NS, name);
23106      composeBackboneElements(element);
23107      if (element.hasUidElement()) {
23108        composeOid("uid", element.getUidElement());
23109      }
23110      if (element.hasNumberElement()) {
23111        composeUnsignedInt("number", element.getNumberElement());
23112      }
23113      if (element.hasModality()) {
23114        composeCoding("modality", element.getModality());
23115      }
23116      if (element.hasDescriptionElement()) {
23117        composeString("description", element.getDescriptionElement());
23118      }
23119      if (element.hasNumberOfInstancesElement()) {
23120        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
23121      }
23122      if (element.hasAvailabilityElement())
23123        composeEnumeration("availability", element.getAvailabilityElement(), new ImagingStudy.InstanceAvailabilityEnumFactory());
23124      if (element.hasUrlElement()) {
23125        composeUri("url", element.getUrlElement());
23126      }
23127      if (element.hasBodySite()) {
23128        composeCoding("bodySite", element.getBodySite());
23129      }
23130      if (element.hasLaterality()) {
23131        composeCoding("laterality", element.getLaterality());
23132      }
23133      if (element.hasStartedElement()) {
23134        composeDateTime("started", element.getStartedElement());
23135      }
23136      if (element.hasInstance()) { 
23137        for (ImagingStudy.ImagingStudySeriesInstanceComponent e : element.getInstance()) 
23138          composeImagingStudyImagingStudySeriesInstanceComponent("instance", e);
23139      }
23140      composeElementClose(element);
23141      xml.exit(FHIR_NS, name);
23142    }
23143  }
23144
23145  protected void composeImagingStudyImagingStudySeriesInstanceComponent(String name, ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
23146    if (element != null) {
23147      composeElementAttributes(element);
23148      xml.enter(FHIR_NS, name);
23149      composeBackboneElements(element);
23150      if (element.hasUidElement()) {
23151        composeOid("uid", element.getUidElement());
23152      }
23153      if (element.hasNumberElement()) {
23154        composeUnsignedInt("number", element.getNumberElement());
23155      }
23156      if (element.hasSopClassElement()) {
23157        composeOid("sopClass", element.getSopClassElement());
23158      }
23159      if (element.hasTypeElement()) {
23160        composeString("type", element.getTypeElement());
23161      }
23162      if (element.hasTitleElement()) {
23163        composeString("title", element.getTitleElement());
23164      }
23165      if (element.hasContent()) { 
23166        for (Attachment e : element.getContent()) 
23167          composeAttachment("content", e);
23168      }
23169      composeElementClose(element);
23170      xml.exit(FHIR_NS, name);
23171    }
23172  }
23173
23174  protected void composeImmunization(String name, Immunization element) throws IOException {
23175    if (element != null) {
23176      composeDomainResourceAttributes(element);
23177      xml.enter(FHIR_NS, name);
23178      composeDomainResourceElements(element);
23179      if (element.hasIdentifier()) { 
23180        for (Identifier e : element.getIdentifier()) 
23181          composeIdentifier("identifier", e);
23182      }
23183      if (element.hasStatusElement()) {
23184        composeCode("status", element.getStatusElement());
23185      }
23186      if (element.hasDateElement()) {
23187        composeDateTime("date", element.getDateElement());
23188      }
23189      if (element.hasVaccineCode()) {
23190        composeCodeableConcept("vaccineCode", element.getVaccineCode());
23191      }
23192      if (element.hasPatient()) {
23193        composeReference("patient", element.getPatient());
23194      }
23195      if (element.hasWasNotGivenElement()) {
23196        composeBoolean("wasNotGiven", element.getWasNotGivenElement());
23197      }
23198      if (element.hasReportedElement()) {
23199        composeBoolean("reported", element.getReportedElement());
23200      }
23201      if (element.hasPerformer()) {
23202        composeReference("performer", element.getPerformer());
23203      }
23204      if (element.hasRequester()) {
23205        composeReference("requester", element.getRequester());
23206      }
23207      if (element.hasEncounter()) {
23208        composeReference("encounter", element.getEncounter());
23209      }
23210      if (element.hasManufacturer()) {
23211        composeReference("manufacturer", element.getManufacturer());
23212      }
23213      if (element.hasLocation()) {
23214        composeReference("location", element.getLocation());
23215      }
23216      if (element.hasLotNumberElement()) {
23217        composeString("lotNumber", element.getLotNumberElement());
23218      }
23219      if (element.hasExpirationDateElement()) {
23220        composeDate("expirationDate", element.getExpirationDateElement());
23221      }
23222      if (element.hasSite()) {
23223        composeCodeableConcept("site", element.getSite());
23224      }
23225      if (element.hasRoute()) {
23226        composeCodeableConcept("route", element.getRoute());
23227      }
23228      if (element.hasDoseQuantity()) {
23229        composeSimpleQuantity("doseQuantity", element.getDoseQuantity());
23230      }
23231      if (element.hasNote()) { 
23232        for (Annotation e : element.getNote()) 
23233          composeAnnotation("note", e);
23234      }
23235      if (element.hasExplanation()) {
23236        composeImmunizationImmunizationExplanationComponent("explanation", element.getExplanation());
23237      }
23238      if (element.hasReaction()) { 
23239        for (Immunization.ImmunizationReactionComponent e : element.getReaction()) 
23240          composeImmunizationImmunizationReactionComponent("reaction", e);
23241      }
23242      if (element.hasVaccinationProtocol()) { 
23243        for (Immunization.ImmunizationVaccinationProtocolComponent e : element.getVaccinationProtocol()) 
23244          composeImmunizationImmunizationVaccinationProtocolComponent("vaccinationProtocol", e);
23245      }
23246      composeElementClose(element);
23247      xml.exit(FHIR_NS, name);
23248    }
23249  }
23250
23251  protected void composeImmunizationImmunizationExplanationComponent(String name, Immunization.ImmunizationExplanationComponent element) throws IOException {
23252    if (element != null) {
23253      composeElementAttributes(element);
23254      xml.enter(FHIR_NS, name);
23255      composeBackboneElements(element);
23256      if (element.hasReason()) { 
23257        for (CodeableConcept e : element.getReason()) 
23258          composeCodeableConcept("reason", e);
23259      }
23260      if (element.hasReasonNotGiven()) { 
23261        for (CodeableConcept e : element.getReasonNotGiven()) 
23262          composeCodeableConcept("reasonNotGiven", e);
23263      }
23264      composeElementClose(element);
23265      xml.exit(FHIR_NS, name);
23266    }
23267  }
23268
23269  protected void composeImmunizationImmunizationReactionComponent(String name, Immunization.ImmunizationReactionComponent element) throws IOException {
23270    if (element != null) {
23271      composeElementAttributes(element);
23272      xml.enter(FHIR_NS, name);
23273      composeBackboneElements(element);
23274      if (element.hasDateElement()) {
23275        composeDateTime("date", element.getDateElement());
23276      }
23277      if (element.hasDetail()) {
23278        composeReference("detail", element.getDetail());
23279      }
23280      if (element.hasReportedElement()) {
23281        composeBoolean("reported", element.getReportedElement());
23282      }
23283      composeElementClose(element);
23284      xml.exit(FHIR_NS, name);
23285    }
23286  }
23287
23288  protected void composeImmunizationImmunizationVaccinationProtocolComponent(String name, Immunization.ImmunizationVaccinationProtocolComponent element) throws IOException {
23289    if (element != null) {
23290      composeElementAttributes(element);
23291      xml.enter(FHIR_NS, name);
23292      composeBackboneElements(element);
23293      if (element.hasDoseSequenceElement()) {
23294        composePositiveInt("doseSequence", element.getDoseSequenceElement());
23295      }
23296      if (element.hasDescriptionElement()) {
23297        composeString("description", element.getDescriptionElement());
23298      }
23299      if (element.hasAuthority()) {
23300        composeReference("authority", element.getAuthority());
23301      }
23302      if (element.hasSeriesElement()) {
23303        composeString("series", element.getSeriesElement());
23304      }
23305      if (element.hasSeriesDosesElement()) {
23306        composePositiveInt("seriesDoses", element.getSeriesDosesElement());
23307      }
23308      if (element.hasTargetDisease()) { 
23309        for (CodeableConcept e : element.getTargetDisease()) 
23310          composeCodeableConcept("targetDisease", e);
23311      }
23312      if (element.hasDoseStatus()) {
23313        composeCodeableConcept("doseStatus", element.getDoseStatus());
23314      }
23315      if (element.hasDoseStatusReason()) {
23316        composeCodeableConcept("doseStatusReason", element.getDoseStatusReason());
23317      }
23318      composeElementClose(element);
23319      xml.exit(FHIR_NS, name);
23320    }
23321  }
23322
23323  protected void composeImmunizationRecommendation(String name, ImmunizationRecommendation element) throws IOException {
23324    if (element != null) {
23325      composeDomainResourceAttributes(element);
23326      xml.enter(FHIR_NS, name);
23327      composeDomainResourceElements(element);
23328      if (element.hasIdentifier()) { 
23329        for (Identifier e : element.getIdentifier()) 
23330          composeIdentifier("identifier", e);
23331      }
23332      if (element.hasPatient()) {
23333        composeReference("patient", element.getPatient());
23334      }
23335      if (element.hasRecommendation()) { 
23336        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent e : element.getRecommendation()) 
23337          composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent("recommendation", e);
23338      }
23339      composeElementClose(element);
23340      xml.exit(FHIR_NS, name);
23341    }
23342  }
23343
23344  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
23345    if (element != null) {
23346      composeElementAttributes(element);
23347      xml.enter(FHIR_NS, name);
23348      composeBackboneElements(element);
23349      if (element.hasDateElement()) {
23350        composeDateTime("date", element.getDateElement());
23351      }
23352      if (element.hasVaccineCode()) {
23353        composeCodeableConcept("vaccineCode", element.getVaccineCode());
23354      }
23355      if (element.hasDoseNumberElement()) {
23356        composePositiveInt("doseNumber", element.getDoseNumberElement());
23357      }
23358      if (element.hasForecastStatus()) {
23359        composeCodeableConcept("forecastStatus", element.getForecastStatus());
23360      }
23361      if (element.hasDateCriterion()) { 
23362        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent e : element.getDateCriterion()) 
23363          composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent("dateCriterion", e);
23364      }
23365      if (element.hasProtocol()) {
23366        composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent("protocol", element.getProtocol());
23367      }
23368      if (element.hasSupportingImmunization()) { 
23369        for (Reference e : element.getSupportingImmunization()) 
23370          composeReference("supportingImmunization", e);
23371      }
23372      if (element.hasSupportingPatientInformation()) { 
23373        for (Reference e : element.getSupportingPatientInformation()) 
23374          composeReference("supportingPatientInformation", e);
23375      }
23376      composeElementClose(element);
23377      xml.exit(FHIR_NS, name);
23378    }
23379  }
23380
23381  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
23382    if (element != null) {
23383      composeElementAttributes(element);
23384      xml.enter(FHIR_NS, name);
23385      composeBackboneElements(element);
23386      if (element.hasCode()) {
23387        composeCodeableConcept("code", element.getCode());
23388      }
23389      if (element.hasValueElement()) {
23390        composeDateTime("value", element.getValueElement());
23391      }
23392      composeElementClose(element);
23393      xml.exit(FHIR_NS, name);
23394    }
23395  }
23396
23397  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent element) throws IOException {
23398    if (element != null) {
23399      composeElementAttributes(element);
23400      xml.enter(FHIR_NS, name);
23401      composeBackboneElements(element);
23402      if (element.hasDoseSequenceElement()) {
23403        composeInteger("doseSequence", element.getDoseSequenceElement());
23404      }
23405      if (element.hasDescriptionElement()) {
23406        composeString("description", element.getDescriptionElement());
23407      }
23408      if (element.hasAuthority()) {
23409        composeReference("authority", element.getAuthority());
23410      }
23411      if (element.hasSeriesElement()) {
23412        composeString("series", element.getSeriesElement());
23413      }
23414      composeElementClose(element);
23415      xml.exit(FHIR_NS, name);
23416    }
23417  }
23418
23419  protected void composeImplementationGuide(String name, ImplementationGuide element) throws IOException {
23420    if (element != null) {
23421      composeDomainResourceAttributes(element);
23422      xml.enter(FHIR_NS, name);
23423      composeDomainResourceElements(element);
23424      if (element.hasUrlElement()) {
23425        composeUri("url", element.getUrlElement());
23426      }
23427      if (element.hasVersionElement()) {
23428        composeString("version", element.getVersionElement());
23429      }
23430      if (element.hasNameElement()) {
23431        composeString("name", element.getNameElement());
23432      }
23433      if (element.hasStatusElement())
23434        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
23435      if (element.hasExperimentalElement()) {
23436        composeBoolean("experimental", element.getExperimentalElement());
23437      }
23438      if (element.hasPublisherElement()) {
23439        composeString("publisher", element.getPublisherElement());
23440      }
23441      if (element.hasContact()) { 
23442        for (ImplementationGuide.ImplementationGuideContactComponent e : element.getContact()) 
23443          composeImplementationGuideImplementationGuideContactComponent("contact", e);
23444      }
23445      if (element.hasDateElement()) {
23446        composeDateTime("date", element.getDateElement());
23447      }
23448      if (element.hasDescriptionElement()) {
23449        composeString("description", element.getDescriptionElement());
23450      }
23451      if (element.hasUseContext()) { 
23452        for (CodeableConcept e : element.getUseContext()) 
23453          composeCodeableConcept("useContext", e);
23454      }
23455      if (element.hasCopyrightElement()) {
23456        composeString("copyright", element.getCopyrightElement());
23457      }
23458      if (element.hasFhirVersionElement()) {
23459        composeId("fhirVersion", element.getFhirVersionElement());
23460      }
23461      if (element.hasDependency()) { 
23462        for (ImplementationGuide.ImplementationGuideDependencyComponent e : element.getDependency()) 
23463          composeImplementationGuideImplementationGuideDependencyComponent("dependency", e);
23464      }
23465      if (element.hasPackage()) { 
23466        for (ImplementationGuide.ImplementationGuidePackageComponent e : element.getPackage()) 
23467          composeImplementationGuideImplementationGuidePackageComponent("package", e);
23468      }
23469      if (element.hasGlobal()) { 
23470        for (ImplementationGuide.ImplementationGuideGlobalComponent e : element.getGlobal()) 
23471          composeImplementationGuideImplementationGuideGlobalComponent("global", e);
23472      }
23473      if (element.hasBinary()) { 
23474        for (UriType e : element.getBinary()) 
23475          composeUri("binary", e);
23476      }
23477      if (element.hasPage()) {
23478        composeImplementationGuideImplementationGuidePageComponent("page", element.getPage());
23479      }
23480      composeElementClose(element);
23481      xml.exit(FHIR_NS, name);
23482    }
23483  }
23484
23485  protected void composeImplementationGuideImplementationGuideContactComponent(String name, ImplementationGuide.ImplementationGuideContactComponent element) throws IOException {
23486    if (element != null) {
23487      composeElementAttributes(element);
23488      xml.enter(FHIR_NS, name);
23489      composeBackboneElements(element);
23490      if (element.hasNameElement()) {
23491        composeString("name", element.getNameElement());
23492      }
23493      if (element.hasTelecom()) { 
23494        for (ContactPoint e : element.getTelecom()) 
23495          composeContactPoint("telecom", e);
23496      }
23497      composeElementClose(element);
23498      xml.exit(FHIR_NS, name);
23499    }
23500  }
23501
23502  protected void composeImplementationGuideImplementationGuideDependencyComponent(String name, ImplementationGuide.ImplementationGuideDependencyComponent element) throws IOException {
23503    if (element != null) {
23504      composeElementAttributes(element);
23505      xml.enter(FHIR_NS, name);
23506      composeBackboneElements(element);
23507      if (element.hasTypeElement())
23508        composeEnumeration("type", element.getTypeElement(), new ImplementationGuide.GuideDependencyTypeEnumFactory());
23509      if (element.hasUriElement()) {
23510        composeUri("uri", element.getUriElement());
23511      }
23512      composeElementClose(element);
23513      xml.exit(FHIR_NS, name);
23514    }
23515  }
23516
23517  protected void composeImplementationGuideImplementationGuidePackageComponent(String name, ImplementationGuide.ImplementationGuidePackageComponent element) throws IOException {
23518    if (element != null) {
23519      composeElementAttributes(element);
23520      xml.enter(FHIR_NS, name);
23521      composeBackboneElements(element);
23522      if (element.hasNameElement()) {
23523        composeString("name", element.getNameElement());
23524      }
23525      if (element.hasDescriptionElement()) {
23526        composeString("description", element.getDescriptionElement());
23527      }
23528      if (element.hasResource()) { 
23529        for (ImplementationGuide.ImplementationGuidePackageResourceComponent e : element.getResource()) 
23530          composeImplementationGuideImplementationGuidePackageResourceComponent("resource", e);
23531      }
23532      composeElementClose(element);
23533      xml.exit(FHIR_NS, name);
23534    }
23535  }
23536
23537  protected void composeImplementationGuideImplementationGuidePackageResourceComponent(String name, ImplementationGuide.ImplementationGuidePackageResourceComponent element) throws IOException {
23538    if (element != null) {
23539      composeElementAttributes(element);
23540      xml.enter(FHIR_NS, name);
23541      composeBackboneElements(element);
23542      if (element.hasExampleElement()) {
23543        composeBoolean("example", element.getExampleElement());
23544      }
23545      if (element.hasNameElement()) {
23546        composeString("name", element.getNameElement());
23547      }
23548      if (element.hasDescriptionElement()) {
23549        composeString("description", element.getDescriptionElement());
23550      }
23551      if (element.hasAcronymElement()) {
23552        composeString("acronym", element.getAcronymElement());
23553      }
23554      if (element.hasSource()) {
23555        composeType("source", element.getSource());
23556      }      if (element.hasExampleFor()) {
23557        composeReference("exampleFor", element.getExampleFor());
23558      }
23559      composeElementClose(element);
23560      xml.exit(FHIR_NS, name);
23561    }
23562  }
23563
23564  protected void composeImplementationGuideImplementationGuideGlobalComponent(String name, ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
23565    if (element != null) {
23566      composeElementAttributes(element);
23567      xml.enter(FHIR_NS, name);
23568      composeBackboneElements(element);
23569      if (element.hasTypeElement()) {
23570        composeCode("type", element.getTypeElement());
23571      }
23572      if (element.hasProfile()) {
23573        composeReference("profile", element.getProfile());
23574      }
23575      composeElementClose(element);
23576      xml.exit(FHIR_NS, name);
23577    }
23578  }
23579
23580  protected void composeImplementationGuideImplementationGuidePageComponent(String name, ImplementationGuide.ImplementationGuidePageComponent element) throws IOException {
23581    if (element != null) {
23582      composeElementAttributes(element);
23583      xml.enter(FHIR_NS, name);
23584      composeBackboneElements(element);
23585      if (element.hasSourceElement()) {
23586        composeUri("source", element.getSourceElement());
23587      }
23588      if (element.hasNameElement()) {
23589        composeString("name", element.getNameElement());
23590      }
23591      if (element.hasKindElement())
23592        composeEnumeration("kind", element.getKindElement(), new ImplementationGuide.GuidePageKindEnumFactory());
23593      if (element.hasType()) { 
23594        for (CodeType e : element.getType()) 
23595          composeCode("type", e);
23596      }
23597      if (element.hasPackage()) { 
23598        for (StringType e : element.getPackage()) 
23599          composeString("package", e);
23600      }
23601      if (element.hasFormatElement()) {
23602        composeCode("format", element.getFormatElement());
23603      }
23604      if (element.hasPage()) { 
23605        for (ImplementationGuide.ImplementationGuidePageComponent e : element.getPage()) 
23606          composeImplementationGuideImplementationGuidePageComponent("page", e);
23607      }
23608      composeElementClose(element);
23609      xml.exit(FHIR_NS, name);
23610    }
23611  }
23612
23613  protected void composeLibrary(String name, Library element) throws IOException {
23614    if (element != null) {
23615      composeDomainResourceAttributes(element);
23616      xml.enter(FHIR_NS, name);
23617      composeDomainResourceElements(element);
23618      if (element.hasModuleMetadata()) {
23619        composeModuleMetadata("moduleMetadata", element.getModuleMetadata());
23620      }
23621      if (element.hasModel()) { 
23622        for (Library.LibraryModelComponent e : element.getModel()) 
23623          composeLibraryLibraryModelComponent("model", e);
23624      }
23625      if (element.hasLibrary()) { 
23626        for (Library.LibraryLibraryComponent e : element.getLibrary()) 
23627          composeLibraryLibraryLibraryComponent("library", e);
23628      }
23629      if (element.hasCodeSystem()) { 
23630        for (Library.LibraryCodeSystemComponent e : element.getCodeSystem()) 
23631          composeLibraryLibraryCodeSystemComponent("codeSystem", e);
23632      }
23633      if (element.hasValueSet()) { 
23634        for (Library.LibraryValueSetComponent e : element.getValueSet()) 
23635          composeLibraryLibraryValueSetComponent("valueSet", e);
23636      }
23637      if (element.hasParameter()) { 
23638        for (ParameterDefinition e : element.getParameter()) 
23639          composeParameterDefinition("parameter", e);
23640      }
23641      if (element.hasDataRequirement()) { 
23642        for (DataRequirement e : element.getDataRequirement()) 
23643          composeDataRequirement("dataRequirement", e);
23644      }
23645      if (element.hasDocument()) {
23646        composeAttachment("document", element.getDocument());
23647      }
23648      composeElementClose(element);
23649      xml.exit(FHIR_NS, name);
23650    }
23651  }
23652
23653  protected void composeLibraryLibraryModelComponent(String name, Library.LibraryModelComponent element) throws IOException {
23654    if (element != null) {
23655      composeElementAttributes(element);
23656      xml.enter(FHIR_NS, name);
23657      composeBackboneElements(element);
23658      if (element.hasNameElement()) {
23659        composeString("name", element.getNameElement());
23660      }
23661      if (element.hasIdentifierElement()) {
23662        composeString("identifier", element.getIdentifierElement());
23663      }
23664      if (element.hasVersionElement()) {
23665        composeString("version", element.getVersionElement());
23666      }
23667      composeElementClose(element);
23668      xml.exit(FHIR_NS, name);
23669    }
23670  }
23671
23672  protected void composeLibraryLibraryLibraryComponent(String name, Library.LibraryLibraryComponent element) throws IOException {
23673    if (element != null) {
23674      composeElementAttributes(element);
23675      xml.enter(FHIR_NS, name);
23676      composeBackboneElements(element);
23677      if (element.hasNameElement()) {
23678        composeString("name", element.getNameElement());
23679      }
23680      if (element.hasIdentifierElement()) {
23681        composeString("identifier", element.getIdentifierElement());
23682      }
23683      if (element.hasVersionElement()) {
23684        composeString("version", element.getVersionElement());
23685      }
23686      if (element.hasDocument()) {
23687        composeType("document", element.getDocument());
23688      }      composeElementClose(element);
23689      xml.exit(FHIR_NS, name);
23690    }
23691  }
23692
23693  protected void composeLibraryLibraryCodeSystemComponent(String name, Library.LibraryCodeSystemComponent element) throws IOException {
23694    if (element != null) {
23695      composeElementAttributes(element);
23696      xml.enter(FHIR_NS, name);
23697      composeBackboneElements(element);
23698      if (element.hasNameElement()) {
23699        composeString("name", element.getNameElement());
23700      }
23701      if (element.hasIdentifierElement()) {
23702        composeString("identifier", element.getIdentifierElement());
23703      }
23704      if (element.hasVersionElement()) {
23705        composeString("version", element.getVersionElement());
23706      }
23707      composeElementClose(element);
23708      xml.exit(FHIR_NS, name);
23709    }
23710  }
23711
23712  protected void composeLibraryLibraryValueSetComponent(String name, Library.LibraryValueSetComponent element) throws IOException {
23713    if (element != null) {
23714      composeElementAttributes(element);
23715      xml.enter(FHIR_NS, name);
23716      composeBackboneElements(element);
23717      if (element.hasNameElement()) {
23718        composeString("name", element.getNameElement());
23719      }
23720      if (element.hasIdentifierElement()) {
23721        composeString("identifier", element.getIdentifierElement());
23722      }
23723      if (element.hasVersionElement()) {
23724        composeString("version", element.getVersionElement());
23725      }
23726      if (element.hasCodeSystem()) { 
23727        for (StringType e : element.getCodeSystem()) 
23728          composeString("codeSystem", e);
23729      }
23730      composeElementClose(element);
23731      xml.exit(FHIR_NS, name);
23732    }
23733  }
23734
23735  protected void composeLinkage(String name, Linkage element) throws IOException {
23736    if (element != null) {
23737      composeDomainResourceAttributes(element);
23738      xml.enter(FHIR_NS, name);
23739      composeDomainResourceElements(element);
23740      if (element.hasAuthor()) {
23741        composeReference("author", element.getAuthor());
23742      }
23743      if (element.hasItem()) { 
23744        for (Linkage.LinkageItemComponent e : element.getItem()) 
23745          composeLinkageLinkageItemComponent("item", e);
23746      }
23747      composeElementClose(element);
23748      xml.exit(FHIR_NS, name);
23749    }
23750  }
23751
23752  protected void composeLinkageLinkageItemComponent(String name, Linkage.LinkageItemComponent element) throws IOException {
23753    if (element != null) {
23754      composeElementAttributes(element);
23755      xml.enter(FHIR_NS, name);
23756      composeBackboneElements(element);
23757      if (element.hasTypeElement())
23758        composeEnumeration("type", element.getTypeElement(), new Linkage.LinkageTypeEnumFactory());
23759      if (element.hasResource()) {
23760        composeReference("resource", element.getResource());
23761      }
23762      composeElementClose(element);
23763      xml.exit(FHIR_NS, name);
23764    }
23765  }
23766
23767  protected void composeListResource(String name, ListResource element) throws IOException {
23768    if (element != null) {
23769      composeDomainResourceAttributes(element);
23770      xml.enter(FHIR_NS, name);
23771      composeDomainResourceElements(element);
23772      if (element.hasIdentifier()) { 
23773        for (Identifier e : element.getIdentifier()) 
23774          composeIdentifier("identifier", e);
23775      }
23776      if (element.hasStatusElement())
23777        composeEnumeration("status", element.getStatusElement(), new ListResource.ListStatusEnumFactory());
23778      if (element.hasModeElement())
23779        composeEnumeration("mode", element.getModeElement(), new ListResource.ListModeEnumFactory());
23780      if (element.hasTitleElement()) {
23781        composeString("title", element.getTitleElement());
23782      }
23783      if (element.hasCode()) {
23784        composeCodeableConcept("code", element.getCode());
23785      }
23786      if (element.hasSubject()) {
23787        composeReference("subject", element.getSubject());
23788      }
23789      if (element.hasEncounter()) {
23790        composeReference("encounter", element.getEncounter());
23791      }
23792      if (element.hasDateElement()) {
23793        composeDateTime("date", element.getDateElement());
23794      }
23795      if (element.hasSource()) {
23796        composeReference("source", element.getSource());
23797      }
23798      if (element.hasOrderedBy()) {
23799        composeCodeableConcept("orderedBy", element.getOrderedBy());
23800      }
23801      if (element.hasNote()) { 
23802        for (Annotation e : element.getNote()) 
23803          composeAnnotation("note", e);
23804      }
23805      if (element.hasEntry()) { 
23806        for (ListResource.ListEntryComponent e : element.getEntry()) 
23807          composeListResourceListEntryComponent("entry", e);
23808      }
23809      if (element.hasEmptyReason()) {
23810        composeCodeableConcept("emptyReason", element.getEmptyReason());
23811      }
23812      composeElementClose(element);
23813      xml.exit(FHIR_NS, name);
23814    }
23815  }
23816
23817  protected void composeListResourceListEntryComponent(String name, ListResource.ListEntryComponent element) throws IOException {
23818    if (element != null) {
23819      composeElementAttributes(element);
23820      xml.enter(FHIR_NS, name);
23821      composeBackboneElements(element);
23822      if (element.hasFlag()) {
23823        composeCodeableConcept("flag", element.getFlag());
23824      }
23825      if (element.hasDeletedElement()) {
23826        composeBoolean("deleted", element.getDeletedElement());
23827      }
23828      if (element.hasDateElement()) {
23829        composeDateTime("date", element.getDateElement());
23830      }
23831      if (element.hasItem()) {
23832        composeReference("item", element.getItem());
23833      }
23834      composeElementClose(element);
23835      xml.exit(FHIR_NS, name);
23836    }
23837  }
23838
23839  protected void composeLocation(String name, Location element) throws IOException {
23840    if (element != null) {
23841      composeDomainResourceAttributes(element);
23842      xml.enter(FHIR_NS, name);
23843      composeDomainResourceElements(element);
23844      if (element.hasIdentifier()) { 
23845        for (Identifier e : element.getIdentifier()) 
23846          composeIdentifier("identifier", e);
23847      }
23848      if (element.hasStatusElement())
23849        composeEnumeration("status", element.getStatusElement(), new Location.LocationStatusEnumFactory());
23850      if (element.hasNameElement()) {
23851        composeString("name", element.getNameElement());
23852      }
23853      if (element.hasDescriptionElement()) {
23854        composeString("description", element.getDescriptionElement());
23855      }
23856      if (element.hasModeElement())
23857        composeEnumeration("mode", element.getModeElement(), new Location.LocationModeEnumFactory());
23858      if (element.hasType()) {
23859        composeCodeableConcept("type", element.getType());
23860      }
23861      if (element.hasTelecom()) { 
23862        for (ContactPoint e : element.getTelecom()) 
23863          composeContactPoint("telecom", e);
23864      }
23865      if (element.hasAddress()) {
23866        composeAddress("address", element.getAddress());
23867      }
23868      if (element.hasPhysicalType()) {
23869        composeCodeableConcept("physicalType", element.getPhysicalType());
23870      }
23871      if (element.hasPosition()) {
23872        composeLocationLocationPositionComponent("position", element.getPosition());
23873      }
23874      if (element.hasManagingOrganization()) {
23875        composeReference("managingOrganization", element.getManagingOrganization());
23876      }
23877      if (element.hasPartOf()) {
23878        composeReference("partOf", element.getPartOf());
23879      }
23880      composeElementClose(element);
23881      xml.exit(FHIR_NS, name);
23882    }
23883  }
23884
23885  protected void composeLocationLocationPositionComponent(String name, Location.LocationPositionComponent element) throws IOException {
23886    if (element != null) {
23887      composeElementAttributes(element);
23888      xml.enter(FHIR_NS, name);
23889      composeBackboneElements(element);
23890      if (element.hasLongitudeElement()) {
23891        composeDecimal("longitude", element.getLongitudeElement());
23892      }
23893      if (element.hasLatitudeElement()) {
23894        composeDecimal("latitude", element.getLatitudeElement());
23895      }
23896      if (element.hasAltitudeElement()) {
23897        composeDecimal("altitude", element.getAltitudeElement());
23898      }
23899      composeElementClose(element);
23900      xml.exit(FHIR_NS, name);
23901    }
23902  }
23903
23904  protected void composeMeasure(String name, Measure element) throws IOException {
23905    if (element != null) {
23906      composeDomainResourceAttributes(element);
23907      xml.enter(FHIR_NS, name);
23908      composeDomainResourceElements(element);
23909      if (element.hasModuleMetadata()) {
23910        composeModuleMetadata("moduleMetadata", element.getModuleMetadata());
23911      }
23912      if (element.hasLibrary()) { 
23913        for (Reference e : element.getLibrary()) 
23914          composeReference("library", e);
23915      }
23916      if (element.hasDisclaimerElement()) {
23917        composeMarkdown("disclaimer", element.getDisclaimerElement());
23918      }
23919      if (element.hasScoringElement())
23920        composeEnumeration("scoring", element.getScoringElement(), new Measure.MeasureScoringEnumFactory());
23921        if (element.hasType()) 
23922          for (Enumeration<Measure.MeasureType> e : element.getType()) 
23923            composeEnumeration("type", e, new Measure.MeasureTypeEnumFactory());
23924      if (element.hasRiskAdjustmentElement()) {
23925        composeString("riskAdjustment", element.getRiskAdjustmentElement());
23926      }
23927      if (element.hasRateAggregationElement()) {
23928        composeString("rateAggregation", element.getRateAggregationElement());
23929      }
23930      if (element.hasRationaleElement()) {
23931        composeMarkdown("rationale", element.getRationaleElement());
23932      }
23933      if (element.hasClinicalRecommendationStatementElement()) {
23934        composeMarkdown("clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement());
23935      }
23936      if (element.hasImprovementNotationElement()) {
23937        composeString("improvementNotation", element.getImprovementNotationElement());
23938      }
23939      if (element.hasDefinitionElement()) {
23940        composeMarkdown("definition", element.getDefinitionElement());
23941      }
23942      if (element.hasGuidanceElement()) {
23943        composeMarkdown("guidance", element.getGuidanceElement());
23944      }
23945      if (element.hasSetElement()) {
23946        composeString("set", element.getSetElement());
23947      }
23948      if (element.hasGroup()) { 
23949        for (Measure.MeasureGroupComponent e : element.getGroup()) 
23950          composeMeasureMeasureGroupComponent("group", e);
23951      }
23952      if (element.hasSupplementalData()) { 
23953        for (Measure.MeasureSupplementalDataComponent e : element.getSupplementalData()) 
23954          composeMeasureMeasureSupplementalDataComponent("supplementalData", e);
23955      }
23956      composeElementClose(element);
23957      xml.exit(FHIR_NS, name);
23958    }
23959  }
23960
23961  protected void composeMeasureMeasureGroupComponent(String name, Measure.MeasureGroupComponent element) throws IOException {
23962    if (element != null) {
23963      composeElementAttributes(element);
23964      xml.enter(FHIR_NS, name);
23965      composeBackboneElements(element);
23966      if (element.hasIdentifier()) {
23967        composeIdentifier("identifier", element.getIdentifier());
23968      }
23969      if (element.hasNameElement()) {
23970        composeString("name", element.getNameElement());
23971      }
23972      if (element.hasDescriptionElement()) {
23973        composeString("description", element.getDescriptionElement());
23974      }
23975      if (element.hasPopulation()) { 
23976        for (Measure.MeasureGroupPopulationComponent e : element.getPopulation()) 
23977          composeMeasureMeasureGroupPopulationComponent("population", e);
23978      }
23979      if (element.hasStratifier()) { 
23980        for (Measure.MeasureGroupStratifierComponent e : element.getStratifier()) 
23981          composeMeasureMeasureGroupStratifierComponent("stratifier", e);
23982      }
23983      composeElementClose(element);
23984      xml.exit(FHIR_NS, name);
23985    }
23986  }
23987
23988  protected void composeMeasureMeasureGroupPopulationComponent(String name, Measure.MeasureGroupPopulationComponent element) throws IOException {
23989    if (element != null) {
23990      composeElementAttributes(element);
23991      xml.enter(FHIR_NS, name);
23992      composeBackboneElements(element);
23993      if (element.hasTypeElement())
23994        composeEnumeration("type", element.getTypeElement(), new Measure.MeasurePopulationTypeEnumFactory());
23995      if (element.hasIdentifier()) {
23996        composeIdentifier("identifier", element.getIdentifier());
23997      }
23998      if (element.hasNameElement()) {
23999        composeString("name", element.getNameElement());
24000      }
24001      if (element.hasDescriptionElement()) {
24002        composeString("description", element.getDescriptionElement());
24003      }
24004      if (element.hasCriteriaElement()) {
24005        composeString("criteria", element.getCriteriaElement());
24006      }
24007      composeElementClose(element);
24008      xml.exit(FHIR_NS, name);
24009    }
24010  }
24011
24012  protected void composeMeasureMeasureGroupStratifierComponent(String name, Measure.MeasureGroupStratifierComponent element) throws IOException {
24013    if (element != null) {
24014      composeElementAttributes(element);
24015      xml.enter(FHIR_NS, name);
24016      composeBackboneElements(element);
24017      if (element.hasIdentifier()) {
24018        composeIdentifier("identifier", element.getIdentifier());
24019      }
24020      if (element.hasCriteriaElement()) {
24021        composeString("criteria", element.getCriteriaElement());
24022      }
24023      if (element.hasPathElement()) {
24024        composeString("path", element.getPathElement());
24025      }
24026      composeElementClose(element);
24027      xml.exit(FHIR_NS, name);
24028    }
24029  }
24030
24031  protected void composeMeasureMeasureSupplementalDataComponent(String name, Measure.MeasureSupplementalDataComponent element) throws IOException {
24032    if (element != null) {
24033      composeElementAttributes(element);
24034      xml.enter(FHIR_NS, name);
24035      composeBackboneElements(element);
24036      if (element.hasIdentifier()) {
24037        composeIdentifier("identifier", element.getIdentifier());
24038      }
24039        if (element.hasUsage()) 
24040          for (Enumeration<Measure.MeasureDataUsage> e : element.getUsage()) 
24041            composeEnumeration("usage", e, new Measure.MeasureDataUsageEnumFactory());
24042      if (element.hasCriteriaElement()) {
24043        composeString("criteria", element.getCriteriaElement());
24044      }
24045      if (element.hasPathElement()) {
24046        composeString("path", element.getPathElement());
24047      }
24048      composeElementClose(element);
24049      xml.exit(FHIR_NS, name);
24050    }
24051  }
24052
24053  protected void composeMeasureReport(String name, MeasureReport element) throws IOException {
24054    if (element != null) {
24055      composeDomainResourceAttributes(element);
24056      xml.enter(FHIR_NS, name);
24057      composeDomainResourceElements(element);
24058      if (element.hasMeasure()) {
24059        composeReference("measure", element.getMeasure());
24060      }
24061      if (element.hasTypeElement())
24062        composeEnumeration("type", element.getTypeElement(), new MeasureReport.MeasureReportTypeEnumFactory());
24063      if (element.hasPatient()) {
24064        composeReference("patient", element.getPatient());
24065      }
24066      if (element.hasPeriod()) {
24067        composePeriod("period", element.getPeriod());
24068      }
24069      if (element.hasStatusElement())
24070        composeEnumeration("status", element.getStatusElement(), new MeasureReport.MeasureReportStatusEnumFactory());
24071      if (element.hasDateElement()) {
24072        composeDateTime("date", element.getDateElement());
24073      }
24074      if (element.hasReportingOrganization()) {
24075        composeReference("reportingOrganization", element.getReportingOrganization());
24076      }
24077      if (element.hasGroup()) { 
24078        for (MeasureReport.MeasureReportGroupComponent e : element.getGroup()) 
24079          composeMeasureReportMeasureReportGroupComponent("group", e);
24080      }
24081      if (element.hasEvaluatedResources()) {
24082        composeReference("evaluatedResources", element.getEvaluatedResources());
24083      }
24084      composeElementClose(element);
24085      xml.exit(FHIR_NS, name);
24086    }
24087  }
24088
24089  protected void composeMeasureReportMeasureReportGroupComponent(String name, MeasureReport.MeasureReportGroupComponent element) throws IOException {
24090    if (element != null) {
24091      composeElementAttributes(element);
24092      xml.enter(FHIR_NS, name);
24093      composeBackboneElements(element);
24094      if (element.hasIdentifier()) {
24095        composeIdentifier("identifier", element.getIdentifier());
24096      }
24097      if (element.hasPopulation()) { 
24098        for (MeasureReport.MeasureReportGroupPopulationComponent e : element.getPopulation()) 
24099          composeMeasureReportMeasureReportGroupPopulationComponent("population", e);
24100      }
24101      if (element.hasMeasureScoreElement()) {
24102        composeDecimal("measureScore", element.getMeasureScoreElement());
24103      }
24104      if (element.hasStratifier()) { 
24105        for (MeasureReport.MeasureReportGroupStratifierComponent e : element.getStratifier()) 
24106          composeMeasureReportMeasureReportGroupStratifierComponent("stratifier", e);
24107      }
24108      if (element.hasSupplementalData()) { 
24109        for (MeasureReport.MeasureReportGroupSupplementalDataComponent e : element.getSupplementalData()) 
24110          composeMeasureReportMeasureReportGroupSupplementalDataComponent("supplementalData", e);
24111      }
24112      composeElementClose(element);
24113      xml.exit(FHIR_NS, name);
24114    }
24115  }
24116
24117  protected void composeMeasureReportMeasureReportGroupPopulationComponent(String name, MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
24118    if (element != null) {
24119      composeElementAttributes(element);
24120      xml.enter(FHIR_NS, name);
24121      composeBackboneElements(element);
24122      if (element.hasTypeElement()) {
24123        composeCode("type", element.getTypeElement());
24124      }
24125      if (element.hasCountElement()) {
24126        composeInteger("count", element.getCountElement());
24127      }
24128      if (element.hasPatients()) {
24129        composeReference("patients", element.getPatients());
24130      }
24131      composeElementClose(element);
24132      xml.exit(FHIR_NS, name);
24133    }
24134  }
24135
24136  protected void composeMeasureReportMeasureReportGroupStratifierComponent(String name, MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
24137    if (element != null) {
24138      composeElementAttributes(element);
24139      xml.enter(FHIR_NS, name);
24140      composeBackboneElements(element);
24141      if (element.hasIdentifier()) {
24142        composeIdentifier("identifier", element.getIdentifier());
24143      }
24144      if (element.hasGroup()) { 
24145        for (MeasureReport.MeasureReportGroupStratifierGroupComponent e : element.getGroup()) 
24146          composeMeasureReportMeasureReportGroupStratifierGroupComponent("group", e);
24147      }
24148      composeElementClose(element);
24149      xml.exit(FHIR_NS, name);
24150    }
24151  }
24152
24153  protected void composeMeasureReportMeasureReportGroupStratifierGroupComponent(String name, MeasureReport.MeasureReportGroupStratifierGroupComponent element) throws IOException {
24154    if (element != null) {
24155      composeElementAttributes(element);
24156      xml.enter(FHIR_NS, name);
24157      composeBackboneElements(element);
24158      if (element.hasValueElement()) {
24159        composeString("value", element.getValueElement());
24160      }
24161      if (element.hasPopulation()) { 
24162        for (MeasureReport.MeasureReportGroupStratifierGroupPopulationComponent e : element.getPopulation()) 
24163          composeMeasureReportMeasureReportGroupStratifierGroupPopulationComponent("population", e);
24164      }
24165      if (element.hasMeasureScoreElement()) {
24166        composeDecimal("measureScore", element.getMeasureScoreElement());
24167      }
24168      composeElementClose(element);
24169      xml.exit(FHIR_NS, name);
24170    }
24171  }
24172
24173  protected void composeMeasureReportMeasureReportGroupStratifierGroupPopulationComponent(String name, MeasureReport.MeasureReportGroupStratifierGroupPopulationComponent element) throws IOException {
24174    if (element != null) {
24175      composeElementAttributes(element);
24176      xml.enter(FHIR_NS, name);
24177      composeBackboneElements(element);
24178      if (element.hasTypeElement()) {
24179        composeCode("type", element.getTypeElement());
24180      }
24181      if (element.hasCountElement()) {
24182        composeInteger("count", element.getCountElement());
24183      }
24184      if (element.hasPatients()) {
24185        composeReference("patients", element.getPatients());
24186      }
24187      composeElementClose(element);
24188      xml.exit(FHIR_NS, name);
24189    }
24190  }
24191
24192  protected void composeMeasureReportMeasureReportGroupSupplementalDataComponent(String name, MeasureReport.MeasureReportGroupSupplementalDataComponent element) throws IOException {
24193    if (element != null) {
24194      composeElementAttributes(element);
24195      xml.enter(FHIR_NS, name);
24196      composeBackboneElements(element);
24197      if (element.hasIdentifier()) {
24198        composeIdentifier("identifier", element.getIdentifier());
24199      }
24200      if (element.hasGroup()) { 
24201        for (MeasureReport.MeasureReportGroupSupplementalDataGroupComponent e : element.getGroup()) 
24202          composeMeasureReportMeasureReportGroupSupplementalDataGroupComponent("group", e);
24203      }
24204      composeElementClose(element);
24205      xml.exit(FHIR_NS, name);
24206    }
24207  }
24208
24209  protected void composeMeasureReportMeasureReportGroupSupplementalDataGroupComponent(String name, MeasureReport.MeasureReportGroupSupplementalDataGroupComponent element) throws IOException {
24210    if (element != null) {
24211      composeElementAttributes(element);
24212      xml.enter(FHIR_NS, name);
24213      composeBackboneElements(element);
24214      if (element.hasValueElement()) {
24215        composeString("value", element.getValueElement());
24216      }
24217      if (element.hasCountElement()) {
24218        composeInteger("count", element.getCountElement());
24219      }
24220      if (element.hasPatients()) {
24221        composeReference("patients", element.getPatients());
24222      }
24223      composeElementClose(element);
24224      xml.exit(FHIR_NS, name);
24225    }
24226  }
24227
24228  protected void composeMedia(String name, Media element) throws IOException {
24229    if (element != null) {
24230      composeDomainResourceAttributes(element);
24231      xml.enter(FHIR_NS, name);
24232      composeDomainResourceElements(element);
24233      if (element.hasIdentifier()) { 
24234        for (Identifier e : element.getIdentifier()) 
24235          composeIdentifier("identifier", e);
24236      }
24237      if (element.hasTypeElement())
24238        composeEnumeration("type", element.getTypeElement(), new Media.DigitalMediaTypeEnumFactory());
24239      if (element.hasSubtype()) {
24240        composeCodeableConcept("subtype", element.getSubtype());
24241      }
24242      if (element.hasView()) {
24243        composeCodeableConcept("view", element.getView());
24244      }
24245      if (element.hasSubject()) {
24246        composeReference("subject", element.getSubject());
24247      }
24248      if (element.hasOperator()) {
24249        composeReference("operator", element.getOperator());
24250      }
24251      if (element.hasDeviceNameElement()) {
24252        composeString("deviceName", element.getDeviceNameElement());
24253      }
24254      if (element.hasHeightElement()) {
24255        composePositiveInt("height", element.getHeightElement());
24256      }
24257      if (element.hasWidthElement()) {
24258        composePositiveInt("width", element.getWidthElement());
24259      }
24260      if (element.hasFramesElement()) {
24261        composePositiveInt("frames", element.getFramesElement());
24262      }
24263      if (element.hasDurationElement()) {
24264        composeUnsignedInt("duration", element.getDurationElement());
24265      }
24266      if (element.hasContent()) {
24267        composeAttachment("content", element.getContent());
24268      }
24269      composeElementClose(element);
24270      xml.exit(FHIR_NS, name);
24271    }
24272  }
24273
24274  protected void composeMedication(String name, Medication element) throws IOException {
24275    if (element != null) {
24276      composeDomainResourceAttributes(element);
24277      xml.enter(FHIR_NS, name);
24278      composeDomainResourceElements(element);
24279      if (element.hasCode()) {
24280        composeCodeableConcept("code", element.getCode());
24281      }
24282      if (element.hasIsBrandElement()) {
24283        composeBoolean("isBrand", element.getIsBrandElement());
24284      }
24285      if (element.hasManufacturer()) {
24286        composeReference("manufacturer", element.getManufacturer());
24287      }
24288      if (element.hasProduct()) {
24289        composeMedicationMedicationProductComponent("product", element.getProduct());
24290      }
24291      if (element.hasPackage()) {
24292        composeMedicationMedicationPackageComponent("package", element.getPackage());
24293      }
24294      composeElementClose(element);
24295      xml.exit(FHIR_NS, name);
24296    }
24297  }
24298
24299  protected void composeMedicationMedicationProductComponent(String name, Medication.MedicationProductComponent element) throws IOException {
24300    if (element != null) {
24301      composeElementAttributes(element);
24302      xml.enter(FHIR_NS, name);
24303      composeBackboneElements(element);
24304      if (element.hasForm()) {
24305        composeCodeableConcept("form", element.getForm());
24306      }
24307      if (element.hasIngredient()) { 
24308        for (Medication.MedicationProductIngredientComponent e : element.getIngredient()) 
24309          composeMedicationMedicationProductIngredientComponent("ingredient", e);
24310      }
24311      if (element.hasBatch()) { 
24312        for (Medication.MedicationProductBatchComponent e : element.getBatch()) 
24313          composeMedicationMedicationProductBatchComponent("batch", e);
24314      }
24315      composeElementClose(element);
24316      xml.exit(FHIR_NS, name);
24317    }
24318  }
24319
24320  protected void composeMedicationMedicationProductIngredientComponent(String name, Medication.MedicationProductIngredientComponent element) throws IOException {
24321    if (element != null) {
24322      composeElementAttributes(element);
24323      xml.enter(FHIR_NS, name);
24324      composeBackboneElements(element);
24325      if (element.hasItem()) {
24326        composeType("item", element.getItem());
24327      }      if (element.hasAmount()) {
24328        composeRatio("amount", element.getAmount());
24329      }
24330      composeElementClose(element);
24331      xml.exit(FHIR_NS, name);
24332    }
24333  }
24334
24335  protected void composeMedicationMedicationProductBatchComponent(String name, Medication.MedicationProductBatchComponent element) throws IOException {
24336    if (element != null) {
24337      composeElementAttributes(element);
24338      xml.enter(FHIR_NS, name);
24339      composeBackboneElements(element);
24340      if (element.hasLotNumberElement()) {
24341        composeString("lotNumber", element.getLotNumberElement());
24342      }
24343      if (element.hasExpirationDateElement()) {
24344        composeDateTime("expirationDate", element.getExpirationDateElement());
24345      }
24346      composeElementClose(element);
24347      xml.exit(FHIR_NS, name);
24348    }
24349  }
24350
24351  protected void composeMedicationMedicationPackageComponent(String name, Medication.MedicationPackageComponent element) throws IOException {
24352    if (element != null) {
24353      composeElementAttributes(element);
24354      xml.enter(FHIR_NS, name);
24355      composeBackboneElements(element);
24356      if (element.hasContainer()) {
24357        composeCodeableConcept("container", element.getContainer());
24358      }
24359      if (element.hasContent()) { 
24360        for (Medication.MedicationPackageContentComponent e : element.getContent()) 
24361          composeMedicationMedicationPackageContentComponent("content", e);
24362      }
24363      composeElementClose(element);
24364      xml.exit(FHIR_NS, name);
24365    }
24366  }
24367
24368  protected void composeMedicationMedicationPackageContentComponent(String name, Medication.MedicationPackageContentComponent element) throws IOException {
24369    if (element != null) {
24370      composeElementAttributes(element);
24371      xml.enter(FHIR_NS, name);
24372      composeBackboneElements(element);
24373      if (element.hasItem()) {
24374        composeType("item", element.getItem());
24375      }      if (element.hasAmount()) {
24376        composeSimpleQuantity("amount", element.getAmount());
24377      }
24378      composeElementClose(element);
24379      xml.exit(FHIR_NS, name);
24380    }
24381  }
24382
24383  protected void composeMedicationAdministration(String name, MedicationAdministration element) throws IOException {
24384    if (element != null) {
24385      composeDomainResourceAttributes(element);
24386      xml.enter(FHIR_NS, name);
24387      composeDomainResourceElements(element);
24388      if (element.hasIdentifier()) { 
24389        for (Identifier e : element.getIdentifier()) 
24390          composeIdentifier("identifier", e);
24391      }
24392      if (element.hasStatusElement())
24393        composeEnumeration("status", element.getStatusElement(), new MedicationAdministration.MedicationAdministrationStatusEnumFactory());
24394      if (element.hasMedication()) {
24395        composeType("medication", element.getMedication());
24396      }      if (element.hasPatient()) {
24397        composeReference("patient", element.getPatient());
24398      }
24399      if (element.hasEncounter()) {
24400        composeReference("encounter", element.getEncounter());
24401      }
24402      if (element.hasEffectiveTime()) {
24403        composeType("effectiveTime", element.getEffectiveTime());
24404      }      if (element.hasPractitioner()) {
24405        composeReference("practitioner", element.getPractitioner());
24406      }
24407      if (element.hasPrescription()) {
24408        composeReference("prescription", element.getPrescription());
24409      }
24410      if (element.hasWasNotGivenElement()) {
24411        composeBoolean("wasNotGiven", element.getWasNotGivenElement());
24412      }
24413      if (element.hasReasonNotGiven()) { 
24414        for (CodeableConcept e : element.getReasonNotGiven()) 
24415          composeCodeableConcept("reasonNotGiven", e);
24416      }
24417      if (element.hasReasonGiven()) { 
24418        for (CodeableConcept e : element.getReasonGiven()) 
24419          composeCodeableConcept("reasonGiven", e);
24420      }
24421      if (element.hasDevice()) { 
24422        for (Reference e : element.getDevice()) 
24423          composeReference("device", e);
24424      }
24425      if (element.hasNote()) { 
24426        for (Annotation e : element.getNote()) 
24427          composeAnnotation("note", e);
24428      }
24429      if (element.hasDosage()) {
24430        composeMedicationAdministrationMedicationAdministrationDosageComponent("dosage", element.getDosage());
24431      }
24432      composeElementClose(element);
24433      xml.exit(FHIR_NS, name);
24434    }
24435  }
24436
24437  protected void composeMedicationAdministrationMedicationAdministrationDosageComponent(String name, MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
24438    if (element != null) {
24439      composeElementAttributes(element);
24440      xml.enter(FHIR_NS, name);
24441      composeBackboneElements(element);
24442      if (element.hasTextElement()) {
24443        composeString("text", element.getTextElement());
24444      }
24445      if (element.hasSite()) {
24446        composeType("site", element.getSite());
24447      }      if (element.hasRoute()) {
24448        composeCodeableConcept("route", element.getRoute());
24449      }
24450      if (element.hasMethod()) {
24451        composeCodeableConcept("method", element.getMethod());
24452      }
24453      if (element.hasQuantity()) {
24454        composeSimpleQuantity("quantity", element.getQuantity());
24455      }
24456      if (element.hasRate()) {
24457        composeType("rate", element.getRate());
24458      }      composeElementClose(element);
24459      xml.exit(FHIR_NS, name);
24460    }
24461  }
24462
24463  protected void composeMedicationDispense(String name, MedicationDispense element) throws IOException {
24464    if (element != null) {
24465      composeDomainResourceAttributes(element);
24466      xml.enter(FHIR_NS, name);
24467      composeDomainResourceElements(element);
24468      if (element.hasIdentifier()) {
24469        composeIdentifier("identifier", element.getIdentifier());
24470      }
24471      if (element.hasStatusElement())
24472        composeEnumeration("status", element.getStatusElement(), new MedicationDispense.MedicationDispenseStatusEnumFactory());
24473      if (element.hasMedication()) {
24474        composeType("medication", element.getMedication());
24475      }      if (element.hasPatient()) {
24476        composeReference("patient", element.getPatient());
24477      }
24478      if (element.hasDispenser()) {
24479        composeReference("dispenser", element.getDispenser());
24480      }
24481      if (element.hasAuthorizingPrescription()) { 
24482        for (Reference e : element.getAuthorizingPrescription()) 
24483          composeReference("authorizingPrescription", e);
24484      }
24485      if (element.hasType()) {
24486        composeCodeableConcept("type", element.getType());
24487      }
24488      if (element.hasQuantity()) {
24489        composeSimpleQuantity("quantity", element.getQuantity());
24490      }
24491      if (element.hasDaysSupply()) {
24492        composeSimpleQuantity("daysSupply", element.getDaysSupply());
24493      }
24494      if (element.hasWhenPreparedElement()) {
24495        composeDateTime("whenPrepared", element.getWhenPreparedElement());
24496      }
24497      if (element.hasWhenHandedOverElement()) {
24498        composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
24499      }
24500      if (element.hasDestination()) {
24501        composeReference("destination", element.getDestination());
24502      }
24503      if (element.hasReceiver()) { 
24504        for (Reference e : element.getReceiver()) 
24505          composeReference("receiver", e);
24506      }
24507      if (element.hasNote()) { 
24508        for (Annotation e : element.getNote()) 
24509          composeAnnotation("note", e);
24510      }
24511      if (element.hasDosageInstruction()) { 
24512        for (MedicationDispense.MedicationDispenseDosageInstructionComponent e : element.getDosageInstruction()) 
24513          composeMedicationDispenseMedicationDispenseDosageInstructionComponent("dosageInstruction", e);
24514      }
24515      if (element.hasSubstitution()) {
24516        composeMedicationDispenseMedicationDispenseSubstitutionComponent("substitution", element.getSubstitution());
24517      }
24518      composeElementClose(element);
24519      xml.exit(FHIR_NS, name);
24520    }
24521  }
24522
24523  protected void composeMedicationDispenseMedicationDispenseDosageInstructionComponent(String name, MedicationDispense.MedicationDispenseDosageInstructionComponent element) throws IOException {
24524    if (element != null) {
24525      composeElementAttributes(element);
24526      xml.enter(FHIR_NS, name);
24527      composeBackboneElements(element);
24528      if (element.hasTextElement()) {
24529        composeString("text", element.getTextElement());
24530      }
24531      if (element.hasAdditionalInstructions()) {
24532        composeCodeableConcept("additionalInstructions", element.getAdditionalInstructions());
24533      }
24534      if (element.hasTiming()) {
24535        composeTiming("timing", element.getTiming());
24536      }
24537      if (element.hasAsNeeded()) {
24538        composeType("asNeeded", element.getAsNeeded());
24539      }      if (element.hasSite()) {
24540        composeType("site", element.getSite());
24541      }      if (element.hasRoute()) {
24542        composeCodeableConcept("route", element.getRoute());
24543      }
24544      if (element.hasMethod()) {
24545        composeCodeableConcept("method", element.getMethod());
24546      }
24547      if (element.hasDose()) {
24548        composeType("dose", element.getDose());
24549      }      if (element.hasRate()) {
24550        composeType("rate", element.getRate());
24551      }      if (element.hasMaxDosePerPeriod()) {
24552        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
24553      }
24554      composeElementClose(element);
24555      xml.exit(FHIR_NS, name);
24556    }
24557  }
24558
24559  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponent(String name, MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
24560    if (element != null) {
24561      composeElementAttributes(element);
24562      xml.enter(FHIR_NS, name);
24563      composeBackboneElements(element);
24564      if (element.hasType()) {
24565        composeCodeableConcept("type", element.getType());
24566      }
24567      if (element.hasReason()) { 
24568        for (CodeableConcept e : element.getReason()) 
24569          composeCodeableConcept("reason", e);
24570      }
24571      if (element.hasResponsibleParty()) { 
24572        for (Reference e : element.getResponsibleParty()) 
24573          composeReference("responsibleParty", e);
24574      }
24575      composeElementClose(element);
24576      xml.exit(FHIR_NS, name);
24577    }
24578  }
24579
24580  protected void composeMedicationOrder(String name, MedicationOrder element) throws IOException {
24581    if (element != null) {
24582      composeDomainResourceAttributes(element);
24583      xml.enter(FHIR_NS, name);
24584      composeDomainResourceElements(element);
24585      if (element.hasIdentifier()) { 
24586        for (Identifier e : element.getIdentifier()) 
24587          composeIdentifier("identifier", e);
24588      }
24589      if (element.hasStatusElement())
24590        composeEnumeration("status", element.getStatusElement(), new MedicationOrder.MedicationOrderStatusEnumFactory());
24591      if (element.hasMedication()) {
24592        composeType("medication", element.getMedication());
24593      }      if (element.hasPatient()) {
24594        composeReference("patient", element.getPatient());
24595      }
24596      if (element.hasEncounter()) {
24597        composeReference("encounter", element.getEncounter());
24598      }
24599      if (element.hasDateWrittenElement()) {
24600        composeDateTime("dateWritten", element.getDateWrittenElement());
24601      }
24602      if (element.hasPrescriber()) {
24603        composeReference("prescriber", element.getPrescriber());
24604      }
24605      if (element.hasReasonCode()) { 
24606        for (CodeableConcept e : element.getReasonCode()) 
24607          composeCodeableConcept("reasonCode", e);
24608      }
24609      if (element.hasReasonReference()) { 
24610        for (Reference e : element.getReasonReference()) 
24611          composeReference("reasonReference", e);
24612      }
24613      if (element.hasDateEndedElement()) {
24614        composeDateTime("dateEnded", element.getDateEndedElement());
24615      }
24616      if (element.hasReasonEnded()) {
24617        composeCodeableConcept("reasonEnded", element.getReasonEnded());
24618      }
24619      if (element.hasNote()) { 
24620        for (Annotation e : element.getNote()) 
24621          composeAnnotation("note", e);
24622      }
24623      if (element.hasDosageInstruction()) { 
24624        for (MedicationOrder.MedicationOrderDosageInstructionComponent e : element.getDosageInstruction()) 
24625          composeMedicationOrderMedicationOrderDosageInstructionComponent("dosageInstruction", e);
24626      }
24627      if (element.hasDispenseRequest()) {
24628        composeMedicationOrderMedicationOrderDispenseRequestComponent("dispenseRequest", element.getDispenseRequest());
24629      }
24630      if (element.hasSubstitution()) {
24631        composeMedicationOrderMedicationOrderSubstitutionComponent("substitution", element.getSubstitution());
24632      }
24633      if (element.hasPriorPrescription()) {
24634        composeReference("priorPrescription", element.getPriorPrescription());
24635      }
24636      composeElementClose(element);
24637      xml.exit(FHIR_NS, name);
24638    }
24639  }
24640
24641  protected void composeMedicationOrderMedicationOrderDosageInstructionComponent(String name, MedicationOrder.MedicationOrderDosageInstructionComponent element) throws IOException {
24642    if (element != null) {
24643      composeElementAttributes(element);
24644      xml.enter(FHIR_NS, name);
24645      composeBackboneElements(element);
24646      if (element.hasTextElement()) {
24647        composeString("text", element.getTextElement());
24648      }
24649      if (element.hasAdditionalInstructions()) {
24650        composeCodeableConcept("additionalInstructions", element.getAdditionalInstructions());
24651      }
24652      if (element.hasTiming()) {
24653        composeTiming("timing", element.getTiming());
24654      }
24655      if (element.hasAsNeeded()) {
24656        composeType("asNeeded", element.getAsNeeded());
24657      }      if (element.hasSite()) {
24658        composeType("site", element.getSite());
24659      }      if (element.hasRoute()) {
24660        composeCodeableConcept("route", element.getRoute());
24661      }
24662      if (element.hasMethod()) {
24663        composeCodeableConcept("method", element.getMethod());
24664      }
24665      if (element.hasDose()) {
24666        composeType("dose", element.getDose());
24667      }      if (element.hasRate()) {
24668        composeType("rate", element.getRate());
24669      }      if (element.hasMaxDosePerPeriod()) {
24670        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
24671      }
24672      composeElementClose(element);
24673      xml.exit(FHIR_NS, name);
24674    }
24675  }
24676
24677  protected void composeMedicationOrderMedicationOrderDispenseRequestComponent(String name, MedicationOrder.MedicationOrderDispenseRequestComponent element) throws IOException {
24678    if (element != null) {
24679      composeElementAttributes(element);
24680      xml.enter(FHIR_NS, name);
24681      composeBackboneElements(element);
24682      if (element.hasMedication()) {
24683        composeType("medication", element.getMedication());
24684      }      if (element.hasValidityPeriod()) {
24685        composePeriod("validityPeriod", element.getValidityPeriod());
24686      }
24687      if (element.hasNumberOfRepeatsAllowedElement()) {
24688        composePositiveInt("numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement());
24689      }
24690      if (element.hasQuantity()) {
24691        composeSimpleQuantity("quantity", element.getQuantity());
24692      }
24693      if (element.hasExpectedSupplyDuration()) {
24694        composeDuration("expectedSupplyDuration", element.getExpectedSupplyDuration());
24695      }
24696      composeElementClose(element);
24697      xml.exit(FHIR_NS, name);
24698    }
24699  }
24700
24701  protected void composeMedicationOrderMedicationOrderSubstitutionComponent(String name, MedicationOrder.MedicationOrderSubstitutionComponent element) throws IOException {
24702    if (element != null) {
24703      composeElementAttributes(element);
24704      xml.enter(FHIR_NS, name);
24705      composeBackboneElements(element);
24706      if (element.hasType()) {
24707        composeCodeableConcept("type", element.getType());
24708      }
24709      if (element.hasReason()) {
24710        composeCodeableConcept("reason", element.getReason());
24711      }
24712      composeElementClose(element);
24713      xml.exit(FHIR_NS, name);
24714    }
24715  }
24716
24717  protected void composeMedicationStatement(String name, MedicationStatement element) throws IOException {
24718    if (element != null) {
24719      composeDomainResourceAttributes(element);
24720      xml.enter(FHIR_NS, name);
24721      composeDomainResourceElements(element);
24722      if (element.hasIdentifier()) { 
24723        for (Identifier e : element.getIdentifier()) 
24724          composeIdentifier("identifier", e);
24725      }
24726      if (element.hasStatusElement())
24727        composeEnumeration("status", element.getStatusElement(), new MedicationStatement.MedicationStatementStatusEnumFactory());
24728      if (element.hasMedication()) {
24729        composeType("medication", element.getMedication());
24730      }      if (element.hasPatient()) {
24731        composeReference("patient", element.getPatient());
24732      }
24733      if (element.hasEffective()) {
24734        composeType("effective", element.getEffective());
24735      }      if (element.hasInformationSource()) {
24736        composeReference("informationSource", element.getInformationSource());
24737      }
24738      if (element.hasSupportingInformation()) { 
24739        for (Reference e : element.getSupportingInformation()) 
24740          composeReference("supportingInformation", e);
24741      }
24742      if (element.hasDateAssertedElement()) {
24743        composeDateTime("dateAsserted", element.getDateAssertedElement());
24744      }
24745      if (element.hasWasNotTakenElement()) {
24746        composeBoolean("wasNotTaken", element.getWasNotTakenElement());
24747      }
24748      if (element.hasReasonNotTaken()) { 
24749        for (CodeableConcept e : element.getReasonNotTaken()) 
24750          composeCodeableConcept("reasonNotTaken", e);
24751      }
24752      if (element.hasReasonForUse()) {
24753        composeType("reasonForUse", element.getReasonForUse());
24754      }      if (element.hasNote()) { 
24755        for (Annotation e : element.getNote()) 
24756          composeAnnotation("note", e);
24757      }
24758      if (element.hasDosage()) { 
24759        for (MedicationStatement.MedicationStatementDosageComponent e : element.getDosage()) 
24760          composeMedicationStatementMedicationStatementDosageComponent("dosage", e);
24761      }
24762      composeElementClose(element);
24763      xml.exit(FHIR_NS, name);
24764    }
24765  }
24766
24767  protected void composeMedicationStatementMedicationStatementDosageComponent(String name, MedicationStatement.MedicationStatementDosageComponent element) throws IOException {
24768    if (element != null) {
24769      composeElementAttributes(element);
24770      xml.enter(FHIR_NS, name);
24771      composeBackboneElements(element);
24772      if (element.hasTextElement()) {
24773        composeString("text", element.getTextElement());
24774      }
24775      if (element.hasTiming()) {
24776        composeTiming("timing", element.getTiming());
24777      }
24778      if (element.hasAsNeeded()) {
24779        composeType("asNeeded", element.getAsNeeded());
24780      }      if (element.hasSite()) {
24781        composeType("site", element.getSite());
24782      }      if (element.hasRoute()) {
24783        composeCodeableConcept("route", element.getRoute());
24784      }
24785      if (element.hasMethod()) {
24786        composeCodeableConcept("method", element.getMethod());
24787      }
24788      if (element.hasQuantity()) {
24789        composeType("quantity", element.getQuantity());
24790      }      if (element.hasRate()) {
24791        composeType("rate", element.getRate());
24792      }      if (element.hasMaxDosePerPeriod()) {
24793        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
24794      }
24795      composeElementClose(element);
24796      xml.exit(FHIR_NS, name);
24797    }
24798  }
24799
24800  protected void composeMessageHeader(String name, MessageHeader element) throws IOException {
24801    if (element != null) {
24802      composeDomainResourceAttributes(element);
24803      xml.enter(FHIR_NS, name);
24804      composeDomainResourceElements(element);
24805      if (element.hasTimestampElement()) {
24806        composeInstant("timestamp", element.getTimestampElement());
24807      }
24808      if (element.hasEvent()) {
24809        composeCoding("event", element.getEvent());
24810      }
24811      if (element.hasResponse()) {
24812        composeMessageHeaderMessageHeaderResponseComponent("response", element.getResponse());
24813      }
24814      if (element.hasSource()) {
24815        composeMessageHeaderMessageSourceComponent("source", element.getSource());
24816      }
24817      if (element.hasDestination()) { 
24818        for (MessageHeader.MessageDestinationComponent e : element.getDestination()) 
24819          composeMessageHeaderMessageDestinationComponent("destination", e);
24820      }
24821      if (element.hasEnterer()) {
24822        composeReference("enterer", element.getEnterer());
24823      }
24824      if (element.hasAuthor()) {
24825        composeReference("author", element.getAuthor());
24826      }
24827      if (element.hasReceiver()) {
24828        composeReference("receiver", element.getReceiver());
24829      }
24830      if (element.hasResponsible()) {
24831        composeReference("responsible", element.getResponsible());
24832      }
24833      if (element.hasReason()) {
24834        composeCodeableConcept("reason", element.getReason());
24835      }
24836      if (element.hasData()) { 
24837        for (Reference e : element.getData()) 
24838          composeReference("data", e);
24839      }
24840      composeElementClose(element);
24841      xml.exit(FHIR_NS, name);
24842    }
24843  }
24844
24845  protected void composeMessageHeaderMessageHeaderResponseComponent(String name, MessageHeader.MessageHeaderResponseComponent element) throws IOException {
24846    if (element != null) {
24847      composeElementAttributes(element);
24848      xml.enter(FHIR_NS, name);
24849      composeBackboneElements(element);
24850      if (element.hasIdentifierElement()) {
24851        composeId("identifier", element.getIdentifierElement());
24852      }
24853      if (element.hasCodeElement())
24854        composeEnumeration("code", element.getCodeElement(), new MessageHeader.ResponseTypeEnumFactory());
24855      if (element.hasDetails()) {
24856        composeReference("details", element.getDetails());
24857      }
24858      composeElementClose(element);
24859      xml.exit(FHIR_NS, name);
24860    }
24861  }
24862
24863  protected void composeMessageHeaderMessageSourceComponent(String name, MessageHeader.MessageSourceComponent element) throws IOException {
24864    if (element != null) {
24865      composeElementAttributes(element);
24866      xml.enter(FHIR_NS, name);
24867      composeBackboneElements(element);
24868      if (element.hasNameElement()) {
24869        composeString("name", element.getNameElement());
24870      }
24871      if (element.hasSoftwareElement()) {
24872        composeString("software", element.getSoftwareElement());
24873      }
24874      if (element.hasVersionElement()) {
24875        composeString("version", element.getVersionElement());
24876      }
24877      if (element.hasContact()) {
24878        composeContactPoint("contact", element.getContact());
24879      }
24880      if (element.hasEndpointElement()) {
24881        composeUri("endpoint", element.getEndpointElement());
24882      }
24883      composeElementClose(element);
24884      xml.exit(FHIR_NS, name);
24885    }
24886  }
24887
24888  protected void composeMessageHeaderMessageDestinationComponent(String name, MessageHeader.MessageDestinationComponent element) throws IOException {
24889    if (element != null) {
24890      composeElementAttributes(element);
24891      xml.enter(FHIR_NS, name);
24892      composeBackboneElements(element);
24893      if (element.hasNameElement()) {
24894        composeString("name", element.getNameElement());
24895      }
24896      if (element.hasTarget()) {
24897        composeReference("target", element.getTarget());
24898      }
24899      if (element.hasEndpointElement()) {
24900        composeUri("endpoint", element.getEndpointElement());
24901      }
24902      composeElementClose(element);
24903      xml.exit(FHIR_NS, name);
24904    }
24905  }
24906
24907  protected void composeModuleDefinition(String name, ModuleDefinition element) throws IOException {
24908    if (element != null) {
24909      composeDomainResourceAttributes(element);
24910      xml.enter(FHIR_NS, name);
24911      composeDomainResourceElements(element);
24912      if (element.hasIdentifier()) { 
24913        for (Identifier e : element.getIdentifier()) 
24914          composeIdentifier("identifier", e);
24915      }
24916      if (element.hasVersionElement()) {
24917        composeString("version", element.getVersionElement());
24918      }
24919      if (element.hasModel()) { 
24920        for (ModuleDefinition.ModuleDefinitionModelComponent e : element.getModel()) 
24921          composeModuleDefinitionModuleDefinitionModelComponent("model", e);
24922      }
24923      if (element.hasLibrary()) { 
24924        for (ModuleDefinition.ModuleDefinitionLibraryComponent e : element.getLibrary()) 
24925          composeModuleDefinitionModuleDefinitionLibraryComponent("library", e);
24926      }
24927      if (element.hasCodeSystem()) { 
24928        for (ModuleDefinition.ModuleDefinitionCodeSystemComponent e : element.getCodeSystem()) 
24929          composeModuleDefinitionModuleDefinitionCodeSystemComponent("codeSystem", e);
24930      }
24931      if (element.hasValueSet()) { 
24932        for (ModuleDefinition.ModuleDefinitionValueSetComponent e : element.getValueSet()) 
24933          composeModuleDefinitionModuleDefinitionValueSetComponent("valueSet", e);
24934      }
24935      if (element.hasParameter()) { 
24936        for (ModuleDefinition.ModuleDefinitionParameterComponent e : element.getParameter()) 
24937          composeModuleDefinitionModuleDefinitionParameterComponent("parameter", e);
24938      }
24939      if (element.hasData()) { 
24940        for (ModuleDefinition.ModuleDefinitionDataComponent e : element.getData()) 
24941          composeModuleDefinitionModuleDefinitionDataComponent("data", e);
24942      }
24943      composeElementClose(element);
24944      xml.exit(FHIR_NS, name);
24945    }
24946  }
24947
24948  protected void composeModuleDefinitionModuleDefinitionModelComponent(String name, ModuleDefinition.ModuleDefinitionModelComponent element) throws IOException {
24949    if (element != null) {
24950      composeElementAttributes(element);
24951      xml.enter(FHIR_NS, name);
24952      composeBackboneElements(element);
24953      if (element.hasNameElement()) {
24954        composeString("name", element.getNameElement());
24955      }
24956      if (element.hasIdentifierElement()) {
24957        composeString("identifier", element.getIdentifierElement());
24958      }
24959      if (element.hasVersionElement()) {
24960        composeString("version", element.getVersionElement());
24961      }
24962      composeElementClose(element);
24963      xml.exit(FHIR_NS, name);
24964    }
24965  }
24966
24967  protected void composeModuleDefinitionModuleDefinitionLibraryComponent(String name, ModuleDefinition.ModuleDefinitionLibraryComponent element) throws IOException {
24968    if (element != null) {
24969      composeElementAttributes(element);
24970      xml.enter(FHIR_NS, name);
24971      composeBackboneElements(element);
24972      if (element.hasNameElement()) {
24973        composeString("name", element.getNameElement());
24974      }
24975      if (element.hasIdentifierElement()) {
24976        composeString("identifier", element.getIdentifierElement());
24977      }
24978      if (element.hasVersionElement()) {
24979        composeString("version", element.getVersionElement());
24980      }
24981      if (element.hasDocument()) {
24982        composeType("document", element.getDocument());
24983      }      composeElementClose(element);
24984      xml.exit(FHIR_NS, name);
24985    }
24986  }
24987
24988  protected void composeModuleDefinitionModuleDefinitionCodeSystemComponent(String name, ModuleDefinition.ModuleDefinitionCodeSystemComponent element) throws IOException {
24989    if (element != null) {
24990      composeElementAttributes(element);
24991      xml.enter(FHIR_NS, name);
24992      composeBackboneElements(element);
24993      if (element.hasNameElement()) {
24994        composeString("name", element.getNameElement());
24995      }
24996      if (element.hasIdentifierElement()) {
24997        composeString("identifier", element.getIdentifierElement());
24998      }
24999      if (element.hasVersionElement()) {
25000        composeString("version", element.getVersionElement());
25001      }
25002      composeElementClose(element);
25003      xml.exit(FHIR_NS, name);
25004    }
25005  }
25006
25007  protected void composeModuleDefinitionModuleDefinitionValueSetComponent(String name, ModuleDefinition.ModuleDefinitionValueSetComponent element) throws IOException {
25008    if (element != null) {
25009      composeElementAttributes(element);
25010      xml.enter(FHIR_NS, name);
25011      composeBackboneElements(element);
25012      if (element.hasNameElement()) {
25013        composeString("name", element.getNameElement());
25014      }
25015      if (element.hasIdentifierElement()) {
25016        composeString("identifier", element.getIdentifierElement());
25017      }
25018      if (element.hasVersionElement()) {
25019        composeString("version", element.getVersionElement());
25020      }
25021      if (element.hasCodeSystem()) { 
25022        for (StringType e : element.getCodeSystem()) 
25023          composeString("codeSystem", e);
25024      }
25025      composeElementClose(element);
25026      xml.exit(FHIR_NS, name);
25027    }
25028  }
25029
25030  protected void composeModuleDefinitionModuleDefinitionParameterComponent(String name, ModuleDefinition.ModuleDefinitionParameterComponent element) throws IOException {
25031    if (element != null) {
25032      composeElementAttributes(element);
25033      xml.enter(FHIR_NS, name);
25034      composeBackboneElements(element);
25035      if (element.hasNameElement()) {
25036        composeCode("name", element.getNameElement());
25037      }
25038      if (element.hasUseElement()) {
25039        composeCode("use", element.getUseElement());
25040      }
25041      if (element.hasDocumentationElement()) {
25042        composeString("documentation", element.getDocumentationElement());
25043      }
25044      if (element.hasTypeElement()) {
25045        composeCode("type", element.getTypeElement());
25046      }
25047      if (element.hasProfile()) {
25048        composeReference("profile", element.getProfile());
25049      }
25050      composeElementClose(element);
25051      xml.exit(FHIR_NS, name);
25052    }
25053  }
25054
25055  protected void composeModuleDefinitionModuleDefinitionDataComponent(String name, ModuleDefinition.ModuleDefinitionDataComponent element) throws IOException {
25056    if (element != null) {
25057      composeElementAttributes(element);
25058      xml.enter(FHIR_NS, name);
25059      composeBackboneElements(element);
25060      if (element.hasTypeElement()) {
25061        composeCode("type", element.getTypeElement());
25062      }
25063      if (element.hasProfile()) {
25064        composeReference("profile", element.getProfile());
25065      }
25066      if (element.hasMustSupport()) { 
25067        for (StringType e : element.getMustSupport()) 
25068          composeString("mustSupport", e);
25069      }
25070      if (element.hasCodeFilter()) { 
25071        for (ModuleDefinition.ModuleDefinitionDataCodeFilterComponent e : element.getCodeFilter()) 
25072          composeModuleDefinitionModuleDefinitionDataCodeFilterComponent("codeFilter", e);
25073      }
25074      if (element.hasDateFilter()) { 
25075        for (ModuleDefinition.ModuleDefinitionDataDateFilterComponent e : element.getDateFilter()) 
25076          composeModuleDefinitionModuleDefinitionDataDateFilterComponent("dateFilter", e);
25077      }
25078      composeElementClose(element);
25079      xml.exit(FHIR_NS, name);
25080    }
25081  }
25082
25083  protected void composeModuleDefinitionModuleDefinitionDataCodeFilterComponent(String name, ModuleDefinition.ModuleDefinitionDataCodeFilterComponent element) throws IOException {
25084    if (element != null) {
25085      composeElementAttributes(element);
25086      xml.enter(FHIR_NS, name);
25087      composeBackboneElements(element);
25088      if (element.hasPathElement()) {
25089        composeString("path", element.getPathElement());
25090      }
25091      if (element.hasValueSet()) {
25092        composeType("valueSet", element.getValueSet());
25093      }      if (element.hasCodeableConcept()) { 
25094        for (CodeableConcept e : element.getCodeableConcept()) 
25095          composeCodeableConcept("codeableConcept", e);
25096      }
25097      composeElementClose(element);
25098      xml.exit(FHIR_NS, name);
25099    }
25100  }
25101
25102  protected void composeModuleDefinitionModuleDefinitionDataDateFilterComponent(String name, ModuleDefinition.ModuleDefinitionDataDateFilterComponent element) throws IOException {
25103    if (element != null) {
25104      composeElementAttributes(element);
25105      xml.enter(FHIR_NS, name);
25106      composeBackboneElements(element);
25107      if (element.hasPathElement()) {
25108        composeString("path", element.getPathElement());
25109      }
25110      if (element.hasValue()) {
25111        composeType("value", element.getValue());
25112      }      composeElementClose(element);
25113      xml.exit(FHIR_NS, name);
25114    }
25115  }
25116
25117  protected void composeNamingSystem(String name, NamingSystem element) throws IOException {
25118    if (element != null) {
25119      composeDomainResourceAttributes(element);
25120      xml.enter(FHIR_NS, name);
25121      composeDomainResourceElements(element);
25122      if (element.hasNameElement()) {
25123        composeString("name", element.getNameElement());
25124      }
25125      if (element.hasStatusElement())
25126        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
25127      if (element.hasKindElement())
25128        composeEnumeration("kind", element.getKindElement(), new NamingSystem.NamingSystemTypeEnumFactory());
25129      if (element.hasDateElement()) {
25130        composeDateTime("date", element.getDateElement());
25131      }
25132      if (element.hasPublisherElement()) {
25133        composeString("publisher", element.getPublisherElement());
25134      }
25135      if (element.hasContact()) { 
25136        for (NamingSystem.NamingSystemContactComponent e : element.getContact()) 
25137          composeNamingSystemNamingSystemContactComponent("contact", e);
25138      }
25139      if (element.hasResponsibleElement()) {
25140        composeString("responsible", element.getResponsibleElement());
25141      }
25142      if (element.hasType()) {
25143        composeCodeableConcept("type", element.getType());
25144      }
25145      if (element.hasDescriptionElement()) {
25146        composeString("description", element.getDescriptionElement());
25147      }
25148      if (element.hasUseContext()) { 
25149        for (CodeableConcept e : element.getUseContext()) 
25150          composeCodeableConcept("useContext", e);
25151      }
25152      if (element.hasUsageElement()) {
25153        composeString("usage", element.getUsageElement());
25154      }
25155      if (element.hasUniqueId()) { 
25156        for (NamingSystem.NamingSystemUniqueIdComponent e : element.getUniqueId()) 
25157          composeNamingSystemNamingSystemUniqueIdComponent("uniqueId", e);
25158      }
25159      if (element.hasReplacedBy()) {
25160        composeReference("replacedBy", element.getReplacedBy());
25161      }
25162      composeElementClose(element);
25163      xml.exit(FHIR_NS, name);
25164    }
25165  }
25166
25167  protected void composeNamingSystemNamingSystemContactComponent(String name, NamingSystem.NamingSystemContactComponent element) throws IOException {
25168    if (element != null) {
25169      composeElementAttributes(element);
25170      xml.enter(FHIR_NS, name);
25171      composeBackboneElements(element);
25172      if (element.hasNameElement()) {
25173        composeString("name", element.getNameElement());
25174      }
25175      if (element.hasTelecom()) { 
25176        for (ContactPoint e : element.getTelecom()) 
25177          composeContactPoint("telecom", e);
25178      }
25179      composeElementClose(element);
25180      xml.exit(FHIR_NS, name);
25181    }
25182  }
25183
25184  protected void composeNamingSystemNamingSystemUniqueIdComponent(String name, NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
25185    if (element != null) {
25186      composeElementAttributes(element);
25187      xml.enter(FHIR_NS, name);
25188      composeBackboneElements(element);
25189      if (element.hasTypeElement())
25190        composeEnumeration("type", element.getTypeElement(), new NamingSystem.NamingSystemIdentifierTypeEnumFactory());
25191      if (element.hasValueElement()) {
25192        composeString("value", element.getValueElement());
25193      }
25194      if (element.hasPreferredElement()) {
25195        composeBoolean("preferred", element.getPreferredElement());
25196      }
25197      if (element.hasPeriod()) {
25198        composePeriod("period", element.getPeriod());
25199      }
25200      composeElementClose(element);
25201      xml.exit(FHIR_NS, name);
25202    }
25203  }
25204
25205  protected void composeNutritionOrder(String name, NutritionOrder element) throws IOException {
25206    if (element != null) {
25207      composeDomainResourceAttributes(element);
25208      xml.enter(FHIR_NS, name);
25209      composeDomainResourceElements(element);
25210      if (element.hasIdentifier()) { 
25211        for (Identifier e : element.getIdentifier()) 
25212          composeIdentifier("identifier", e);
25213      }
25214      if (element.hasStatusElement())
25215        composeEnumeration("status", element.getStatusElement(), new NutritionOrder.NutritionOrderStatusEnumFactory());
25216      if (element.hasPatient()) {
25217        composeReference("patient", element.getPatient());
25218      }
25219      if (element.hasEncounter()) {
25220        composeReference("encounter", element.getEncounter());
25221      }
25222      if (element.hasDateTimeElement()) {
25223        composeDateTime("dateTime", element.getDateTimeElement());
25224      }
25225      if (element.hasOrderer()) {
25226        composeReference("orderer", element.getOrderer());
25227      }
25228      if (element.hasAllergyIntolerance()) { 
25229        for (Reference e : element.getAllergyIntolerance()) 
25230          composeReference("allergyIntolerance", e);
25231      }
25232      if (element.hasFoodPreferenceModifier()) { 
25233        for (CodeableConcept e : element.getFoodPreferenceModifier()) 
25234          composeCodeableConcept("foodPreferenceModifier", e);
25235      }
25236      if (element.hasExcludeFoodModifier()) { 
25237        for (CodeableConcept e : element.getExcludeFoodModifier()) 
25238          composeCodeableConcept("excludeFoodModifier", e);
25239      }
25240      if (element.hasOralDiet()) {
25241        composeNutritionOrderNutritionOrderOralDietComponent("oralDiet", element.getOralDiet());
25242      }
25243      if (element.hasSupplement()) { 
25244        for (NutritionOrder.NutritionOrderSupplementComponent e : element.getSupplement()) 
25245          composeNutritionOrderNutritionOrderSupplementComponent("supplement", e);
25246      }
25247      if (element.hasEnteralFormula()) {
25248        composeNutritionOrderNutritionOrderEnteralFormulaComponent("enteralFormula", element.getEnteralFormula());
25249      }
25250      composeElementClose(element);
25251      xml.exit(FHIR_NS, name);
25252    }
25253  }
25254
25255  protected void composeNutritionOrderNutritionOrderOralDietComponent(String name, NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
25256    if (element != null) {
25257      composeElementAttributes(element);
25258      xml.enter(FHIR_NS, name);
25259      composeBackboneElements(element);
25260      if (element.hasType()) { 
25261        for (CodeableConcept e : element.getType()) 
25262          composeCodeableConcept("type", e);
25263      }
25264      if (element.hasSchedule()) { 
25265        for (Timing e : element.getSchedule()) 
25266          composeTiming("schedule", e);
25267      }
25268      if (element.hasNutrient()) { 
25269        for (NutritionOrder.NutritionOrderOralDietNutrientComponent e : element.getNutrient()) 
25270          composeNutritionOrderNutritionOrderOralDietNutrientComponent("nutrient", e);
25271      }
25272      if (element.hasTexture()) { 
25273        for (NutritionOrder.NutritionOrderOralDietTextureComponent e : element.getTexture()) 
25274          composeNutritionOrderNutritionOrderOralDietTextureComponent("texture", e);
25275      }
25276      if (element.hasFluidConsistencyType()) { 
25277        for (CodeableConcept e : element.getFluidConsistencyType()) 
25278          composeCodeableConcept("fluidConsistencyType", e);
25279      }
25280      if (element.hasInstructionElement()) {
25281        composeString("instruction", element.getInstructionElement());
25282      }
25283      composeElementClose(element);
25284      xml.exit(FHIR_NS, name);
25285    }
25286  }
25287
25288  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponent(String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
25289    if (element != null) {
25290      composeElementAttributes(element);
25291      xml.enter(FHIR_NS, name);
25292      composeBackboneElements(element);
25293      if (element.hasModifier()) {
25294        composeCodeableConcept("modifier", element.getModifier());
25295      }
25296      if (element.hasAmount()) {
25297        composeSimpleQuantity("amount", element.getAmount());
25298      }
25299      composeElementClose(element);
25300      xml.exit(FHIR_NS, name);
25301    }
25302  }
25303
25304  protected void composeNutritionOrderNutritionOrderOralDietTextureComponent(String name, NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
25305    if (element != null) {
25306      composeElementAttributes(element);
25307      xml.enter(FHIR_NS, name);
25308      composeBackboneElements(element);
25309      if (element.hasModifier()) {
25310        composeCodeableConcept("modifier", element.getModifier());
25311      }
25312      if (element.hasFoodType()) {
25313        composeCodeableConcept("foodType", element.getFoodType());
25314      }
25315      composeElementClose(element);
25316      xml.exit(FHIR_NS, name);
25317    }
25318  }
25319
25320  protected void composeNutritionOrderNutritionOrderSupplementComponent(String name, NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
25321    if (element != null) {
25322      composeElementAttributes(element);
25323      xml.enter(FHIR_NS, name);
25324      composeBackboneElements(element);
25325      if (element.hasType()) {
25326        composeCodeableConcept("type", element.getType());
25327      }
25328      if (element.hasProductNameElement()) {
25329        composeString("productName", element.getProductNameElement());
25330      }
25331      if (element.hasSchedule()) { 
25332        for (Timing e : element.getSchedule()) 
25333          composeTiming("schedule", e);
25334      }
25335      if (element.hasQuantity()) {
25336        composeSimpleQuantity("quantity", element.getQuantity());
25337      }
25338      if (element.hasInstructionElement()) {
25339        composeString("instruction", element.getInstructionElement());
25340      }
25341      composeElementClose(element);
25342      xml.exit(FHIR_NS, name);
25343    }
25344  }
25345
25346  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
25347    if (element != null) {
25348      composeElementAttributes(element);
25349      xml.enter(FHIR_NS, name);
25350      composeBackboneElements(element);
25351      if (element.hasBaseFormulaType()) {
25352        composeCodeableConcept("baseFormulaType", element.getBaseFormulaType());
25353      }
25354      if (element.hasBaseFormulaProductNameElement()) {
25355        composeString("baseFormulaProductName", element.getBaseFormulaProductNameElement());
25356      }
25357      if (element.hasAdditiveType()) {
25358        composeCodeableConcept("additiveType", element.getAdditiveType());
25359      }
25360      if (element.hasAdditiveProductNameElement()) {
25361        composeString("additiveProductName", element.getAdditiveProductNameElement());
25362      }
25363      if (element.hasCaloricDensity()) {
25364        composeSimpleQuantity("caloricDensity", element.getCaloricDensity());
25365      }
25366      if (element.hasRouteofAdministration()) {
25367        composeCodeableConcept("routeofAdministration", element.getRouteofAdministration());
25368      }
25369      if (element.hasAdministration()) { 
25370        for (NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent e : element.getAdministration()) 
25371          composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent("administration", e);
25372      }
25373      if (element.hasMaxVolumeToDeliver()) {
25374        composeSimpleQuantity("maxVolumeToDeliver", element.getMaxVolumeToDeliver());
25375      }
25376      if (element.hasAdministrationInstructionElement()) {
25377        composeString("administrationInstruction", element.getAdministrationInstructionElement());
25378      }
25379      composeElementClose(element);
25380      xml.exit(FHIR_NS, name);
25381    }
25382  }
25383
25384  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
25385    if (element != null) {
25386      composeElementAttributes(element);
25387      xml.enter(FHIR_NS, name);
25388      composeBackboneElements(element);
25389      if (element.hasSchedule()) {
25390        composeTiming("schedule", element.getSchedule());
25391      }
25392      if (element.hasQuantity()) {
25393        composeSimpleQuantity("quantity", element.getQuantity());
25394      }
25395      if (element.hasRate()) {
25396        composeType("rate", element.getRate());
25397      }      composeElementClose(element);
25398      xml.exit(FHIR_NS, name);
25399    }
25400  }
25401
25402  protected void composeObservation(String name, Observation element) throws IOException {
25403    if (element != null) {
25404      composeDomainResourceAttributes(element);
25405      xml.enter(FHIR_NS, name);
25406      composeDomainResourceElements(element);
25407      if (element.hasIdentifier()) { 
25408        for (Identifier e : element.getIdentifier()) 
25409          composeIdentifier("identifier", e);
25410      }
25411      if (element.hasStatusElement())
25412        composeEnumeration("status", element.getStatusElement(), new Observation.ObservationStatusEnumFactory());
25413      if (element.hasCategory()) {
25414        composeCodeableConcept("category", element.getCategory());
25415      }
25416      if (element.hasCode()) {
25417        composeCodeableConcept("code", element.getCode());
25418      }
25419      if (element.hasSubject()) {
25420        composeReference("subject", element.getSubject());
25421      }
25422      if (element.hasEncounter()) {
25423        composeReference("encounter", element.getEncounter());
25424      }
25425      if (element.hasEffective()) {
25426        composeType("effective", element.getEffective());
25427      }      if (element.hasIssuedElement()) {
25428        composeInstant("issued", element.getIssuedElement());
25429      }
25430      if (element.hasPerformer()) { 
25431        for (Reference e : element.getPerformer()) 
25432          composeReference("performer", e);
25433      }
25434      if (element.hasValue()) {
25435        composeType("value", element.getValue());
25436      }      if (element.hasDataAbsentReason()) {
25437        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
25438      }
25439      if (element.hasInterpretation()) {
25440        composeCodeableConcept("interpretation", element.getInterpretation());
25441      }
25442      if (element.hasCommentElement()) {
25443        composeString("comment", element.getCommentElement());
25444      }
25445      if (element.hasBodySite()) {
25446        composeCodeableConcept("bodySite", element.getBodySite());
25447      }
25448      if (element.hasMethod()) {
25449        composeCodeableConcept("method", element.getMethod());
25450      }
25451      if (element.hasSpecimen()) {
25452        composeReference("specimen", element.getSpecimen());
25453      }
25454      if (element.hasDevice()) {
25455        composeReference("device", element.getDevice());
25456      }
25457      if (element.hasReferenceRange()) { 
25458        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
25459          composeObservationObservationReferenceRangeComponent("referenceRange", e);
25460      }
25461      if (element.hasRelated()) { 
25462        for (Observation.ObservationRelatedComponent e : element.getRelated()) 
25463          composeObservationObservationRelatedComponent("related", e);
25464      }
25465      if (element.hasComponent()) { 
25466        for (Observation.ObservationComponentComponent e : element.getComponent()) 
25467          composeObservationObservationComponentComponent("component", e);
25468      }
25469      composeElementClose(element);
25470      xml.exit(FHIR_NS, name);
25471    }
25472  }
25473
25474  protected void composeObservationObservationReferenceRangeComponent(String name, Observation.ObservationReferenceRangeComponent element) throws IOException {
25475    if (element != null) {
25476      composeElementAttributes(element);
25477      xml.enter(FHIR_NS, name);
25478      composeBackboneElements(element);
25479      if (element.hasLow()) {
25480        composeSimpleQuantity("low", element.getLow());
25481      }
25482      if (element.hasHigh()) {
25483        composeSimpleQuantity("high", element.getHigh());
25484      }
25485      if (element.hasMeaning()) {
25486        composeCodeableConcept("meaning", element.getMeaning());
25487      }
25488      if (element.hasAge()) {
25489        composeRange("age", element.getAge());
25490      }
25491      if (element.hasTextElement()) {
25492        composeString("text", element.getTextElement());
25493      }
25494      composeElementClose(element);
25495      xml.exit(FHIR_NS, name);
25496    }
25497  }
25498
25499  protected void composeObservationObservationRelatedComponent(String name, Observation.ObservationRelatedComponent element) throws IOException {
25500    if (element != null) {
25501      composeElementAttributes(element);
25502      xml.enter(FHIR_NS, name);
25503      composeBackboneElements(element);
25504      if (element.hasTypeElement())
25505        composeEnumeration("type", element.getTypeElement(), new Observation.ObservationRelationshipTypeEnumFactory());
25506      if (element.hasTarget()) {
25507        composeReference("target", element.getTarget());
25508      }
25509      composeElementClose(element);
25510      xml.exit(FHIR_NS, name);
25511    }
25512  }
25513
25514  protected void composeObservationObservationComponentComponent(String name, Observation.ObservationComponentComponent element) throws IOException {
25515    if (element != null) {
25516      composeElementAttributes(element);
25517      xml.enter(FHIR_NS, name);
25518      composeBackboneElements(element);
25519      if (element.hasCode()) {
25520        composeCodeableConcept("code", element.getCode());
25521      }
25522      if (element.hasValue()) {
25523        composeType("value", element.getValue());
25524      }      if (element.hasDataAbsentReason()) {
25525        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
25526      }
25527      if (element.hasReferenceRange()) { 
25528        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
25529          composeObservationObservationReferenceRangeComponent("referenceRange", e);
25530      }
25531      composeElementClose(element);
25532      xml.exit(FHIR_NS, name);
25533    }
25534  }
25535
25536  protected void composeOperationDefinition(String name, OperationDefinition element) throws IOException {
25537    if (element != null) {
25538      composeDomainResourceAttributes(element);
25539      xml.enter(FHIR_NS, name);
25540      composeDomainResourceElements(element);
25541      if (element.hasUrlElement()) {
25542        composeUri("url", element.getUrlElement());
25543      }
25544      if (element.hasVersionElement()) {
25545        composeString("version", element.getVersionElement());
25546      }
25547      if (element.hasNameElement()) {
25548        composeString("name", element.getNameElement());
25549      }
25550      if (element.hasStatusElement())
25551        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
25552      if (element.hasKindElement())
25553        composeEnumeration("kind", element.getKindElement(), new OperationDefinition.OperationKindEnumFactory());
25554      if (element.hasExperimentalElement()) {
25555        composeBoolean("experimental", element.getExperimentalElement());
25556      }
25557      if (element.hasDateElement()) {
25558        composeDateTime("date", element.getDateElement());
25559      }
25560      if (element.hasPublisherElement()) {
25561        composeString("publisher", element.getPublisherElement());
25562      }
25563      if (element.hasContact()) { 
25564        for (OperationDefinition.OperationDefinitionContactComponent e : element.getContact()) 
25565          composeOperationDefinitionOperationDefinitionContactComponent("contact", e);
25566      }
25567      if (element.hasDescriptionElement()) {
25568        composeString("description", element.getDescriptionElement());
25569      }
25570      if (element.hasUseContext()) { 
25571        for (CodeableConcept e : element.getUseContext()) 
25572          composeCodeableConcept("useContext", e);
25573      }
25574      if (element.hasRequirementsElement()) {
25575        composeString("requirements", element.getRequirementsElement());
25576      }
25577      if (element.hasIdempotentElement()) {
25578        composeBoolean("idempotent", element.getIdempotentElement());
25579      }
25580      if (element.hasCodeElement()) {
25581        composeCode("code", element.getCodeElement());
25582      }
25583      if (element.hasCommentElement()) {
25584        composeString("comment", element.getCommentElement());
25585      }
25586      if (element.hasBase()) {
25587        composeReference("base", element.getBase());
25588      }
25589      if (element.hasSystemElement()) {
25590        composeBoolean("system", element.getSystemElement());
25591      }
25592      if (element.hasType()) { 
25593        for (CodeType e : element.getType()) 
25594          composeCode("type", e);
25595      }
25596      if (element.hasInstanceElement()) {
25597        composeBoolean("instance", element.getInstanceElement());
25598      }
25599      if (element.hasParameter()) { 
25600        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getParameter()) 
25601          composeOperationDefinitionOperationDefinitionParameterComponent("parameter", e);
25602      }
25603      composeElementClose(element);
25604      xml.exit(FHIR_NS, name);
25605    }
25606  }
25607
25608  protected void composeOperationDefinitionOperationDefinitionContactComponent(String name, OperationDefinition.OperationDefinitionContactComponent element) throws IOException {
25609    if (element != null) {
25610      composeElementAttributes(element);
25611      xml.enter(FHIR_NS, name);
25612      composeBackboneElements(element);
25613      if (element.hasNameElement()) {
25614        composeString("name", element.getNameElement());
25615      }
25616      if (element.hasTelecom()) { 
25617        for (ContactPoint e : element.getTelecom()) 
25618          composeContactPoint("telecom", e);
25619      }
25620      composeElementClose(element);
25621      xml.exit(FHIR_NS, name);
25622    }
25623  }
25624
25625  protected void composeOperationDefinitionOperationDefinitionParameterComponent(String name, OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
25626    if (element != null) {
25627      composeElementAttributes(element);
25628      xml.enter(FHIR_NS, name);
25629      composeBackboneElements(element);
25630      if (element.hasNameElement()) {
25631        composeCode("name", element.getNameElement());
25632      }
25633      if (element.hasUseElement())
25634        composeEnumeration("use", element.getUseElement(), new OperationDefinition.OperationParameterUseEnumFactory());
25635      if (element.hasMinElement()) {
25636        composeInteger("min", element.getMinElement());
25637      }
25638      if (element.hasMaxElement()) {
25639        composeString("max", element.getMaxElement());
25640      }
25641      if (element.hasDocumentationElement()) {
25642        composeString("documentation", element.getDocumentationElement());
25643      }
25644      if (element.hasTypeElement()) {
25645        composeCode("type", element.getTypeElement());
25646      }
25647      if (element.hasSearchTypeElement())
25648        composeEnumeration("searchType", element.getSearchTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
25649      if (element.hasProfile()) {
25650        composeReference("profile", element.getProfile());
25651      }
25652      if (element.hasBinding()) {
25653        composeOperationDefinitionOperationDefinitionParameterBindingComponent("binding", element.getBinding());
25654      }
25655      if (element.hasPart()) { 
25656        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getPart()) 
25657          composeOperationDefinitionOperationDefinitionParameterComponent("part", e);
25658      }
25659      composeElementClose(element);
25660      xml.exit(FHIR_NS, name);
25661    }
25662  }
25663
25664  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponent(String name, OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
25665    if (element != null) {
25666      composeElementAttributes(element);
25667      xml.enter(FHIR_NS, name);
25668      composeBackboneElements(element);
25669      if (element.hasStrengthElement())
25670        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
25671      if (element.hasValueSet()) {
25672        composeType("valueSet", element.getValueSet());
25673      }      composeElementClose(element);
25674      xml.exit(FHIR_NS, name);
25675    }
25676  }
25677
25678  protected void composeOperationOutcome(String name, OperationOutcome element) throws IOException {
25679    if (element != null) {
25680      composeDomainResourceAttributes(element);
25681      xml.enter(FHIR_NS, name);
25682      composeDomainResourceElements(element);
25683      if (element.hasIssue()) { 
25684        for (OperationOutcome.OperationOutcomeIssueComponent e : element.getIssue()) 
25685          composeOperationOutcomeOperationOutcomeIssueComponent("issue", e);
25686      }
25687      composeElementClose(element);
25688      xml.exit(FHIR_NS, name);
25689    }
25690  }
25691
25692  protected void composeOperationOutcomeOperationOutcomeIssueComponent(String name, OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
25693    if (element != null) {
25694      composeElementAttributes(element);
25695      xml.enter(FHIR_NS, name);
25696      composeBackboneElements(element);
25697      if (element.hasSeverityElement())
25698        composeEnumeration("severity", element.getSeverityElement(), new OperationOutcome.IssueSeverityEnumFactory());
25699      if (element.hasCodeElement())
25700        composeEnumeration("code", element.getCodeElement(), new OperationOutcome.IssueTypeEnumFactory());
25701      if (element.hasDetails()) {
25702        composeCodeableConcept("details", element.getDetails());
25703      }
25704      if (element.hasDiagnosticsElement()) {
25705        composeString("diagnostics", element.getDiagnosticsElement());
25706      }
25707      if (element.hasLocation()) { 
25708        for (StringType e : element.getLocation()) 
25709          composeString("location", e);
25710      }
25711      if (element.hasExpression()) { 
25712        for (StringType e : element.getExpression()) 
25713          composeString("expression", e);
25714      }
25715      composeElementClose(element);
25716      xml.exit(FHIR_NS, name);
25717    }
25718  }
25719
25720  protected void composeOrder(String name, Order element) throws IOException {
25721    if (element != null) {
25722      composeDomainResourceAttributes(element);
25723      xml.enter(FHIR_NS, name);
25724      composeDomainResourceElements(element);
25725      if (element.hasIdentifier()) { 
25726        for (Identifier e : element.getIdentifier()) 
25727          composeIdentifier("identifier", e);
25728      }
25729      if (element.hasDateElement()) {
25730        composeDateTime("date", element.getDateElement());
25731      }
25732      if (element.hasSubject()) {
25733        composeReference("subject", element.getSubject());
25734      }
25735      if (element.hasSource()) {
25736        composeReference("source", element.getSource());
25737      }
25738      if (element.hasTarget()) {
25739        composeReference("target", element.getTarget());
25740      }
25741      if (element.hasReason()) {
25742        composeType("reason", element.getReason());
25743      }      if (element.hasWhen()) {
25744        composeOrderOrderWhenComponent("when", element.getWhen());
25745      }
25746      if (element.hasDetail()) { 
25747        for (Reference e : element.getDetail()) 
25748          composeReference("detail", e);
25749      }
25750      composeElementClose(element);
25751      xml.exit(FHIR_NS, name);
25752    }
25753  }
25754
25755  protected void composeOrderOrderWhenComponent(String name, Order.OrderWhenComponent element) throws IOException {
25756    if (element != null) {
25757      composeElementAttributes(element);
25758      xml.enter(FHIR_NS, name);
25759      composeBackboneElements(element);
25760      if (element.hasCode()) {
25761        composeCodeableConcept("code", element.getCode());
25762      }
25763      if (element.hasSchedule()) {
25764        composeTiming("schedule", element.getSchedule());
25765      }
25766      composeElementClose(element);
25767      xml.exit(FHIR_NS, name);
25768    }
25769  }
25770
25771  protected void composeOrderResponse(String name, OrderResponse element) throws IOException {
25772    if (element != null) {
25773      composeDomainResourceAttributes(element);
25774      xml.enter(FHIR_NS, name);
25775      composeDomainResourceElements(element);
25776      if (element.hasIdentifier()) { 
25777        for (Identifier e : element.getIdentifier()) 
25778          composeIdentifier("identifier", e);
25779      }
25780      if (element.hasRequest()) {
25781        composeReference("request", element.getRequest());
25782      }
25783      if (element.hasDateElement()) {
25784        composeDateTime("date", element.getDateElement());
25785      }
25786      if (element.hasWho()) {
25787        composeReference("who", element.getWho());
25788      }
25789      if (element.hasOrderStatusElement())
25790        composeEnumeration("orderStatus", element.getOrderStatusElement(), new OrderResponse.OrderStatusEnumFactory());
25791      if (element.hasDescriptionElement()) {
25792        composeString("description", element.getDescriptionElement());
25793      }
25794      if (element.hasFulfillment()) { 
25795        for (Reference e : element.getFulfillment()) 
25796          composeReference("fulfillment", e);
25797      }
25798      composeElementClose(element);
25799      xml.exit(FHIR_NS, name);
25800    }
25801  }
25802
25803  protected void composeOrderSet(String name, OrderSet element) throws IOException {
25804    if (element != null) {
25805      composeDomainResourceAttributes(element);
25806      xml.enter(FHIR_NS, name);
25807      composeDomainResourceElements(element);
25808      if (element.hasModuleMetadata()) {
25809        composeModuleMetadata("moduleMetadata", element.getModuleMetadata());
25810      }
25811      if (element.hasLibrary()) { 
25812        for (Reference e : element.getLibrary()) 
25813          composeReference("library", e);
25814      }
25815      if (element.hasAction()) { 
25816        for (ActionDefinition e : element.getAction()) 
25817          composeActionDefinition("action", e);
25818      }
25819      composeElementClose(element);
25820      xml.exit(FHIR_NS, name);
25821    }
25822  }
25823
25824  protected void composeOrganization(String name, Organization element) throws IOException {
25825    if (element != null) {
25826      composeDomainResourceAttributes(element);
25827      xml.enter(FHIR_NS, name);
25828      composeDomainResourceElements(element);
25829      if (element.hasIdentifier()) { 
25830        for (Identifier e : element.getIdentifier()) 
25831          composeIdentifier("identifier", e);
25832      }
25833      if (element.hasActiveElement()) {
25834        composeBoolean("active", element.getActiveElement());
25835      }
25836      if (element.hasType()) {
25837        composeCodeableConcept("type", element.getType());
25838      }
25839      if (element.hasNameElement()) {
25840        composeString("name", element.getNameElement());
25841      }
25842      if (element.hasTelecom()) { 
25843        for (ContactPoint e : element.getTelecom()) 
25844          composeContactPoint("telecom", e);
25845      }
25846      if (element.hasAddress()) { 
25847        for (Address e : element.getAddress()) 
25848          composeAddress("address", e);
25849      }
25850      if (element.hasPartOf()) {
25851        composeReference("partOf", element.getPartOf());
25852      }
25853      if (element.hasContact()) { 
25854        for (Organization.OrganizationContactComponent e : element.getContact()) 
25855          composeOrganizationOrganizationContactComponent("contact", e);
25856      }
25857      composeElementClose(element);
25858      xml.exit(FHIR_NS, name);
25859    }
25860  }
25861
25862  protected void composeOrganizationOrganizationContactComponent(String name, Organization.OrganizationContactComponent element) throws IOException {
25863    if (element != null) {
25864      composeElementAttributes(element);
25865      xml.enter(FHIR_NS, name);
25866      composeBackboneElements(element);
25867      if (element.hasPurpose()) {
25868        composeCodeableConcept("purpose", element.getPurpose());
25869      }
25870      if (element.hasName()) {
25871        composeHumanName("name", element.getName());
25872      }
25873      if (element.hasTelecom()) { 
25874        for (ContactPoint e : element.getTelecom()) 
25875          composeContactPoint("telecom", e);
25876      }
25877      if (element.hasAddress()) {
25878        composeAddress("address", element.getAddress());
25879      }
25880      composeElementClose(element);
25881      xml.exit(FHIR_NS, name);
25882    }
25883  }
25884
25885  protected void composePatient(String name, Patient element) throws IOException {
25886    if (element != null) {
25887      composeDomainResourceAttributes(element);
25888      xml.enter(FHIR_NS, name);
25889      composeDomainResourceElements(element);
25890      if (element.hasIdentifier()) { 
25891        for (Identifier e : element.getIdentifier()) 
25892          composeIdentifier("identifier", e);
25893      }
25894      if (element.hasActiveElement()) {
25895        composeBoolean("active", element.getActiveElement());
25896      }
25897      if (element.hasName()) { 
25898        for (HumanName e : element.getName()) 
25899          composeHumanName("name", e);
25900      }
25901      if (element.hasTelecom()) { 
25902        for (ContactPoint e : element.getTelecom()) 
25903          composeContactPoint("telecom", e);
25904      }
25905      if (element.hasGenderElement())
25906        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
25907      if (element.hasBirthDateElement()) {
25908        composeDate("birthDate", element.getBirthDateElement());
25909      }
25910      if (element.hasDeceased()) {
25911        composeType("deceased", element.getDeceased());
25912      }      if (element.hasAddress()) { 
25913        for (Address e : element.getAddress()) 
25914          composeAddress("address", e);
25915      }
25916      if (element.hasMaritalStatus()) {
25917        composeCodeableConcept("maritalStatus", element.getMaritalStatus());
25918      }
25919      if (element.hasMultipleBirth()) {
25920        composeType("multipleBirth", element.getMultipleBirth());
25921      }      if (element.hasPhoto()) { 
25922        for (Attachment e : element.getPhoto()) 
25923          composeAttachment("photo", e);
25924      }
25925      if (element.hasContact()) { 
25926        for (Patient.ContactComponent e : element.getContact()) 
25927          composePatientContactComponent("contact", e);
25928      }
25929      if (element.hasAnimal()) {
25930        composePatientAnimalComponent("animal", element.getAnimal());
25931      }
25932      if (element.hasCommunication()) { 
25933        for (Patient.PatientCommunicationComponent e : element.getCommunication()) 
25934          composePatientPatientCommunicationComponent("communication", e);
25935      }
25936      if (element.hasCareProvider()) { 
25937        for (Reference e : element.getCareProvider()) 
25938          composeReference("careProvider", e);
25939      }
25940      if (element.hasManagingOrganization()) {
25941        composeReference("managingOrganization", element.getManagingOrganization());
25942      }
25943      if (element.hasLink()) { 
25944        for (Patient.PatientLinkComponent e : element.getLink()) 
25945          composePatientPatientLinkComponent("link", e);
25946      }
25947      composeElementClose(element);
25948      xml.exit(FHIR_NS, name);
25949    }
25950  }
25951
25952  protected void composePatientContactComponent(String name, Patient.ContactComponent element) throws IOException {
25953    if (element != null) {
25954      composeElementAttributes(element);
25955      xml.enter(FHIR_NS, name);
25956      composeBackboneElements(element);
25957      if (element.hasRelationship()) { 
25958        for (CodeableConcept e : element.getRelationship()) 
25959          composeCodeableConcept("relationship", e);
25960      }
25961      if (element.hasName()) {
25962        composeHumanName("name", element.getName());
25963      }
25964      if (element.hasTelecom()) { 
25965        for (ContactPoint e : element.getTelecom()) 
25966          composeContactPoint("telecom", e);
25967      }
25968      if (element.hasAddress()) {
25969        composeAddress("address", element.getAddress());
25970      }
25971      if (element.hasGenderElement())
25972        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
25973      if (element.hasOrganization()) {
25974        composeReference("organization", element.getOrganization());
25975      }
25976      if (element.hasPeriod()) {
25977        composePeriod("period", element.getPeriod());
25978      }
25979      composeElementClose(element);
25980      xml.exit(FHIR_NS, name);
25981    }
25982  }
25983
25984  protected void composePatientAnimalComponent(String name, Patient.AnimalComponent element) throws IOException {
25985    if (element != null) {
25986      composeElementAttributes(element);
25987      xml.enter(FHIR_NS, name);
25988      composeBackboneElements(element);
25989      if (element.hasSpecies()) {
25990        composeCodeableConcept("species", element.getSpecies());
25991      }
25992      if (element.hasBreed()) {
25993        composeCodeableConcept("breed", element.getBreed());
25994      }
25995      if (element.hasGenderStatus()) {
25996        composeCodeableConcept("genderStatus", element.getGenderStatus());
25997      }
25998      composeElementClose(element);
25999      xml.exit(FHIR_NS, name);
26000    }
26001  }
26002
26003  protected void composePatientPatientCommunicationComponent(String name, Patient.PatientCommunicationComponent element) throws IOException {
26004    if (element != null) {
26005      composeElementAttributes(element);
26006      xml.enter(FHIR_NS, name);
26007      composeBackboneElements(element);
26008      if (element.hasLanguage()) {
26009        composeCodeableConcept("language", element.getLanguage());
26010      }
26011      if (element.hasPreferredElement()) {
26012        composeBoolean("preferred", element.getPreferredElement());
26013      }
26014      composeElementClose(element);
26015      xml.exit(FHIR_NS, name);
26016    }
26017  }
26018
26019  protected void composePatientPatientLinkComponent(String name, Patient.PatientLinkComponent element) throws IOException {
26020    if (element != null) {
26021      composeElementAttributes(element);
26022      xml.enter(FHIR_NS, name);
26023      composeBackboneElements(element);
26024      if (element.hasOther()) {
26025        composeReference("other", element.getOther());
26026      }
26027      if (element.hasTypeElement())
26028        composeEnumeration("type", element.getTypeElement(), new Patient.LinkTypeEnumFactory());
26029      composeElementClose(element);
26030      xml.exit(FHIR_NS, name);
26031    }
26032  }
26033
26034  protected void composePaymentNotice(String name, PaymentNotice element) throws IOException {
26035    if (element != null) {
26036      composeDomainResourceAttributes(element);
26037      xml.enter(FHIR_NS, name);
26038      composeDomainResourceElements(element);
26039      if (element.hasIdentifier()) { 
26040        for (Identifier e : element.getIdentifier()) 
26041          composeIdentifier("identifier", e);
26042      }
26043      if (element.hasRuleset()) {
26044        composeCoding("ruleset", element.getRuleset());
26045      }
26046      if (element.hasOriginalRuleset()) {
26047        composeCoding("originalRuleset", element.getOriginalRuleset());
26048      }
26049      if (element.hasCreatedElement()) {
26050        composeDateTime("created", element.getCreatedElement());
26051      }
26052      if (element.hasTarget()) {
26053        composeType("target", element.getTarget());
26054      }      if (element.hasProvider()) {
26055        composeType("provider", element.getProvider());
26056      }      if (element.hasOrganization()) {
26057        composeType("organization", element.getOrganization());
26058      }      if (element.hasRequest()) {
26059        composeType("request", element.getRequest());
26060      }      if (element.hasResponse()) {
26061        composeType("response", element.getResponse());
26062      }      if (element.hasPaymentStatus()) {
26063        composeCoding("paymentStatus", element.getPaymentStatus());
26064      }
26065      if (element.hasStatusDateElement()) {
26066        composeDate("statusDate", element.getStatusDateElement());
26067      }
26068      composeElementClose(element);
26069      xml.exit(FHIR_NS, name);
26070    }
26071  }
26072
26073  protected void composePaymentReconciliation(String name, PaymentReconciliation element) throws IOException {
26074    if (element != null) {
26075      composeDomainResourceAttributes(element);
26076      xml.enter(FHIR_NS, name);
26077      composeDomainResourceElements(element);
26078      if (element.hasIdentifier()) { 
26079        for (Identifier e : element.getIdentifier()) 
26080          composeIdentifier("identifier", e);
26081      }
26082      if (element.hasRequest()) {
26083        composeType("request", element.getRequest());
26084      }      if (element.hasOutcomeElement())
26085        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
26086      if (element.hasDispositionElement()) {
26087        composeString("disposition", element.getDispositionElement());
26088      }
26089      if (element.hasRuleset()) {
26090        composeCoding("ruleset", element.getRuleset());
26091      }
26092      if (element.hasOriginalRuleset()) {
26093        composeCoding("originalRuleset", element.getOriginalRuleset());
26094      }
26095      if (element.hasCreatedElement()) {
26096        composeDateTime("created", element.getCreatedElement());
26097      }
26098      if (element.hasPeriod()) {
26099        composePeriod("period", element.getPeriod());
26100      }
26101      if (element.hasOrganization()) {
26102        composeType("organization", element.getOrganization());
26103      }      if (element.hasRequestProvider()) {
26104        composeType("requestProvider", element.getRequestProvider());
26105      }      if (element.hasRequestOrganization()) {
26106        composeType("requestOrganization", element.getRequestOrganization());
26107      }      if (element.hasDetail()) { 
26108        for (PaymentReconciliation.DetailsComponent e : element.getDetail()) 
26109          composePaymentReconciliationDetailsComponent("detail", e);
26110      }
26111      if (element.hasForm()) {
26112        composeCoding("form", element.getForm());
26113      }
26114      if (element.hasTotal()) {
26115        composeMoney("total", element.getTotal());
26116      }
26117      if (element.hasNote()) { 
26118        for (PaymentReconciliation.NotesComponent e : element.getNote()) 
26119          composePaymentReconciliationNotesComponent("note", e);
26120      }
26121      composeElementClose(element);
26122      xml.exit(FHIR_NS, name);
26123    }
26124  }
26125
26126  protected void composePaymentReconciliationDetailsComponent(String name, PaymentReconciliation.DetailsComponent element) throws IOException {
26127    if (element != null) {
26128      composeElementAttributes(element);
26129      xml.enter(FHIR_NS, name);
26130      composeBackboneElements(element);
26131      if (element.hasType()) {
26132        composeCoding("type", element.getType());
26133      }
26134      if (element.hasRequest()) {
26135        composeType("request", element.getRequest());
26136      }      if (element.hasResponce()) {
26137        composeType("responce", element.getResponce());
26138      }      if (element.hasSubmitter()) {
26139        composeType("submitter", element.getSubmitter());
26140      }      if (element.hasPayee()) {
26141        composeType("payee", element.getPayee());
26142      }      if (element.hasDateElement()) {
26143        composeDate("date", element.getDateElement());
26144      }
26145      if (element.hasAmount()) {
26146        composeMoney("amount", element.getAmount());
26147      }
26148      composeElementClose(element);
26149      xml.exit(FHIR_NS, name);
26150    }
26151  }
26152
26153  protected void composePaymentReconciliationNotesComponent(String name, PaymentReconciliation.NotesComponent element) throws IOException {
26154    if (element != null) {
26155      composeElementAttributes(element);
26156      xml.enter(FHIR_NS, name);
26157      composeBackboneElements(element);
26158      if (element.hasType()) {
26159        composeCoding("type", element.getType());
26160      }
26161      if (element.hasTextElement()) {
26162        composeString("text", element.getTextElement());
26163      }
26164      composeElementClose(element);
26165      xml.exit(FHIR_NS, name);
26166    }
26167  }
26168
26169  protected void composePerson(String name, Person element) throws IOException {
26170    if (element != null) {
26171      composeDomainResourceAttributes(element);
26172      xml.enter(FHIR_NS, name);
26173      composeDomainResourceElements(element);
26174      if (element.hasIdentifier()) { 
26175        for (Identifier e : element.getIdentifier()) 
26176          composeIdentifier("identifier", e);
26177      }
26178      if (element.hasName()) { 
26179        for (HumanName e : element.getName()) 
26180          composeHumanName("name", e);
26181      }
26182      if (element.hasTelecom()) { 
26183        for (ContactPoint e : element.getTelecom()) 
26184          composeContactPoint("telecom", e);
26185      }
26186      if (element.hasGenderElement())
26187        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
26188      if (element.hasBirthDateElement()) {
26189        composeDate("birthDate", element.getBirthDateElement());
26190      }
26191      if (element.hasAddress()) { 
26192        for (Address e : element.getAddress()) 
26193          composeAddress("address", e);
26194      }
26195      if (element.hasPhoto()) {
26196        composeAttachment("photo", element.getPhoto());
26197      }
26198      if (element.hasManagingOrganization()) {
26199        composeReference("managingOrganization", element.getManagingOrganization());
26200      }
26201      if (element.hasActiveElement()) {
26202        composeBoolean("active", element.getActiveElement());
26203      }
26204      if (element.hasLink()) { 
26205        for (Person.PersonLinkComponent e : element.getLink()) 
26206          composePersonPersonLinkComponent("link", e);
26207      }
26208      composeElementClose(element);
26209      xml.exit(FHIR_NS, name);
26210    }
26211  }
26212
26213  protected void composePersonPersonLinkComponent(String name, Person.PersonLinkComponent element) throws IOException {
26214    if (element != null) {
26215      composeElementAttributes(element);
26216      xml.enter(FHIR_NS, name);
26217      composeBackboneElements(element);
26218      if (element.hasTarget()) {
26219        composeReference("target", element.getTarget());
26220      }
26221      if (element.hasAssuranceElement())
26222        composeEnumeration("assurance", element.getAssuranceElement(), new Person.IdentityAssuranceLevelEnumFactory());
26223      composeElementClose(element);
26224      xml.exit(FHIR_NS, name);
26225    }
26226  }
26227
26228  protected void composePractitioner(String name, Practitioner element) throws IOException {
26229    if (element != null) {
26230      composeDomainResourceAttributes(element);
26231      xml.enter(FHIR_NS, name);
26232      composeDomainResourceElements(element);
26233      if (element.hasIdentifier()) { 
26234        for (Identifier e : element.getIdentifier()) 
26235          composeIdentifier("identifier", e);
26236      }
26237      if (element.hasActiveElement()) {
26238        composeBoolean("active", element.getActiveElement());
26239      }
26240      if (element.hasName()) { 
26241        for (HumanName e : element.getName()) 
26242          composeHumanName("name", e);
26243      }
26244      if (element.hasTelecom()) { 
26245        for (ContactPoint e : element.getTelecom()) 
26246          composeContactPoint("telecom", e);
26247      }
26248      if (element.hasAddress()) { 
26249        for (Address e : element.getAddress()) 
26250          composeAddress("address", e);
26251      }
26252      if (element.hasGenderElement())
26253        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
26254      if (element.hasBirthDateElement()) {
26255        composeDate("birthDate", element.getBirthDateElement());
26256      }
26257      if (element.hasPhoto()) { 
26258        for (Attachment e : element.getPhoto()) 
26259          composeAttachment("photo", e);
26260      }
26261      if (element.hasPractitionerRole()) { 
26262        for (Practitioner.PractitionerPractitionerRoleComponent e : element.getPractitionerRole()) 
26263          composePractitionerPractitionerPractitionerRoleComponent("practitionerRole", e);
26264      }
26265      if (element.hasQualification()) { 
26266        for (Practitioner.PractitionerQualificationComponent e : element.getQualification()) 
26267          composePractitionerPractitionerQualificationComponent("qualification", e);
26268      }
26269      if (element.hasCommunication()) { 
26270        for (CodeableConcept e : element.getCommunication()) 
26271          composeCodeableConcept("communication", e);
26272      }
26273      composeElementClose(element);
26274      xml.exit(FHIR_NS, name);
26275    }
26276  }
26277
26278  protected void composePractitionerPractitionerPractitionerRoleComponent(String name, Practitioner.PractitionerPractitionerRoleComponent element) throws IOException {
26279    if (element != null) {
26280      composeElementAttributes(element);
26281      xml.enter(FHIR_NS, name);
26282      composeBackboneElements(element);
26283      if (element.hasOrganization()) {
26284        composeReference("organization", element.getOrganization());
26285      }
26286      if (element.hasRole()) {
26287        composeCodeableConcept("role", element.getRole());
26288      }
26289      if (element.hasSpecialty()) { 
26290        for (CodeableConcept e : element.getSpecialty()) 
26291          composeCodeableConcept("specialty", e);
26292      }
26293      if (element.hasIdentifier()) { 
26294        for (Identifier e : element.getIdentifier()) 
26295          composeIdentifier("identifier", e);
26296      }
26297      if (element.hasTelecom()) { 
26298        for (ContactPoint e : element.getTelecom()) 
26299          composeContactPoint("telecom", e);
26300      }
26301      if (element.hasPeriod()) {
26302        composePeriod("period", element.getPeriod());
26303      }
26304      if (element.hasLocation()) { 
26305        for (Reference e : element.getLocation()) 
26306          composeReference("location", e);
26307      }
26308      if (element.hasHealthcareService()) { 
26309        for (Reference e : element.getHealthcareService()) 
26310          composeReference("healthcareService", e);
26311      }
26312      composeElementClose(element);
26313      xml.exit(FHIR_NS, name);
26314    }
26315  }
26316
26317  protected void composePractitionerPractitionerQualificationComponent(String name, Practitioner.PractitionerQualificationComponent element) throws IOException {
26318    if (element != null) {
26319      composeElementAttributes(element);
26320      xml.enter(FHIR_NS, name);
26321      composeBackboneElements(element);
26322      if (element.hasIdentifier()) { 
26323        for (Identifier e : element.getIdentifier()) 
26324          composeIdentifier("identifier", e);
26325      }
26326      if (element.hasCode()) {
26327        composeCodeableConcept("code", element.getCode());
26328      }
26329      if (element.hasPeriod()) {
26330        composePeriod("period", element.getPeriod());
26331      }
26332      if (element.hasIssuer()) {
26333        composeReference("issuer", element.getIssuer());
26334      }
26335      composeElementClose(element);
26336      xml.exit(FHIR_NS, name);
26337    }
26338  }
26339
26340  protected void composePractitionerRole(String name, PractitionerRole element) throws IOException {
26341    if (element != null) {
26342      composeDomainResourceAttributes(element);
26343      xml.enter(FHIR_NS, name);
26344      composeDomainResourceElements(element);
26345      if (element.hasIdentifier()) { 
26346        for (Identifier e : element.getIdentifier()) 
26347          composeIdentifier("identifier", e);
26348      }
26349      if (element.hasActiveElement()) {
26350        composeBoolean("active", element.getActiveElement());
26351      }
26352      if (element.hasPractitioner()) {
26353        composeReference("practitioner", element.getPractitioner());
26354      }
26355      if (element.hasOrganization()) {
26356        composeReference("organization", element.getOrganization());
26357      }
26358      if (element.hasRole()) { 
26359        for (CodeableConcept e : element.getRole()) 
26360          composeCodeableConcept("role", e);
26361      }
26362      if (element.hasSpecialty()) { 
26363        for (CodeableConcept e : element.getSpecialty()) 
26364          composeCodeableConcept("specialty", e);
26365      }
26366      if (element.hasLocation()) { 
26367        for (Reference e : element.getLocation()) 
26368          composeReference("location", e);
26369      }
26370      if (element.hasHealthcareService()) { 
26371        for (Reference e : element.getHealthcareService()) 
26372          composeReference("healthcareService", e);
26373      }
26374      if (element.hasTelecom()) { 
26375        for (ContactPoint e : element.getTelecom()) 
26376          composeContactPoint("telecom", e);
26377      }
26378      if (element.hasPeriod()) {
26379        composePeriod("period", element.getPeriod());
26380      }
26381      if (element.hasAvailableTime()) { 
26382        for (PractitionerRole.PractitionerRoleAvailableTimeComponent e : element.getAvailableTime()) 
26383          composePractitionerRolePractitionerRoleAvailableTimeComponent("availableTime", e);
26384      }
26385      if (element.hasNotAvailable()) { 
26386        for (PractitionerRole.PractitionerRoleNotAvailableComponent e : element.getNotAvailable()) 
26387          composePractitionerRolePractitionerRoleNotAvailableComponent("notAvailable", e);
26388      }
26389      if (element.hasAvailabilityExceptionsElement()) {
26390        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
26391      }
26392      composeElementClose(element);
26393      xml.exit(FHIR_NS, name);
26394    }
26395  }
26396
26397  protected void composePractitionerRolePractitionerRoleAvailableTimeComponent(String name, PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
26398    if (element != null) {
26399      composeElementAttributes(element);
26400      xml.enter(FHIR_NS, name);
26401      composeBackboneElements(element);
26402      if (element.hasDaysOfWeek()) { 
26403        for (CodeType e : element.getDaysOfWeek()) 
26404          composeCode("daysOfWeek", e);
26405      }
26406      if (element.hasAllDayElement()) {
26407        composeBoolean("allDay", element.getAllDayElement());
26408      }
26409      if (element.hasAvailableStartTimeElement()) {
26410        composeTime("availableStartTime", element.getAvailableStartTimeElement());
26411      }
26412      if (element.hasAvailableEndTimeElement()) {
26413        composeTime("availableEndTime", element.getAvailableEndTimeElement());
26414      }
26415      composeElementClose(element);
26416      xml.exit(FHIR_NS, name);
26417    }
26418  }
26419
26420  protected void composePractitionerRolePractitionerRoleNotAvailableComponent(String name, PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
26421    if (element != null) {
26422      composeElementAttributes(element);
26423      xml.enter(FHIR_NS, name);
26424      composeBackboneElements(element);
26425      if (element.hasDescriptionElement()) {
26426        composeString("description", element.getDescriptionElement());
26427      }
26428      if (element.hasDuring()) {
26429        composePeriod("during", element.getDuring());
26430      }
26431      composeElementClose(element);
26432      xml.exit(FHIR_NS, name);
26433    }
26434  }
26435
26436  protected void composeProcedure(String name, Procedure element) throws IOException {
26437    if (element != null) {
26438      composeDomainResourceAttributes(element);
26439      xml.enter(FHIR_NS, name);
26440      composeDomainResourceElements(element);
26441      if (element.hasIdentifier()) { 
26442        for (Identifier e : element.getIdentifier()) 
26443          composeIdentifier("identifier", e);
26444      }
26445      if (element.hasSubject()) {
26446        composeReference("subject", element.getSubject());
26447      }
26448      if (element.hasStatusElement())
26449        composeEnumeration("status", element.getStatusElement(), new Procedure.ProcedureStatusEnumFactory());
26450      if (element.hasCategory()) {
26451        composeCodeableConcept("category", element.getCategory());
26452      }
26453      if (element.hasCode()) {
26454        composeCodeableConcept("code", element.getCode());
26455      }
26456      if (element.hasNotPerformedElement()) {
26457        composeBoolean("notPerformed", element.getNotPerformedElement());
26458      }
26459      if (element.hasReasonNotPerformed()) { 
26460        for (CodeableConcept e : element.getReasonNotPerformed()) 
26461          composeCodeableConcept("reasonNotPerformed", e);
26462      }
26463      if (element.hasBodySite()) { 
26464        for (CodeableConcept e : element.getBodySite()) 
26465          composeCodeableConcept("bodySite", e);
26466      }
26467      if (element.hasReason()) {
26468        composeType("reason", element.getReason());
26469      }      if (element.hasPerformer()) { 
26470        for (Procedure.ProcedurePerformerComponent e : element.getPerformer()) 
26471          composeProcedureProcedurePerformerComponent("performer", e);
26472      }
26473      if (element.hasPerformed()) {
26474        composeType("performed", element.getPerformed());
26475      }      if (element.hasEncounter()) {
26476        composeReference("encounter", element.getEncounter());
26477      }
26478      if (element.hasLocation()) {
26479        composeReference("location", element.getLocation());
26480      }
26481      if (element.hasOutcome()) {
26482        composeCodeableConcept("outcome", element.getOutcome());
26483      }
26484      if (element.hasReport()) { 
26485        for (Reference e : element.getReport()) 
26486          composeReference("report", e);
26487      }
26488      if (element.hasComplication()) { 
26489        for (CodeableConcept e : element.getComplication()) 
26490          composeCodeableConcept("complication", e);
26491      }
26492      if (element.hasFollowUp()) { 
26493        for (CodeableConcept e : element.getFollowUp()) 
26494          composeCodeableConcept("followUp", e);
26495      }
26496      if (element.hasRequest()) {
26497        composeReference("request", element.getRequest());
26498      }
26499      if (element.hasNotes()) { 
26500        for (Annotation e : element.getNotes()) 
26501          composeAnnotation("notes", e);
26502      }
26503      if (element.hasFocalDevice()) { 
26504        for (Procedure.ProcedureFocalDeviceComponent e : element.getFocalDevice()) 
26505          composeProcedureProcedureFocalDeviceComponent("focalDevice", e);
26506      }
26507      if (element.hasUsed()) { 
26508        for (Reference e : element.getUsed()) 
26509          composeReference("used", e);
26510      }
26511      composeElementClose(element);
26512      xml.exit(FHIR_NS, name);
26513    }
26514  }
26515
26516  protected void composeProcedureProcedurePerformerComponent(String name, Procedure.ProcedurePerformerComponent element) throws IOException {
26517    if (element != null) {
26518      composeElementAttributes(element);
26519      xml.enter(FHIR_NS, name);
26520      composeBackboneElements(element);
26521      if (element.hasActor()) {
26522        composeReference("actor", element.getActor());
26523      }
26524      if (element.hasRole()) {
26525        composeCodeableConcept("role", element.getRole());
26526      }
26527      composeElementClose(element);
26528      xml.exit(FHIR_NS, name);
26529    }
26530  }
26531
26532  protected void composeProcedureProcedureFocalDeviceComponent(String name, Procedure.ProcedureFocalDeviceComponent element) throws IOException {
26533    if (element != null) {
26534      composeElementAttributes(element);
26535      xml.enter(FHIR_NS, name);
26536      composeBackboneElements(element);
26537      if (element.hasAction()) {
26538        composeCodeableConcept("action", element.getAction());
26539      }
26540      if (element.hasManipulated()) {
26541        composeReference("manipulated", element.getManipulated());
26542      }
26543      composeElementClose(element);
26544      xml.exit(FHIR_NS, name);
26545    }
26546  }
26547
26548  protected void composeProcedureRequest(String name, ProcedureRequest element) throws IOException {
26549    if (element != null) {
26550      composeDomainResourceAttributes(element);
26551      xml.enter(FHIR_NS, name);
26552      composeDomainResourceElements(element);
26553      if (element.hasIdentifier()) { 
26554        for (Identifier e : element.getIdentifier()) 
26555          composeIdentifier("identifier", e);
26556      }
26557      if (element.hasSubject()) {
26558        composeReference("subject", element.getSubject());
26559      }
26560      if (element.hasCode()) {
26561        composeCodeableConcept("code", element.getCode());
26562      }
26563      if (element.hasBodySite()) { 
26564        for (CodeableConcept e : element.getBodySite()) 
26565          composeCodeableConcept("bodySite", e);
26566      }
26567      if (element.hasReason()) {
26568        composeType("reason", element.getReason());
26569      }      if (element.hasScheduled()) {
26570        composeType("scheduled", element.getScheduled());
26571      }      if (element.hasEncounter()) {
26572        composeReference("encounter", element.getEncounter());
26573      }
26574      if (element.hasPerformer()) {
26575        composeReference("performer", element.getPerformer());
26576      }
26577      if (element.hasStatusElement())
26578        composeEnumeration("status", element.getStatusElement(), new ProcedureRequest.ProcedureRequestStatusEnumFactory());
26579      if (element.hasNotes()) { 
26580        for (Annotation e : element.getNotes()) 
26581          composeAnnotation("notes", e);
26582      }
26583      if (element.hasAsNeeded()) {
26584        composeType("asNeeded", element.getAsNeeded());
26585      }      if (element.hasOrderedOnElement()) {
26586        composeDateTime("orderedOn", element.getOrderedOnElement());
26587      }
26588      if (element.hasOrderer()) {
26589        composeReference("orderer", element.getOrderer());
26590      }
26591      if (element.hasPriorityElement())
26592        composeEnumeration("priority", element.getPriorityElement(), new ProcedureRequest.ProcedureRequestPriorityEnumFactory());
26593      composeElementClose(element);
26594      xml.exit(FHIR_NS, name);
26595    }
26596  }
26597
26598  protected void composeProcessRequest(String name, ProcessRequest element) throws IOException {
26599    if (element != null) {
26600      composeDomainResourceAttributes(element);
26601      xml.enter(FHIR_NS, name);
26602      composeDomainResourceElements(element);
26603      if (element.hasActionElement())
26604        composeEnumeration("action", element.getActionElement(), new ProcessRequest.ActionListEnumFactory());
26605      if (element.hasIdentifier()) { 
26606        for (Identifier e : element.getIdentifier()) 
26607          composeIdentifier("identifier", e);
26608      }
26609      if (element.hasRuleset()) {
26610        composeCoding("ruleset", element.getRuleset());
26611      }
26612      if (element.hasOriginalRuleset()) {
26613        composeCoding("originalRuleset", element.getOriginalRuleset());
26614      }
26615      if (element.hasCreatedElement()) {
26616        composeDateTime("created", element.getCreatedElement());
26617      }
26618      if (element.hasTarget()) {
26619        composeType("target", element.getTarget());
26620      }      if (element.hasProvider()) {
26621        composeType("provider", element.getProvider());
26622      }      if (element.hasOrganization()) {
26623        composeType("organization", element.getOrganization());
26624      }      if (element.hasRequest()) {
26625        composeType("request", element.getRequest());
26626      }      if (element.hasResponse()) {
26627        composeType("response", element.getResponse());
26628      }      if (element.hasNullifyElement()) {
26629        composeBoolean("nullify", element.getNullifyElement());
26630      }
26631      if (element.hasReferenceElement()) {
26632        composeString("reference", element.getReferenceElement());
26633      }
26634      if (element.hasItem()) { 
26635        for (ProcessRequest.ItemsComponent e : element.getItem()) 
26636          composeProcessRequestItemsComponent("item", e);
26637      }
26638      if (element.hasInclude()) { 
26639        for (StringType e : element.getInclude()) 
26640          composeString("include", e);
26641      }
26642      if (element.hasExclude()) { 
26643        for (StringType e : element.getExclude()) 
26644          composeString("exclude", e);
26645      }
26646      if (element.hasPeriod()) {
26647        composePeriod("period", element.getPeriod());
26648      }
26649      composeElementClose(element);
26650      xml.exit(FHIR_NS, name);
26651    }
26652  }
26653
26654  protected void composeProcessRequestItemsComponent(String name, ProcessRequest.ItemsComponent element) throws IOException {
26655    if (element != null) {
26656      composeElementAttributes(element);
26657      xml.enter(FHIR_NS, name);
26658      composeBackboneElements(element);
26659      if (element.hasSequenceLinkIdElement()) {
26660        composeInteger("sequenceLinkId", element.getSequenceLinkIdElement());
26661      }
26662      composeElementClose(element);
26663      xml.exit(FHIR_NS, name);
26664    }
26665  }
26666
26667  protected void composeProcessResponse(String name, ProcessResponse element) throws IOException {
26668    if (element != null) {
26669      composeDomainResourceAttributes(element);
26670      xml.enter(FHIR_NS, name);
26671      composeDomainResourceElements(element);
26672      if (element.hasIdentifier()) { 
26673        for (Identifier e : element.getIdentifier()) 
26674          composeIdentifier("identifier", e);
26675      }
26676      if (element.hasRequest()) {
26677        composeType("request", element.getRequest());
26678      }      if (element.hasOutcome()) {
26679        composeCoding("outcome", element.getOutcome());
26680      }
26681      if (element.hasDispositionElement()) {
26682        composeString("disposition", element.getDispositionElement());
26683      }
26684      if (element.hasRuleset()) {
26685        composeCoding("ruleset", element.getRuleset());
26686      }
26687      if (element.hasOriginalRuleset()) {
26688        composeCoding("originalRuleset", element.getOriginalRuleset());
26689      }
26690      if (element.hasCreatedElement()) {
26691        composeDateTime("created", element.getCreatedElement());
26692      }
26693      if (element.hasOrganization()) {
26694        composeType("organization", element.getOrganization());
26695      }      if (element.hasRequestProvider()) {
26696        composeType("requestProvider", element.getRequestProvider());
26697      }      if (element.hasRequestOrganization()) {
26698        composeType("requestOrganization", element.getRequestOrganization());
26699      }      if (element.hasForm()) {
26700        composeCoding("form", element.getForm());
26701      }
26702      if (element.hasNotes()) { 
26703        for (ProcessResponse.ProcessResponseNotesComponent e : element.getNotes()) 
26704          composeProcessResponseProcessResponseNotesComponent("notes", e);
26705      }
26706      if (element.hasError()) { 
26707        for (Coding e : element.getError()) 
26708          composeCoding("error", e);
26709      }
26710      composeElementClose(element);
26711      xml.exit(FHIR_NS, name);
26712    }
26713  }
26714
26715  protected void composeProcessResponseProcessResponseNotesComponent(String name, ProcessResponse.ProcessResponseNotesComponent element) throws IOException {
26716    if (element != null) {
26717      composeElementAttributes(element);
26718      xml.enter(FHIR_NS, name);
26719      composeBackboneElements(element);
26720      if (element.hasType()) {
26721        composeCoding("type", element.getType());
26722      }
26723      if (element.hasTextElement()) {
26724        composeString("text", element.getTextElement());
26725      }
26726      composeElementClose(element);
26727      xml.exit(FHIR_NS, name);
26728    }
26729  }
26730
26731  protected void composeProtocol(String name, Protocol element) throws IOException {
26732    if (element != null) {
26733      composeDomainResourceAttributes(element);
26734      xml.enter(FHIR_NS, name);
26735      composeDomainResourceElements(element);
26736      if (element.hasIdentifier()) { 
26737        for (Identifier e : element.getIdentifier()) 
26738          composeIdentifier("identifier", e);
26739      }
26740      if (element.hasTitleElement()) {
26741        composeString("title", element.getTitleElement());
26742      }
26743      if (element.hasStatusElement())
26744        composeEnumeration("status", element.getStatusElement(), new Protocol.ProtocolStatusEnumFactory());
26745      if (element.hasTypeElement())
26746        composeEnumeration("type", element.getTypeElement(), new Protocol.ProtocolTypeEnumFactory());
26747      if (element.hasSubject()) {
26748        composeReference("subject", element.getSubject());
26749      }
26750      if (element.hasGroup()) {
26751        composeReference("group", element.getGroup());
26752      }
26753      if (element.hasPurposeElement()) {
26754        composeString("purpose", element.getPurposeElement());
26755      }
26756      if (element.hasAuthor()) {
26757        composeReference("author", element.getAuthor());
26758      }
26759      if (element.hasStep()) { 
26760        for (Protocol.ProtocolStepComponent e : element.getStep()) 
26761          composeProtocolProtocolStepComponent("step", e);
26762      }
26763      composeElementClose(element);
26764      xml.exit(FHIR_NS, name);
26765    }
26766  }
26767
26768  protected void composeProtocolProtocolStepComponent(String name, Protocol.ProtocolStepComponent element) throws IOException {
26769    if (element != null) {
26770      composeElementAttributes(element);
26771      xml.enter(FHIR_NS, name);
26772      composeBackboneElements(element);
26773      if (element.hasNameElement()) {
26774        composeString("name", element.getNameElement());
26775      }
26776      if (element.hasDescriptionElement()) {
26777        composeString("description", element.getDescriptionElement());
26778      }
26779      if (element.hasDuration()) {
26780        composeDuration("duration", element.getDuration());
26781      }
26782      if (element.hasPrecondition()) {
26783        composeProtocolProtocolStepPreconditionComponent("precondition", element.getPrecondition());
26784      }
26785      if (element.hasExit()) {
26786        composeProtocolProtocolStepPreconditionComponent("exit", element.getExit());
26787      }
26788      if (element.hasFirstActivityElement()) {
26789        composeUri("firstActivity", element.getFirstActivityElement());
26790      }
26791      if (element.hasActivity()) { 
26792        for (Protocol.ProtocolStepActivityComponent e : element.getActivity()) 
26793          composeProtocolProtocolStepActivityComponent("activity", e);
26794      }
26795      if (element.hasNext()) { 
26796        for (Protocol.ProtocolStepNextComponent e : element.getNext()) 
26797          composeProtocolProtocolStepNextComponent("next", e);
26798      }
26799      composeElementClose(element);
26800      xml.exit(FHIR_NS, name);
26801    }
26802  }
26803
26804  protected void composeProtocolProtocolStepPreconditionComponent(String name, Protocol.ProtocolStepPreconditionComponent element) throws IOException {
26805    if (element != null) {
26806      composeElementAttributes(element);
26807      xml.enter(FHIR_NS, name);
26808      composeBackboneElements(element);
26809      if (element.hasDescriptionElement()) {
26810        composeString("description", element.getDescriptionElement());
26811      }
26812      if (element.hasCondition()) {
26813        composeProtocolProtocolStepPreconditionConditionComponent("condition", element.getCondition());
26814      }
26815      if (element.hasIntersection()) { 
26816        for (Protocol.ProtocolStepPreconditionComponent e : element.getIntersection()) 
26817          composeProtocolProtocolStepPreconditionComponent("intersection", e);
26818      }
26819      if (element.hasUnion()) { 
26820        for (Protocol.ProtocolStepPreconditionComponent e : element.getUnion()) 
26821          composeProtocolProtocolStepPreconditionComponent("union", e);
26822      }
26823      if (element.hasExclude()) { 
26824        for (Protocol.ProtocolStepPreconditionComponent e : element.getExclude()) 
26825          composeProtocolProtocolStepPreconditionComponent("exclude", e);
26826      }
26827      composeElementClose(element);
26828      xml.exit(FHIR_NS, name);
26829    }
26830  }
26831
26832  protected void composeProtocolProtocolStepPreconditionConditionComponent(String name, Protocol.ProtocolStepPreconditionConditionComponent element) throws IOException {
26833    if (element != null) {
26834      composeElementAttributes(element);
26835      xml.enter(FHIR_NS, name);
26836      composeBackboneElements(element);
26837      if (element.hasType()) {
26838        composeCodeableConcept("type", element.getType());
26839      }
26840      if (element.hasValue()) {
26841        composeType("value", element.getValue());
26842      }      composeElementClose(element);
26843      xml.exit(FHIR_NS, name);
26844    }
26845  }
26846
26847  protected void composeProtocolProtocolStepActivityComponent(String name, Protocol.ProtocolStepActivityComponent element) throws IOException {
26848    if (element != null) {
26849      composeElementAttributes(element);
26850      xml.enter(FHIR_NS, name);
26851      composeBackboneElements(element);
26852      if (element.hasAlternative()) { 
26853        for (UriType e : element.getAlternative()) 
26854          composeUri("alternative", e);
26855      }
26856      if (element.hasComponent()) { 
26857        for (Protocol.ProtocolStepActivityComponentComponent e : element.getComponent()) 
26858          composeProtocolProtocolStepActivityComponentComponent("component", e);
26859      }
26860      if (element.hasFollowing()) { 
26861        for (UriType e : element.getFollowing()) 
26862          composeUri("following", e);
26863      }
26864      if (element.hasWait()) {
26865        composeDuration("wait", element.getWait());
26866      }
26867      if (element.hasDetail()) {
26868        composeProtocolProtocolStepActivityDetailComponent("detail", element.getDetail());
26869      }
26870      composeElementClose(element);
26871      xml.exit(FHIR_NS, name);
26872    }
26873  }
26874
26875  protected void composeProtocolProtocolStepActivityComponentComponent(String name, Protocol.ProtocolStepActivityComponentComponent element) throws IOException {
26876    if (element != null) {
26877      composeElementAttributes(element);
26878      xml.enter(FHIR_NS, name);
26879      composeBackboneElements(element);
26880      if (element.hasSequenceElement()) {
26881        composeInteger("sequence", element.getSequenceElement());
26882      }
26883      if (element.hasActivityElement()) {
26884        composeUri("activity", element.getActivityElement());
26885      }
26886      composeElementClose(element);
26887      xml.exit(FHIR_NS, name);
26888    }
26889  }
26890
26891  protected void composeProtocolProtocolStepActivityDetailComponent(String name, Protocol.ProtocolStepActivityDetailComponent element) throws IOException {
26892    if (element != null) {
26893      composeElementAttributes(element);
26894      xml.enter(FHIR_NS, name);
26895      composeBackboneElements(element);
26896      if (element.hasCategoryElement())
26897        composeEnumeration("category", element.getCategoryElement(), new Protocol.ActivityDefinitionCategoryEnumFactory());
26898      if (element.hasCode()) {
26899        composeCodeableConcept("code", element.getCode());
26900      }
26901      if (element.hasTiming()) {
26902        composeType("timing", element.getTiming());
26903      }      if (element.hasLocation()) {
26904        composeReference("location", element.getLocation());
26905      }
26906      if (element.hasPerformer()) { 
26907        for (Reference e : element.getPerformer()) 
26908          composeReference("performer", e);
26909      }
26910      if (element.hasProduct()) {
26911        composeReference("product", element.getProduct());
26912      }
26913      if (element.hasQuantity()) {
26914        composeSimpleQuantity("quantity", element.getQuantity());
26915      }
26916      if (element.hasDescriptionElement()) {
26917        composeString("description", element.getDescriptionElement());
26918      }
26919      composeElementClose(element);
26920      xml.exit(FHIR_NS, name);
26921    }
26922  }
26923
26924  protected void composeProtocolProtocolStepNextComponent(String name, Protocol.ProtocolStepNextComponent element) throws IOException {
26925    if (element != null) {
26926      composeElementAttributes(element);
26927      xml.enter(FHIR_NS, name);
26928      composeBackboneElements(element);
26929      if (element.hasDescriptionElement()) {
26930        composeString("description", element.getDescriptionElement());
26931      }
26932      if (element.hasReferenceElement()) {
26933        composeUri("reference", element.getReferenceElement());
26934      }
26935      if (element.hasCondition()) {
26936        composeProtocolProtocolStepPreconditionComponent("condition", element.getCondition());
26937      }
26938      composeElementClose(element);
26939      xml.exit(FHIR_NS, name);
26940    }
26941  }
26942
26943  protected void composeProvenance(String name, Provenance element) throws IOException {
26944    if (element != null) {
26945      composeDomainResourceAttributes(element);
26946      xml.enter(FHIR_NS, name);
26947      composeDomainResourceElements(element);
26948      if (element.hasTarget()) { 
26949        for (Reference e : element.getTarget()) 
26950          composeReference("target", e);
26951      }
26952      if (element.hasPeriod()) {
26953        composePeriod("period", element.getPeriod());
26954      }
26955      if (element.hasRecordedElement()) {
26956        composeInstant("recorded", element.getRecordedElement());
26957      }
26958      if (element.hasReason()) { 
26959        for (Coding e : element.getReason()) 
26960          composeCoding("reason", e);
26961      }
26962      if (element.hasActivity()) {
26963        composeCoding("activity", element.getActivity());
26964      }
26965      if (element.hasLocation()) {
26966        composeReference("location", element.getLocation());
26967      }
26968      if (element.hasPolicy()) { 
26969        for (UriType e : element.getPolicy()) 
26970          composeUri("policy", e);
26971      }
26972      if (element.hasAgent()) { 
26973        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
26974          composeProvenanceProvenanceAgentComponent("agent", e);
26975      }
26976      if (element.hasEntity()) { 
26977        for (Provenance.ProvenanceEntityComponent e : element.getEntity()) 
26978          composeProvenanceProvenanceEntityComponent("entity", e);
26979      }
26980      if (element.hasSignature()) { 
26981        for (Signature e : element.getSignature()) 
26982          composeSignature("signature", e);
26983      }
26984      composeElementClose(element);
26985      xml.exit(FHIR_NS, name);
26986    }
26987  }
26988
26989  protected void composeProvenanceProvenanceAgentComponent(String name, Provenance.ProvenanceAgentComponent element) throws IOException {
26990    if (element != null) {
26991      composeElementAttributes(element);
26992      xml.enter(FHIR_NS, name);
26993      composeBackboneElements(element);
26994      if (element.hasRole()) {
26995        composeCoding("role", element.getRole());
26996      }
26997      if (element.hasActor()) {
26998        composeReference("actor", element.getActor());
26999      }
27000      if (element.hasUserId()) {
27001        composeIdentifier("userId", element.getUserId());
27002      }
27003      if (element.hasRelatedAgent()) { 
27004        for (Provenance.ProvenanceAgentRelatedAgentComponent e : element.getRelatedAgent()) 
27005          composeProvenanceProvenanceAgentRelatedAgentComponent("relatedAgent", e);
27006      }
27007      composeElementClose(element);
27008      xml.exit(FHIR_NS, name);
27009    }
27010  }
27011
27012  protected void composeProvenanceProvenanceAgentRelatedAgentComponent(String name, Provenance.ProvenanceAgentRelatedAgentComponent element) throws IOException {
27013    if (element != null) {
27014      composeElementAttributes(element);
27015      xml.enter(FHIR_NS, name);
27016      composeBackboneElements(element);
27017      if (element.hasType()) {
27018        composeCodeableConcept("type", element.getType());
27019      }
27020      if (element.hasTargetElement()) {
27021        composeUri("target", element.getTargetElement());
27022      }
27023      composeElementClose(element);
27024      xml.exit(FHIR_NS, name);
27025    }
27026  }
27027
27028  protected void composeProvenanceProvenanceEntityComponent(String name, Provenance.ProvenanceEntityComponent element) throws IOException {
27029    if (element != null) {
27030      composeElementAttributes(element);
27031      xml.enter(FHIR_NS, name);
27032      composeBackboneElements(element);
27033      if (element.hasRoleElement())
27034        composeEnumeration("role", element.getRoleElement(), new Provenance.ProvenanceEntityRoleEnumFactory());
27035      if (element.hasType()) {
27036        composeCoding("type", element.getType());
27037      }
27038      if (element.hasReferenceElement()) {
27039        composeUri("reference", element.getReferenceElement());
27040      }
27041      if (element.hasDisplayElement()) {
27042        composeString("display", element.getDisplayElement());
27043      }
27044      if (element.hasAgent()) {
27045        composeProvenanceProvenanceAgentComponent("agent", element.getAgent());
27046      }
27047      composeElementClose(element);
27048      xml.exit(FHIR_NS, name);
27049    }
27050  }
27051
27052  protected void composeQuestionnaire(String name, Questionnaire element) throws IOException {
27053    if (element != null) {
27054      composeDomainResourceAttributes(element);
27055      xml.enter(FHIR_NS, name);
27056      composeDomainResourceElements(element);
27057      if (element.hasUrlElement()) {
27058        composeUri("url", element.getUrlElement());
27059      }
27060      if (element.hasIdentifier()) { 
27061        for (Identifier e : element.getIdentifier()) 
27062          composeIdentifier("identifier", e);
27063      }
27064      if (element.hasVersionElement()) {
27065        composeString("version", element.getVersionElement());
27066      }
27067      if (element.hasStatusElement())
27068        composeEnumeration("status", element.getStatusElement(), new Questionnaire.QuestionnaireStatusEnumFactory());
27069      if (element.hasDateElement()) {
27070        composeDateTime("date", element.getDateElement());
27071      }
27072      if (element.hasPublisherElement()) {
27073        composeString("publisher", element.getPublisherElement());
27074      }
27075      if (element.hasTelecom()) { 
27076        for (ContactPoint e : element.getTelecom()) 
27077          composeContactPoint("telecom", e);
27078      }
27079      if (element.hasUseContext()) { 
27080        for (CodeableConcept e : element.getUseContext()) 
27081          composeCodeableConcept("useContext", e);
27082      }
27083      if (element.hasTitleElement()) {
27084        composeString("title", element.getTitleElement());
27085      }
27086      if (element.hasConcept()) { 
27087        for (Coding e : element.getConcept()) 
27088          composeCoding("concept", e);
27089      }
27090      if (element.hasSubjectType()) { 
27091        for (CodeType e : element.getSubjectType()) 
27092          composeCode("subjectType", e);
27093      }
27094      if (element.hasItem()) { 
27095        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
27096          composeQuestionnaireQuestionnaireItemComponent("item", e);
27097      }
27098      composeElementClose(element);
27099      xml.exit(FHIR_NS, name);
27100    }
27101  }
27102
27103  protected void composeQuestionnaireQuestionnaireItemComponent(String name, Questionnaire.QuestionnaireItemComponent element) throws IOException {
27104    if (element != null) {
27105      composeElementAttributes(element);
27106      xml.enter(FHIR_NS, name);
27107      composeBackboneElements(element);
27108      if (element.hasLinkIdElement()) {
27109        composeString("linkId", element.getLinkIdElement());
27110      }
27111      if (element.hasConcept()) { 
27112        for (Coding e : element.getConcept()) 
27113          composeCoding("concept", e);
27114      }
27115      if (element.hasPrefixElement()) {
27116        composeString("prefix", element.getPrefixElement());
27117      }
27118      if (element.hasTextElement()) {
27119        composeString("text", element.getTextElement());
27120      }
27121      if (element.hasTypeElement())
27122        composeEnumeration("type", element.getTypeElement(), new Questionnaire.QuestionnaireItemTypeEnumFactory());
27123      if (element.hasEnableWhen()) { 
27124        for (Questionnaire.QuestionnaireItemEnableWhenComponent e : element.getEnableWhen()) 
27125          composeQuestionnaireQuestionnaireItemEnableWhenComponent("enableWhen", e);
27126      }
27127      if (element.hasRequiredElement()) {
27128        composeBoolean("required", element.getRequiredElement());
27129      }
27130      if (element.hasRepeatsElement()) {
27131        composeBoolean("repeats", element.getRepeatsElement());
27132      }
27133      if (element.hasReadOnlyElement()) {
27134        composeBoolean("readOnly", element.getReadOnlyElement());
27135      }
27136      if (element.hasMaxLengthElement()) {
27137        composeInteger("maxLength", element.getMaxLengthElement());
27138      }
27139      if (element.hasOptions()) {
27140        composeReference("options", element.getOptions());
27141      }
27142      if (element.hasOption()) { 
27143        for (Questionnaire.QuestionnaireItemOptionComponent e : element.getOption()) 
27144          composeQuestionnaireQuestionnaireItemOptionComponent("option", e);
27145      }
27146      if (element.hasInitial()) {
27147        composeType("initial", element.getInitial());
27148      }      if (element.hasItem()) { 
27149        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
27150          composeQuestionnaireQuestionnaireItemComponent("item", e);
27151      }
27152      composeElementClose(element);
27153      xml.exit(FHIR_NS, name);
27154    }
27155  }
27156
27157  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponent(String name, Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
27158    if (element != null) {
27159      composeElementAttributes(element);
27160      xml.enter(FHIR_NS, name);
27161      composeBackboneElements(element);
27162      if (element.hasQuestionElement()) {
27163        composeString("question", element.getQuestionElement());
27164      }
27165      if (element.hasAnsweredElement()) {
27166        composeBoolean("answered", element.getAnsweredElement());
27167      }
27168      if (element.hasAnswer()) {
27169        composeType("answer", element.getAnswer());
27170      }      composeElementClose(element);
27171      xml.exit(FHIR_NS, name);
27172    }
27173  }
27174
27175  protected void composeQuestionnaireQuestionnaireItemOptionComponent(String name, Questionnaire.QuestionnaireItemOptionComponent element) throws IOException {
27176    if (element != null) {
27177      composeElementAttributes(element);
27178      xml.enter(FHIR_NS, name);
27179      composeBackboneElements(element);
27180      if (element.hasValue()) {
27181        composeType("value", element.getValue());
27182      }      composeElementClose(element);
27183      xml.exit(FHIR_NS, name);
27184    }
27185  }
27186
27187  protected void composeQuestionnaireResponse(String name, QuestionnaireResponse element) throws IOException {
27188    if (element != null) {
27189      composeDomainResourceAttributes(element);
27190      xml.enter(FHIR_NS, name);
27191      composeDomainResourceElements(element);
27192      if (element.hasIdentifier()) {
27193        composeIdentifier("identifier", element.getIdentifier());
27194      }
27195      if (element.hasQuestionnaire()) {
27196        composeReference("questionnaire", element.getQuestionnaire());
27197      }
27198      if (element.hasStatusElement())
27199        composeEnumeration("status", element.getStatusElement(), new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory());
27200      if (element.hasSubject()) {
27201        composeReference("subject", element.getSubject());
27202      }
27203      if (element.hasAuthor()) {
27204        composeReference("author", element.getAuthor());
27205      }
27206      if (element.hasAuthoredElement()) {
27207        composeDateTime("authored", element.getAuthoredElement());
27208      }
27209      if (element.hasSource()) {
27210        composeReference("source", element.getSource());
27211      }
27212      if (element.hasEncounter()) {
27213        composeReference("encounter", element.getEncounter());
27214      }
27215      if (element.hasItem()) { 
27216        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
27217          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
27218      }
27219      composeElementClose(element);
27220      xml.exit(FHIR_NS, name);
27221    }
27222  }
27223
27224  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
27225    if (element != null) {
27226      composeElementAttributes(element);
27227      xml.enter(FHIR_NS, name);
27228      composeBackboneElements(element);
27229      if (element.hasLinkIdElement()) {
27230        composeString("linkId", element.getLinkIdElement());
27231      }
27232      if (element.hasTextElement()) {
27233        composeString("text", element.getTextElement());
27234      }
27235      if (element.hasSubject()) {
27236        composeReference("subject", element.getSubject());
27237      }
27238      if (element.hasAnswer()) { 
27239        for (QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent e : element.getAnswer()) 
27240          composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent("answer", e);
27241      }
27242      if (element.hasItem()) { 
27243        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
27244          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
27245      }
27246      composeElementClose(element);
27247      xml.exit(FHIR_NS, name);
27248    }
27249  }
27250
27251  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
27252    if (element != null) {
27253      composeElementAttributes(element);
27254      xml.enter(FHIR_NS, name);
27255      composeBackboneElements(element);
27256      if (element.hasValue()) {
27257        composeType("value", element.getValue());
27258      }      if (element.hasItem()) { 
27259        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
27260          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
27261      }
27262      composeElementClose(element);
27263      xml.exit(FHIR_NS, name);
27264    }
27265  }
27266
27267  protected void composeReferralRequest(String name, ReferralRequest element) throws IOException {
27268    if (element != null) {
27269      composeDomainResourceAttributes(element);
27270      xml.enter(FHIR_NS, name);
27271      composeDomainResourceElements(element);
27272      if (element.hasIdentifier()) { 
27273        for (Identifier e : element.getIdentifier()) 
27274          composeIdentifier("identifier", e);
27275      }
27276      if (element.hasBasedOn()) { 
27277        for (Reference e : element.getBasedOn()) 
27278          composeReference("basedOn", e);
27279      }
27280      if (element.hasParent()) {
27281        composeIdentifier("parent", element.getParent());
27282      }
27283      if (element.hasStatusElement())
27284        composeEnumeration("status", element.getStatusElement(), new ReferralRequest.ReferralStatusEnumFactory());
27285      if (element.hasCategoryElement())
27286        composeEnumeration("category", element.getCategoryElement(), new ReferralRequest.ReferralCategoryEnumFactory());
27287      if (element.hasType()) {
27288        composeCodeableConcept("type", element.getType());
27289      }
27290      if (element.hasPriority()) {
27291        composeCodeableConcept("priority", element.getPriority());
27292      }
27293      if (element.hasPatient()) {
27294        composeReference("patient", element.getPatient());
27295      }
27296      if (element.hasContext()) {
27297        composeReference("context", element.getContext());
27298      }
27299      if (element.hasFulfillmentTime()) {
27300        composePeriod("fulfillmentTime", element.getFulfillmentTime());
27301      }
27302      if (element.hasAuthoredElement()) {
27303        composeDateTime("authored", element.getAuthoredElement());
27304      }
27305      if (element.hasRequester()) {
27306        composeReference("requester", element.getRequester());
27307      }
27308      if (element.hasSpecialty()) {
27309        composeCodeableConcept("specialty", element.getSpecialty());
27310      }
27311      if (element.hasRecipient()) { 
27312        for (Reference e : element.getRecipient()) 
27313          composeReference("recipient", e);
27314      }
27315      if (element.hasReason()) {
27316        composeCodeableConcept("reason", element.getReason());
27317      }
27318      if (element.hasDescriptionElement()) {
27319        composeString("description", element.getDescriptionElement());
27320      }
27321      if (element.hasServiceRequested()) { 
27322        for (CodeableConcept e : element.getServiceRequested()) 
27323          composeCodeableConcept("serviceRequested", e);
27324      }
27325      if (element.hasSupportingInformation()) { 
27326        for (Reference e : element.getSupportingInformation()) 
27327          composeReference("supportingInformation", e);
27328      }
27329      composeElementClose(element);
27330      xml.exit(FHIR_NS, name);
27331    }
27332  }
27333
27334  protected void composeRelatedPerson(String name, RelatedPerson element) throws IOException {
27335    if (element != null) {
27336      composeDomainResourceAttributes(element);
27337      xml.enter(FHIR_NS, name);
27338      composeDomainResourceElements(element);
27339      if (element.hasIdentifier()) { 
27340        for (Identifier e : element.getIdentifier()) 
27341          composeIdentifier("identifier", e);
27342      }
27343      if (element.hasPatient()) {
27344        composeReference("patient", element.getPatient());
27345      }
27346      if (element.hasRelationship()) {
27347        composeCodeableConcept("relationship", element.getRelationship());
27348      }
27349      if (element.hasName()) {
27350        composeHumanName("name", element.getName());
27351      }
27352      if (element.hasTelecom()) { 
27353        for (ContactPoint e : element.getTelecom()) 
27354          composeContactPoint("telecom", e);
27355      }
27356      if (element.hasGenderElement())
27357        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
27358      if (element.hasBirthDateElement()) {
27359        composeDate("birthDate", element.getBirthDateElement());
27360      }
27361      if (element.hasAddress()) { 
27362        for (Address e : element.getAddress()) 
27363          composeAddress("address", e);
27364      }
27365      if (element.hasPhoto()) { 
27366        for (Attachment e : element.getPhoto()) 
27367          composeAttachment("photo", e);
27368      }
27369      if (element.hasPeriod()) {
27370        composePeriod("period", element.getPeriod());
27371      }
27372      composeElementClose(element);
27373      xml.exit(FHIR_NS, name);
27374    }
27375  }
27376
27377  protected void composeRiskAssessment(String name, RiskAssessment element) throws IOException {
27378    if (element != null) {
27379      composeDomainResourceAttributes(element);
27380      xml.enter(FHIR_NS, name);
27381      composeDomainResourceElements(element);
27382      if (element.hasSubject()) {
27383        composeReference("subject", element.getSubject());
27384      }
27385      if (element.hasDateElement()) {
27386        composeDateTime("date", element.getDateElement());
27387      }
27388      if (element.hasCondition()) {
27389        composeReference("condition", element.getCondition());
27390      }
27391      if (element.hasEncounter()) {
27392        composeReference("encounter", element.getEncounter());
27393      }
27394      if (element.hasPerformer()) {
27395        composeReference("performer", element.getPerformer());
27396      }
27397      if (element.hasIdentifier()) {
27398        composeIdentifier("identifier", element.getIdentifier());
27399      }
27400      if (element.hasMethod()) {
27401        composeCodeableConcept("method", element.getMethod());
27402      }
27403      if (element.hasBasis()) { 
27404        for (Reference e : element.getBasis()) 
27405          composeReference("basis", e);
27406      }
27407      if (element.hasPrediction()) { 
27408        for (RiskAssessment.RiskAssessmentPredictionComponent e : element.getPrediction()) 
27409          composeRiskAssessmentRiskAssessmentPredictionComponent("prediction", e);
27410      }
27411      if (element.hasMitigationElement()) {
27412        composeString("mitigation", element.getMitigationElement());
27413      }
27414      composeElementClose(element);
27415      xml.exit(FHIR_NS, name);
27416    }
27417  }
27418
27419  protected void composeRiskAssessmentRiskAssessmentPredictionComponent(String name, RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
27420    if (element != null) {
27421      composeElementAttributes(element);
27422      xml.enter(FHIR_NS, name);
27423      composeBackboneElements(element);
27424      if (element.hasOutcome()) {
27425        composeCodeableConcept("outcome", element.getOutcome());
27426      }
27427      if (element.hasProbability()) {
27428        composeType("probability", element.getProbability());
27429      }      if (element.hasRelativeRiskElement()) {
27430        composeDecimal("relativeRisk", element.getRelativeRiskElement());
27431      }
27432      if (element.hasWhen()) {
27433        composeType("when", element.getWhen());
27434      }      if (element.hasRationaleElement()) {
27435        composeString("rationale", element.getRationaleElement());
27436      }
27437      composeElementClose(element);
27438      xml.exit(FHIR_NS, name);
27439    }
27440  }
27441
27442  protected void composeSchedule(String name, Schedule element) throws IOException {
27443    if (element != null) {
27444      composeDomainResourceAttributes(element);
27445      xml.enter(FHIR_NS, name);
27446      composeDomainResourceElements(element);
27447      if (element.hasIdentifier()) { 
27448        for (Identifier e : element.getIdentifier()) 
27449          composeIdentifier("identifier", e);
27450      }
27451      if (element.hasServiceCategory()) {
27452        composeCodeableConcept("serviceCategory", element.getServiceCategory());
27453      }
27454      if (element.hasServiceType()) { 
27455        for (CodeableConcept e : element.getServiceType()) 
27456          composeCodeableConcept("serviceType", e);
27457      }
27458      if (element.hasSpecialty()) { 
27459        for (CodeableConcept e : element.getSpecialty()) 
27460          composeCodeableConcept("specialty", e);
27461      }
27462      if (element.hasActor()) {
27463        composeReference("actor", element.getActor());
27464      }
27465      if (element.hasPlanningHorizon()) {
27466        composePeriod("planningHorizon", element.getPlanningHorizon());
27467      }
27468      if (element.hasCommentElement()) {
27469        composeString("comment", element.getCommentElement());
27470      }
27471      composeElementClose(element);
27472      xml.exit(FHIR_NS, name);
27473    }
27474  }
27475
27476  protected void composeSearchParameter(String name, SearchParameter element) throws IOException {
27477    if (element != null) {
27478      composeDomainResourceAttributes(element);
27479      xml.enter(FHIR_NS, name);
27480      composeDomainResourceElements(element);
27481      if (element.hasUrlElement()) {
27482        composeUri("url", element.getUrlElement());
27483      }
27484      if (element.hasNameElement()) {
27485        composeString("name", element.getNameElement());
27486      }
27487      if (element.hasStatusElement())
27488        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
27489      if (element.hasExperimentalElement()) {
27490        composeBoolean("experimental", element.getExperimentalElement());
27491      }
27492      if (element.hasDateElement()) {
27493        composeDateTime("date", element.getDateElement());
27494      }
27495      if (element.hasPublisherElement()) {
27496        composeString("publisher", element.getPublisherElement());
27497      }
27498      if (element.hasContact()) { 
27499        for (SearchParameter.SearchParameterContactComponent e : element.getContact()) 
27500          composeSearchParameterSearchParameterContactComponent("contact", e);
27501      }
27502      if (element.hasUseContext()) { 
27503        for (CodeableConcept e : element.getUseContext()) 
27504          composeCodeableConcept("useContext", e);
27505      }
27506      if (element.hasRequirementsElement()) {
27507        composeString("requirements", element.getRequirementsElement());
27508      }
27509      if (element.hasCodeElement()) {
27510        composeCode("code", element.getCodeElement());
27511      }
27512      if (element.hasBaseElement()) {
27513        composeCode("base", element.getBaseElement());
27514      }
27515      if (element.hasTypeElement())
27516        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
27517      if (element.hasDescriptionElement()) {
27518        composeString("description", element.getDescriptionElement());
27519      }
27520      if (element.hasExpressionElement()) {
27521        composeString("expression", element.getExpressionElement());
27522      }
27523      if (element.hasXpathElement()) {
27524        composeString("xpath", element.getXpathElement());
27525      }
27526      if (element.hasXpathUsageElement())
27527        composeEnumeration("xpathUsage", element.getXpathUsageElement(), new SearchParameter.XPathUsageTypeEnumFactory());
27528      if (element.hasTarget()) { 
27529        for (CodeType e : element.getTarget()) 
27530          composeCode("target", e);
27531      }
27532      composeElementClose(element);
27533      xml.exit(FHIR_NS, name);
27534    }
27535  }
27536
27537  protected void composeSearchParameterSearchParameterContactComponent(String name, SearchParameter.SearchParameterContactComponent element) throws IOException {
27538    if (element != null) {
27539      composeElementAttributes(element);
27540      xml.enter(FHIR_NS, name);
27541      composeBackboneElements(element);
27542      if (element.hasNameElement()) {
27543        composeString("name", element.getNameElement());
27544      }
27545      if (element.hasTelecom()) { 
27546        for (ContactPoint e : element.getTelecom()) 
27547          composeContactPoint("telecom", e);
27548      }
27549      composeElementClose(element);
27550      xml.exit(FHIR_NS, name);
27551    }
27552  }
27553
27554  protected void composeSequence(String name, Sequence element) throws IOException {
27555    if (element != null) {
27556      composeDomainResourceAttributes(element);
27557      xml.enter(FHIR_NS, name);
27558      composeDomainResourceElements(element);
27559      if (element.hasTypeElement())
27560        composeEnumeration("type", element.getTypeElement(), new Sequence.SequenceTypeEnumFactory());
27561      if (element.hasPatient()) {
27562        composeReference("patient", element.getPatient());
27563      }
27564      if (element.hasSpecimen()) {
27565        composeReference("specimen", element.getSpecimen());
27566      }
27567      if (element.hasDevice()) {
27568        composeReference("device", element.getDevice());
27569      }
27570      if (element.hasQuantity()) {
27571        composeQuantity("quantity", element.getQuantity());
27572      }
27573      if (element.hasSpecies()) {
27574        composeCodeableConcept("species", element.getSpecies());
27575      }
27576      if (element.hasReferenceSeq()) { 
27577        for (Sequence.SequenceReferenceSeqComponent e : element.getReferenceSeq()) 
27578          composeSequenceSequenceReferenceSeqComponent("referenceSeq", e);
27579      }
27580      if (element.hasVariation()) {
27581        composeSequenceSequenceVariationComponent("variation", element.getVariation());
27582      }
27583      if (element.hasQuality()) { 
27584        for (Sequence.SequenceQualityComponent e : element.getQuality()) 
27585          composeSequenceSequenceQualityComponent("quality", e);
27586      }
27587      if (element.hasAllelicState()) {
27588        composeCodeableConcept("allelicState", element.getAllelicState());
27589      }
27590      if (element.hasAllelicFrequencyElement()) {
27591        composeDecimal("allelicFrequency", element.getAllelicFrequencyElement());
27592      }
27593      if (element.hasCopyNumberEvent()) {
27594        composeCodeableConcept("copyNumberEvent", element.getCopyNumberEvent());
27595      }
27596      if (element.hasReadCoverageElement()) {
27597        composeInteger("readCoverage", element.getReadCoverageElement());
27598      }
27599      if (element.hasRepository()) { 
27600        for (Sequence.SequenceRepositoryComponent e : element.getRepository()) 
27601          composeSequenceSequenceRepositoryComponent("repository", e);
27602      }
27603      if (element.hasPointer()) { 
27604        for (Reference e : element.getPointer()) 
27605          composeReference("pointer", e);
27606      }
27607      if (element.hasObservedSeqElement()) {
27608        composeString("observedSeq", element.getObservedSeqElement());
27609      }
27610      if (element.hasObservation()) {
27611        composeReference("observation", element.getObservation());
27612      }
27613      if (element.hasStructureVariation()) {
27614        composeSequenceSequenceStructureVariationComponent("structureVariation", element.getStructureVariation());
27615      }
27616      composeElementClose(element);
27617      xml.exit(FHIR_NS, name);
27618    }
27619  }
27620
27621  protected void composeSequenceSequenceReferenceSeqComponent(String name, Sequence.SequenceReferenceSeqComponent element) throws IOException {
27622    if (element != null) {
27623      composeElementAttributes(element);
27624      xml.enter(FHIR_NS, name);
27625      composeBackboneElements(element);
27626      if (element.hasChromosome()) {
27627        composeCodeableConcept("chromosome", element.getChromosome());
27628      }
27629      if (element.hasGenomeBuildElement()) {
27630        composeString("genomeBuild", element.getGenomeBuildElement());
27631      }
27632      if (element.hasReferenceSeqId()) {
27633        composeCodeableConcept("referenceSeqId", element.getReferenceSeqId());
27634      }
27635      if (element.hasReferenceSeqPointer()) {
27636        composeReference("referenceSeqPointer", element.getReferenceSeqPointer());
27637      }
27638      if (element.hasReferenceSeqStringElement()) {
27639        composeString("referenceSeqString", element.getReferenceSeqStringElement());
27640      }
27641      if (element.hasWindowStartElement()) {
27642        composeInteger("windowStart", element.getWindowStartElement());
27643      }
27644      if (element.hasWindowEndElement()) {
27645        composeInteger("windowEnd", element.getWindowEndElement());
27646      }
27647      composeElementClose(element);
27648      xml.exit(FHIR_NS, name);
27649    }
27650  }
27651
27652  protected void composeSequenceSequenceVariationComponent(String name, Sequence.SequenceVariationComponent element) throws IOException {
27653    if (element != null) {
27654      composeElementAttributes(element);
27655      xml.enter(FHIR_NS, name);
27656      composeBackboneElements(element);
27657      if (element.hasStartElement()) {
27658        composeInteger("start", element.getStartElement());
27659      }
27660      if (element.hasEndElement()) {
27661        composeInteger("end", element.getEndElement());
27662      }
27663      if (element.hasObservedAlleleElement()) {
27664        composeString("observedAllele", element.getObservedAlleleElement());
27665      }
27666      if (element.hasReferenceAlleleElement()) {
27667        composeString("referenceAllele", element.getReferenceAlleleElement());
27668      }
27669      if (element.hasCigarElement()) {
27670        composeString("cigar", element.getCigarElement());
27671      }
27672      composeElementClose(element);
27673      xml.exit(FHIR_NS, name);
27674    }
27675  }
27676
27677  protected void composeSequenceSequenceQualityComponent(String name, Sequence.SequenceQualityComponent element) throws IOException {
27678    if (element != null) {
27679      composeElementAttributes(element);
27680      xml.enter(FHIR_NS, name);
27681      composeBackboneElements(element);
27682      if (element.hasStartElement()) {
27683        composeInteger("start", element.getStartElement());
27684      }
27685      if (element.hasEndElement()) {
27686        composeInteger("end", element.getEndElement());
27687      }
27688      if (element.hasScore()) {
27689        composeQuantity("score", element.getScore());
27690      }
27691      if (element.hasMethodElement()) {
27692        composeString("method", element.getMethodElement());
27693      }
27694      composeElementClose(element);
27695      xml.exit(FHIR_NS, name);
27696    }
27697  }
27698
27699  protected void composeSequenceSequenceRepositoryComponent(String name, Sequence.SequenceRepositoryComponent element) throws IOException {
27700    if (element != null) {
27701      composeElementAttributes(element);
27702      xml.enter(FHIR_NS, name);
27703      composeBackboneElements(element);
27704      if (element.hasUrlElement()) {
27705        composeUri("url", element.getUrlElement());
27706      }
27707      if (element.hasNameElement()) {
27708        composeString("name", element.getNameElement());
27709      }
27710      if (element.hasVariantIdElement()) {
27711        composeString("variantId", element.getVariantIdElement());
27712      }
27713      if (element.hasReadIdElement()) {
27714        composeString("readId", element.getReadIdElement());
27715      }
27716      composeElementClose(element);
27717      xml.exit(FHIR_NS, name);
27718    }
27719  }
27720
27721  protected void composeSequenceSequenceStructureVariationComponent(String name, Sequence.SequenceStructureVariationComponent element) throws IOException {
27722    if (element != null) {
27723      composeElementAttributes(element);
27724      xml.enter(FHIR_NS, name);
27725      composeBackboneElements(element);
27726      if (element.hasPrecisionOfBoundariesElement()) {
27727        composeString("precisionOfBoundaries", element.getPrecisionOfBoundariesElement());
27728      }
27729      if (element.hasReportedaCGHRatioElement()) {
27730        composeDecimal("reportedaCGHRatio", element.getReportedaCGHRatioElement());
27731      }
27732      if (element.hasLengthElement()) {
27733        composeInteger("length", element.getLengthElement());
27734      }
27735      if (element.hasOuter()) {
27736        composeSequenceSequenceStructureVariationOuterComponent("outer", element.getOuter());
27737      }
27738      if (element.hasInner()) {
27739        composeSequenceSequenceStructureVariationInnerComponent("inner", element.getInner());
27740      }
27741      composeElementClose(element);
27742      xml.exit(FHIR_NS, name);
27743    }
27744  }
27745
27746  protected void composeSequenceSequenceStructureVariationOuterComponent(String name, Sequence.SequenceStructureVariationOuterComponent element) throws IOException {
27747    if (element != null) {
27748      composeElementAttributes(element);
27749      xml.enter(FHIR_NS, name);
27750      composeBackboneElements(element);
27751      if (element.hasStartElement()) {
27752        composeInteger("start", element.getStartElement());
27753      }
27754      if (element.hasEndElement()) {
27755        composeInteger("end", element.getEndElement());
27756      }
27757      composeElementClose(element);
27758      xml.exit(FHIR_NS, name);
27759    }
27760  }
27761
27762  protected void composeSequenceSequenceStructureVariationInnerComponent(String name, Sequence.SequenceStructureVariationInnerComponent element) throws IOException {
27763    if (element != null) {
27764      composeElementAttributes(element);
27765      xml.enter(FHIR_NS, name);
27766      composeBackboneElements(element);
27767      if (element.hasStartElement()) {
27768        composeInteger("start", element.getStartElement());
27769      }
27770      if (element.hasEndElement()) {
27771        composeInteger("end", element.getEndElement());
27772      }
27773      composeElementClose(element);
27774      xml.exit(FHIR_NS, name);
27775    }
27776  }
27777
27778  protected void composeSlot(String name, Slot element) throws IOException {
27779    if (element != null) {
27780      composeDomainResourceAttributes(element);
27781      xml.enter(FHIR_NS, name);
27782      composeDomainResourceElements(element);
27783      if (element.hasIdentifier()) { 
27784        for (Identifier e : element.getIdentifier()) 
27785          composeIdentifier("identifier", e);
27786      }
27787      if (element.hasServiceCategory()) {
27788        composeCodeableConcept("serviceCategory", element.getServiceCategory());
27789      }
27790      if (element.hasServiceType()) { 
27791        for (CodeableConcept e : element.getServiceType()) 
27792          composeCodeableConcept("serviceType", e);
27793      }
27794      if (element.hasSpecialty()) { 
27795        for (CodeableConcept e : element.getSpecialty()) 
27796          composeCodeableConcept("specialty", e);
27797      }
27798      if (element.hasAppointmentType()) {
27799        composeCodeableConcept("appointmentType", element.getAppointmentType());
27800      }
27801      if (element.hasSchedule()) {
27802        composeReference("schedule", element.getSchedule());
27803      }
27804      if (element.hasStatusElement())
27805        composeEnumeration("status", element.getStatusElement(), new Slot.SlotStatusEnumFactory());
27806      if (element.hasStartElement()) {
27807        composeInstant("start", element.getStartElement());
27808      }
27809      if (element.hasEndElement()) {
27810        composeInstant("end", element.getEndElement());
27811      }
27812      if (element.hasOverbookedElement()) {
27813        composeBoolean("overbooked", element.getOverbookedElement());
27814      }
27815      if (element.hasCommentElement()) {
27816        composeString("comment", element.getCommentElement());
27817      }
27818      composeElementClose(element);
27819      xml.exit(FHIR_NS, name);
27820    }
27821  }
27822
27823  protected void composeSpecimen(String name, Specimen element) throws IOException {
27824    if (element != null) {
27825      composeDomainResourceAttributes(element);
27826      xml.enter(FHIR_NS, name);
27827      composeDomainResourceElements(element);
27828      if (element.hasIdentifier()) { 
27829        for (Identifier e : element.getIdentifier()) 
27830          composeIdentifier("identifier", e);
27831      }
27832      if (element.hasAccessionIdentifier()) {
27833        composeIdentifier("accessionIdentifier", element.getAccessionIdentifier());
27834      }
27835      if (element.hasStatusElement())
27836        composeEnumeration("status", element.getStatusElement(), new Specimen.SpecimenStatusEnumFactory());
27837      if (element.hasType()) {
27838        composeCodeableConcept("type", element.getType());
27839      }
27840      if (element.hasSubject()) {
27841        composeReference("subject", element.getSubject());
27842      }
27843      if (element.hasReceivedTimeElement()) {
27844        composeDateTime("receivedTime", element.getReceivedTimeElement());
27845      }
27846      if (element.hasParent()) { 
27847        for (Reference e : element.getParent()) 
27848          composeReference("parent", e);
27849      }
27850      if (element.hasCollection()) {
27851        composeSpecimenSpecimenCollectionComponent("collection", element.getCollection());
27852      }
27853      if (element.hasTreatment()) { 
27854        for (Specimen.SpecimenTreatmentComponent e : element.getTreatment()) 
27855          composeSpecimenSpecimenTreatmentComponent("treatment", e);
27856      }
27857      if (element.hasContainer()) { 
27858        for (Specimen.SpecimenContainerComponent e : element.getContainer()) 
27859          composeSpecimenSpecimenContainerComponent("container", e);
27860      }
27861      composeElementClose(element);
27862      xml.exit(FHIR_NS, name);
27863    }
27864  }
27865
27866  protected void composeSpecimenSpecimenCollectionComponent(String name, Specimen.SpecimenCollectionComponent element) throws IOException {
27867    if (element != null) {
27868      composeElementAttributes(element);
27869      xml.enter(FHIR_NS, name);
27870      composeBackboneElements(element);
27871      if (element.hasCollector()) {
27872        composeReference("collector", element.getCollector());
27873      }
27874      if (element.hasCommentElement()) {
27875        composeString("comment", element.getCommentElement());
27876      }
27877      if (element.hasCollected()) {
27878        composeType("collected", element.getCollected());
27879      }      if (element.hasQuantity()) {
27880        composeSimpleQuantity("quantity", element.getQuantity());
27881      }
27882      if (element.hasMethod()) {
27883        composeCodeableConcept("method", element.getMethod());
27884      }
27885      if (element.hasBodySite()) {
27886        composeCodeableConcept("bodySite", element.getBodySite());
27887      }
27888      composeElementClose(element);
27889      xml.exit(FHIR_NS, name);
27890    }
27891  }
27892
27893  protected void composeSpecimenSpecimenTreatmentComponent(String name, Specimen.SpecimenTreatmentComponent element) throws IOException {
27894    if (element != null) {
27895      composeElementAttributes(element);
27896      xml.enter(FHIR_NS, name);
27897      composeBackboneElements(element);
27898      if (element.hasDescriptionElement()) {
27899        composeString("description", element.getDescriptionElement());
27900      }
27901      if (element.hasProcedure()) {
27902        composeCodeableConcept("procedure", element.getProcedure());
27903      }
27904      if (element.hasAdditive()) { 
27905        for (Reference e : element.getAdditive()) 
27906          composeReference("additive", e);
27907      }
27908      composeElementClose(element);
27909      xml.exit(FHIR_NS, name);
27910    }
27911  }
27912
27913  protected void composeSpecimenSpecimenContainerComponent(String name, Specimen.SpecimenContainerComponent element) throws IOException {
27914    if (element != null) {
27915      composeElementAttributes(element);
27916      xml.enter(FHIR_NS, name);
27917      composeBackboneElements(element);
27918      if (element.hasIdentifier()) { 
27919        for (Identifier e : element.getIdentifier()) 
27920          composeIdentifier("identifier", e);
27921      }
27922      if (element.hasDescriptionElement()) {
27923        composeString("description", element.getDescriptionElement());
27924      }
27925      if (element.hasType()) {
27926        composeCodeableConcept("type", element.getType());
27927      }
27928      if (element.hasCapacity()) {
27929        composeSimpleQuantity("capacity", element.getCapacity());
27930      }
27931      if (element.hasSpecimenQuantity()) {
27932        composeSimpleQuantity("specimenQuantity", element.getSpecimenQuantity());
27933      }
27934      if (element.hasAdditive()) {
27935        composeType("additive", element.getAdditive());
27936      }      composeElementClose(element);
27937      xml.exit(FHIR_NS, name);
27938    }
27939  }
27940
27941  protected void composeStructureDefinition(String name, StructureDefinition element) throws IOException {
27942    if (element != null) {
27943      composeDomainResourceAttributes(element);
27944      xml.enter(FHIR_NS, name);
27945      composeDomainResourceElements(element);
27946      if (element.hasUrlElement()) {
27947        composeUri("url", element.getUrlElement());
27948      }
27949      if (element.hasIdentifier()) { 
27950        for (Identifier e : element.getIdentifier()) 
27951          composeIdentifier("identifier", e);
27952      }
27953      if (element.hasVersionElement()) {
27954        composeString("version", element.getVersionElement());
27955      }
27956      if (element.hasNameElement()) {
27957        composeString("name", element.getNameElement());
27958      }
27959      if (element.hasDisplayElement()) {
27960        composeString("display", element.getDisplayElement());
27961      }
27962      if (element.hasStatusElement())
27963        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
27964      if (element.hasExperimentalElement()) {
27965        composeBoolean("experimental", element.getExperimentalElement());
27966      }
27967      if (element.hasPublisherElement()) {
27968        composeString("publisher", element.getPublisherElement());
27969      }
27970      if (element.hasContact()) { 
27971        for (StructureDefinition.StructureDefinitionContactComponent e : element.getContact()) 
27972          composeStructureDefinitionStructureDefinitionContactComponent("contact", e);
27973      }
27974      if (element.hasDateElement()) {
27975        composeDateTime("date", element.getDateElement());
27976      }
27977      if (element.hasDescriptionElement()) {
27978        composeString("description", element.getDescriptionElement());
27979      }
27980      if (element.hasUseContext()) { 
27981        for (CodeableConcept e : element.getUseContext()) 
27982          composeCodeableConcept("useContext", e);
27983      }
27984      if (element.hasRequirementsElement()) {
27985        composeString("requirements", element.getRequirementsElement());
27986      }
27987      if (element.hasCopyrightElement()) {
27988        composeString("copyright", element.getCopyrightElement());
27989      }
27990      if (element.hasCode()) { 
27991        for (Coding e : element.getCode()) 
27992          composeCoding("code", e);
27993      }
27994      if (element.hasFhirVersionElement()) {
27995        composeId("fhirVersion", element.getFhirVersionElement());
27996      }
27997      if (element.hasMapping()) { 
27998        for (StructureDefinition.StructureDefinitionMappingComponent e : element.getMapping()) 
27999          composeStructureDefinitionStructureDefinitionMappingComponent("mapping", e);
28000      }
28001      if (element.hasKindElement())
28002        composeEnumeration("kind", element.getKindElement(), new StructureDefinition.StructureDefinitionKindEnumFactory());
28003      if (element.hasAbstractElement()) {
28004        composeBoolean("abstract", element.getAbstractElement());
28005      }
28006      if (element.hasContextTypeElement())
28007        composeEnumeration("contextType", element.getContextTypeElement(), new StructureDefinition.ExtensionContextEnumFactory());
28008      if (element.hasContext()) { 
28009        for (StringType e : element.getContext()) 
28010          composeString("context", e);
28011      }
28012      if (element.hasBaseTypeElement()) {
28013        composeCode("baseType", element.getBaseTypeElement());
28014      }
28015      if (element.hasBaseDefinitionElement()) {
28016        composeUri("baseDefinition", element.getBaseDefinitionElement());
28017      }
28018      if (element.hasDerivationElement())
28019        composeEnumeration("derivation", element.getDerivationElement(), new StructureDefinition.TypeDerivationRuleEnumFactory());
28020      if (element.hasSnapshot()) {
28021        composeStructureDefinitionStructureDefinitionSnapshotComponent("snapshot", element.getSnapshot());
28022      }
28023      if (element.hasDifferential()) {
28024        composeStructureDefinitionStructureDefinitionDifferentialComponent("differential", element.getDifferential());
28025      }
28026      composeElementClose(element);
28027      xml.exit(FHIR_NS, name);
28028    }
28029  }
28030
28031  protected void composeStructureDefinitionStructureDefinitionContactComponent(String name, StructureDefinition.StructureDefinitionContactComponent element) throws IOException {
28032    if (element != null) {
28033      composeElementAttributes(element);
28034      xml.enter(FHIR_NS, name);
28035      composeBackboneElements(element);
28036      if (element.hasNameElement()) {
28037        composeString("name", element.getNameElement());
28038      }
28039      if (element.hasTelecom()) { 
28040        for (ContactPoint e : element.getTelecom()) 
28041          composeContactPoint("telecom", e);
28042      }
28043      composeElementClose(element);
28044      xml.exit(FHIR_NS, name);
28045    }
28046  }
28047
28048  protected void composeStructureDefinitionStructureDefinitionMappingComponent(String name, StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
28049    if (element != null) {
28050      composeElementAttributes(element);
28051      xml.enter(FHIR_NS, name);
28052      composeBackboneElements(element);
28053      if (element.hasIdentityElement()) {
28054        composeId("identity", element.getIdentityElement());
28055      }
28056      if (element.hasUriElement()) {
28057        composeUri("uri", element.getUriElement());
28058      }
28059      if (element.hasNameElement()) {
28060        composeString("name", element.getNameElement());
28061      }
28062      if (element.hasCommentsElement()) {
28063        composeString("comments", element.getCommentsElement());
28064      }
28065      composeElementClose(element);
28066      xml.exit(FHIR_NS, name);
28067    }
28068  }
28069
28070  protected void composeStructureDefinitionStructureDefinitionSnapshotComponent(String name, StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
28071    if (element != null) {
28072      composeElementAttributes(element);
28073      xml.enter(FHIR_NS, name);
28074      composeBackboneElements(element);
28075      if (element.hasElement()) { 
28076        for (ElementDefinition e : element.getElement()) 
28077          composeElementDefinition("element", e);
28078      }
28079      composeElementClose(element);
28080      xml.exit(FHIR_NS, name);
28081    }
28082  }
28083
28084  protected void composeStructureDefinitionStructureDefinitionDifferentialComponent(String name, StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
28085    if (element != null) {
28086      composeElementAttributes(element);
28087      xml.enter(FHIR_NS, name);
28088      composeBackboneElements(element);
28089      if (element.hasElement()) { 
28090        for (ElementDefinition e : element.getElement()) 
28091          composeElementDefinition("element", e);
28092      }
28093      composeElementClose(element);
28094      xml.exit(FHIR_NS, name);
28095    }
28096  }
28097
28098  protected void composeStructureMap(String name, StructureMap element) throws IOException {
28099    if (element != null) {
28100      composeDomainResourceAttributes(element);
28101      xml.enter(FHIR_NS, name);
28102      composeDomainResourceElements(element);
28103      if (element.hasUrlElement()) {
28104        composeUri("url", element.getUrlElement());
28105      }
28106      if (element.hasIdentifier()) { 
28107        for (Identifier e : element.getIdentifier()) 
28108          composeIdentifier("identifier", e);
28109      }
28110      if (element.hasVersionElement()) {
28111        composeString("version", element.getVersionElement());
28112      }
28113      if (element.hasNameElement()) {
28114        composeString("name", element.getNameElement());
28115      }
28116      if (element.hasStatusElement())
28117        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
28118      if (element.hasExperimentalElement()) {
28119        composeBoolean("experimental", element.getExperimentalElement());
28120      }
28121      if (element.hasPublisherElement()) {
28122        composeString("publisher", element.getPublisherElement());
28123      }
28124      if (element.hasContact()) { 
28125        for (StructureMap.StructureMapContactComponent e : element.getContact()) 
28126          composeStructureMapStructureMapContactComponent("contact", e);
28127      }
28128      if (element.hasDateElement()) {
28129        composeDateTime("date", element.getDateElement());
28130      }
28131      if (element.hasDescriptionElement()) {
28132        composeString("description", element.getDescriptionElement());
28133      }
28134      if (element.hasUseContext()) { 
28135        for (CodeableConcept e : element.getUseContext()) 
28136          composeCodeableConcept("useContext", e);
28137      }
28138      if (element.hasRequirementsElement()) {
28139        composeString("requirements", element.getRequirementsElement());
28140      }
28141      if (element.hasCopyrightElement()) {
28142        composeString("copyright", element.getCopyrightElement());
28143      }
28144      if (element.hasStructure()) { 
28145        for (StructureMap.StructureMapStructureComponent e : element.getStructure()) 
28146          composeStructureMapStructureMapStructureComponent("structure", e);
28147      }
28148      if (element.hasImport()) { 
28149        for (UriType e : element.getImport()) 
28150          composeUri("import", e);
28151      }
28152      if (element.hasGroup()) { 
28153        for (StructureMap.StructureMapGroupComponent e : element.getGroup()) 
28154          composeStructureMapStructureMapGroupComponent("group", e);
28155      }
28156      composeElementClose(element);
28157      xml.exit(FHIR_NS, name);
28158    }
28159  }
28160
28161  protected void composeStructureMapStructureMapContactComponent(String name, StructureMap.StructureMapContactComponent element) throws IOException {
28162    if (element != null) {
28163      composeElementAttributes(element);
28164      xml.enter(FHIR_NS, name);
28165      composeBackboneElements(element);
28166      if (element.hasNameElement()) {
28167        composeString("name", element.getNameElement());
28168      }
28169      if (element.hasTelecom()) { 
28170        for (ContactPoint e : element.getTelecom()) 
28171          composeContactPoint("telecom", e);
28172      }
28173      composeElementClose(element);
28174      xml.exit(FHIR_NS, name);
28175    }
28176  }
28177
28178  protected void composeStructureMapStructureMapStructureComponent(String name, StructureMap.StructureMapStructureComponent element) throws IOException {
28179    if (element != null) {
28180      composeElementAttributes(element);
28181      xml.enter(FHIR_NS, name);
28182      composeBackboneElements(element);
28183      if (element.hasUrlElement()) {
28184        composeUri("url", element.getUrlElement());
28185      }
28186      if (element.hasModeElement())
28187        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapModelModeEnumFactory());
28188      if (element.hasDocumentationElement()) {
28189        composeString("documentation", element.getDocumentationElement());
28190      }
28191      composeElementClose(element);
28192      xml.exit(FHIR_NS, name);
28193    }
28194  }
28195
28196  protected void composeStructureMapStructureMapGroupComponent(String name, StructureMap.StructureMapGroupComponent element) throws IOException {
28197    if (element != null) {
28198      composeElementAttributes(element);
28199      xml.enter(FHIR_NS, name);
28200      composeBackboneElements(element);
28201      if (element.hasNameElement()) {
28202        composeId("name", element.getNameElement());
28203      }
28204      if (element.hasExtendsElement()) {
28205        composeId("extends", element.getExtendsElement());
28206      }
28207      if (element.hasDocumentationElement()) {
28208        composeString("documentation", element.getDocumentationElement());
28209      }
28210      if (element.hasInput()) { 
28211        for (StructureMap.StructureMapGroupInputComponent e : element.getInput()) 
28212          composeStructureMapStructureMapGroupInputComponent("input", e);
28213      }
28214      if (element.hasRule()) { 
28215        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
28216          composeStructureMapStructureMapGroupRuleComponent("rule", e);
28217      }
28218      composeElementClose(element);
28219      xml.exit(FHIR_NS, name);
28220    }
28221  }
28222
28223  protected void composeStructureMapStructureMapGroupInputComponent(String name, StructureMap.StructureMapGroupInputComponent element) throws IOException {
28224    if (element != null) {
28225      composeElementAttributes(element);
28226      xml.enter(FHIR_NS, name);
28227      composeBackboneElements(element);
28228      if (element.hasNameElement()) {
28229        composeId("name", element.getNameElement());
28230      }
28231      if (element.hasTypeElement()) {
28232        composeString("type", element.getTypeElement());
28233      }
28234      if (element.hasModeElement())
28235        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapInputModeEnumFactory());
28236      if (element.hasDocumentationElement()) {
28237        composeString("documentation", element.getDocumentationElement());
28238      }
28239      composeElementClose(element);
28240      xml.exit(FHIR_NS, name);
28241    }
28242  }
28243
28244  protected void composeStructureMapStructureMapGroupRuleComponent(String name, StructureMap.StructureMapGroupRuleComponent element) throws IOException {
28245    if (element != null) {
28246      composeElementAttributes(element);
28247      xml.enter(FHIR_NS, name);
28248      composeBackboneElements(element);
28249      if (element.hasNameElement()) {
28250        composeId("name", element.getNameElement());
28251      }
28252      if (element.hasSource()) { 
28253        for (StructureMap.StructureMapGroupRuleSourceComponent e : element.getSource()) 
28254          composeStructureMapStructureMapGroupRuleSourceComponent("source", e);
28255      }
28256      if (element.hasTarget()) { 
28257        for (StructureMap.StructureMapGroupRuleTargetComponent e : element.getTarget()) 
28258          composeStructureMapStructureMapGroupRuleTargetComponent("target", e);
28259      }
28260      if (element.hasRule()) { 
28261        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
28262          composeStructureMapStructureMapGroupRuleComponent("rule", e);
28263      }
28264      if (element.hasDependent()) { 
28265        for (StructureMap.StructureMapGroupRuleDependentComponent e : element.getDependent()) 
28266          composeStructureMapStructureMapGroupRuleDependentComponent("dependent", e);
28267      }
28268      if (element.hasDocumentationElement()) {
28269        composeString("documentation", element.getDocumentationElement());
28270      }
28271      composeElementClose(element);
28272      xml.exit(FHIR_NS, name);
28273    }
28274  }
28275
28276  protected void composeStructureMapStructureMapGroupRuleSourceComponent(String name, StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
28277    if (element != null) {
28278      composeElementAttributes(element);
28279      xml.enter(FHIR_NS, name);
28280      composeBackboneElements(element);
28281      if (element.hasRequiredElement()) {
28282        composeBoolean("required", element.getRequiredElement());
28283      }
28284      if (element.hasContextElement()) {
28285        composeId("context", element.getContextElement());
28286      }
28287      if (element.hasContextTypeElement())
28288        composeEnumeration("contextType", element.getContextTypeElement(), new StructureMap.StructureMapContextTypeEnumFactory());
28289      if (element.hasElementElement()) {
28290        composeString("element", element.getElementElement());
28291      }
28292      if (element.hasListModeElement())
28293        composeEnumeration("listMode", element.getListModeElement(), new StructureMap.StructureMapListModeEnumFactory());
28294      if (element.hasVariableElement()) {
28295        composeId("variable", element.getVariableElement());
28296      }
28297      if (element.hasConditionElement()) {
28298        composeString("condition", element.getConditionElement());
28299      }
28300      if (element.hasCheckElement()) {
28301        composeString("check", element.getCheckElement());
28302      }
28303      composeElementClose(element);
28304      xml.exit(FHIR_NS, name);
28305    }
28306  }
28307
28308  protected void composeStructureMapStructureMapGroupRuleTargetComponent(String name, StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
28309    if (element != null) {
28310      composeElementAttributes(element);
28311      xml.enter(FHIR_NS, name);
28312      composeBackboneElements(element);
28313      if (element.hasContextElement()) {
28314        composeId("context", element.getContextElement());
28315      }
28316      if (element.hasContextTypeElement())
28317        composeEnumeration("contextType", element.getContextTypeElement(), new StructureMap.StructureMapContextTypeEnumFactory());
28318      if (element.hasElementElement()) {
28319        composeString("element", element.getElementElement());
28320      }
28321      if (element.hasVariableElement()) {
28322        composeId("variable", element.getVariableElement());
28323      }
28324        if (element.hasListMode()) 
28325          for (Enumeration<StructureMap.StructureMapListMode> e : element.getListMode()) 
28326            composeEnumeration("listMode", e, new StructureMap.StructureMapListModeEnumFactory());
28327      if (element.hasListRuleIdElement()) {
28328        composeId("listRuleId", element.getListRuleIdElement());
28329      }
28330      if (element.hasTransformElement())
28331        composeEnumeration("transform", element.getTransformElement(), new StructureMap.StructureMapTransformEnumFactory());
28332      if (element.hasParameter()) { 
28333        for (StructureMap.StructureMapGroupRuleTargetParameterComponent e : element.getParameter()) 
28334          composeStructureMapStructureMapGroupRuleTargetParameterComponent("parameter", e);
28335      }
28336      composeElementClose(element);
28337      xml.exit(FHIR_NS, name);
28338    }
28339  }
28340
28341  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponent(String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
28342    if (element != null) {
28343      composeElementAttributes(element);
28344      xml.enter(FHIR_NS, name);
28345      composeBackboneElements(element);
28346      if (element.hasValue()) {
28347        composeType("value", element.getValue());
28348      }      composeElementClose(element);
28349      xml.exit(FHIR_NS, name);
28350    }
28351  }
28352
28353  protected void composeStructureMapStructureMapGroupRuleDependentComponent(String name, StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
28354    if (element != null) {
28355      composeElementAttributes(element);
28356      xml.enter(FHIR_NS, name);
28357      composeBackboneElements(element);
28358      if (element.hasNameElement()) {
28359        composeId("name", element.getNameElement());
28360      }
28361      if (element.hasVariable()) { 
28362        for (StringType e : element.getVariable()) 
28363          composeString("variable", e);
28364      }
28365      composeElementClose(element);
28366      xml.exit(FHIR_NS, name);
28367    }
28368  }
28369
28370  protected void composeSubscription(String name, Subscription element) throws IOException {
28371    if (element != null) {
28372      composeDomainResourceAttributes(element);
28373      xml.enter(FHIR_NS, name);
28374      composeDomainResourceElements(element);
28375      if (element.hasCriteriaElement()) {
28376        composeString("criteria", element.getCriteriaElement());
28377      }
28378      if (element.hasContact()) { 
28379        for (ContactPoint e : element.getContact()) 
28380          composeContactPoint("contact", e);
28381      }
28382      if (element.hasReasonElement()) {
28383        composeString("reason", element.getReasonElement());
28384      }
28385      if (element.hasStatusElement())
28386        composeEnumeration("status", element.getStatusElement(), new Subscription.SubscriptionStatusEnumFactory());
28387      if (element.hasErrorElement()) {
28388        composeString("error", element.getErrorElement());
28389      }
28390      if (element.hasChannel()) {
28391        composeSubscriptionSubscriptionChannelComponent("channel", element.getChannel());
28392      }
28393      if (element.hasEndElement()) {
28394        composeInstant("end", element.getEndElement());
28395      }
28396      if (element.hasTag()) { 
28397        for (Coding e : element.getTag()) 
28398          composeCoding("tag", e);
28399      }
28400      composeElementClose(element);
28401      xml.exit(FHIR_NS, name);
28402    }
28403  }
28404
28405  protected void composeSubscriptionSubscriptionChannelComponent(String name, Subscription.SubscriptionChannelComponent element) throws IOException {
28406    if (element != null) {
28407      composeElementAttributes(element);
28408      xml.enter(FHIR_NS, name);
28409      composeBackboneElements(element);
28410      if (element.hasTypeElement())
28411        composeEnumeration("type", element.getTypeElement(), new Subscription.SubscriptionChannelTypeEnumFactory());
28412      if (element.hasEndpointElement()) {
28413        composeUri("endpoint", element.getEndpointElement());
28414      }
28415      if (element.hasPayloadElement()) {
28416        composeString("payload", element.getPayloadElement());
28417      }
28418      if (element.hasHeaderElement()) {
28419        composeString("header", element.getHeaderElement());
28420      }
28421      composeElementClose(element);
28422      xml.exit(FHIR_NS, name);
28423    }
28424  }
28425
28426  protected void composeSubstance(String name, Substance element) throws IOException {
28427    if (element != null) {
28428      composeDomainResourceAttributes(element);
28429      xml.enter(FHIR_NS, name);
28430      composeDomainResourceElements(element);
28431      if (element.hasIdentifier()) { 
28432        for (Identifier e : element.getIdentifier()) 
28433          composeIdentifier("identifier", e);
28434      }
28435      if (element.hasCategory()) { 
28436        for (CodeableConcept e : element.getCategory()) 
28437          composeCodeableConcept("category", e);
28438      }
28439      if (element.hasCode()) {
28440        composeCodeableConcept("code", element.getCode());
28441      }
28442      if (element.hasDescriptionElement()) {
28443        composeString("description", element.getDescriptionElement());
28444      }
28445      if (element.hasInstance()) { 
28446        for (Substance.SubstanceInstanceComponent e : element.getInstance()) 
28447          composeSubstanceSubstanceInstanceComponent("instance", e);
28448      }
28449      if (element.hasIngredient()) { 
28450        for (Substance.SubstanceIngredientComponent e : element.getIngredient()) 
28451          composeSubstanceSubstanceIngredientComponent("ingredient", e);
28452      }
28453      composeElementClose(element);
28454      xml.exit(FHIR_NS, name);
28455    }
28456  }
28457
28458  protected void composeSubstanceSubstanceInstanceComponent(String name, Substance.SubstanceInstanceComponent element) throws IOException {
28459    if (element != null) {
28460      composeElementAttributes(element);
28461      xml.enter(FHIR_NS, name);
28462      composeBackboneElements(element);
28463      if (element.hasIdentifier()) {
28464        composeIdentifier("identifier", element.getIdentifier());
28465      }
28466      if (element.hasExpiryElement()) {
28467        composeDateTime("expiry", element.getExpiryElement());
28468      }
28469      if (element.hasQuantity()) {
28470        composeSimpleQuantity("quantity", element.getQuantity());
28471      }
28472      composeElementClose(element);
28473      xml.exit(FHIR_NS, name);
28474    }
28475  }
28476
28477  protected void composeSubstanceSubstanceIngredientComponent(String name, Substance.SubstanceIngredientComponent element) throws IOException {
28478    if (element != null) {
28479      composeElementAttributes(element);
28480      xml.enter(FHIR_NS, name);
28481      composeBackboneElements(element);
28482      if (element.hasQuantity()) {
28483        composeRatio("quantity", element.getQuantity());
28484      }
28485      if (element.hasSubstance()) {
28486        composeReference("substance", element.getSubstance());
28487      }
28488      composeElementClose(element);
28489      xml.exit(FHIR_NS, name);
28490    }
28491  }
28492
28493  protected void composeSupplyDelivery(String name, SupplyDelivery element) throws IOException {
28494    if (element != null) {
28495      composeDomainResourceAttributes(element);
28496      xml.enter(FHIR_NS, name);
28497      composeDomainResourceElements(element);
28498      if (element.hasIdentifier()) {
28499        composeIdentifier("identifier", element.getIdentifier());
28500      }
28501      if (element.hasStatusElement())
28502        composeEnumeration("status", element.getStatusElement(), new SupplyDelivery.SupplyDeliveryStatusEnumFactory());
28503      if (element.hasPatient()) {
28504        composeReference("patient", element.getPatient());
28505      }
28506      if (element.hasType()) {
28507        composeCodeableConcept("type", element.getType());
28508      }
28509      if (element.hasQuantity()) {
28510        composeSimpleQuantity("quantity", element.getQuantity());
28511      }
28512      if (element.hasSuppliedItem()) {
28513        composeReference("suppliedItem", element.getSuppliedItem());
28514      }
28515      if (element.hasSupplier()) {
28516        composeReference("supplier", element.getSupplier());
28517      }
28518      if (element.hasWhenPrepared()) {
28519        composePeriod("whenPrepared", element.getWhenPrepared());
28520      }
28521      if (element.hasTimeElement()) {
28522        composeDateTime("time", element.getTimeElement());
28523      }
28524      if (element.hasDestination()) {
28525        composeReference("destination", element.getDestination());
28526      }
28527      if (element.hasReceiver()) { 
28528        for (Reference e : element.getReceiver()) 
28529          composeReference("receiver", e);
28530      }
28531      composeElementClose(element);
28532      xml.exit(FHIR_NS, name);
28533    }
28534  }
28535
28536  protected void composeSupplyRequest(String name, SupplyRequest element) throws IOException {
28537    if (element != null) {
28538      composeDomainResourceAttributes(element);
28539      xml.enter(FHIR_NS, name);
28540      composeDomainResourceElements(element);
28541      if (element.hasPatient()) {
28542        composeReference("patient", element.getPatient());
28543      }
28544      if (element.hasSource()) {
28545        composeReference("source", element.getSource());
28546      }
28547      if (element.hasDateElement()) {
28548        composeDateTime("date", element.getDateElement());
28549      }
28550      if (element.hasIdentifier()) {
28551        composeIdentifier("identifier", element.getIdentifier());
28552      }
28553      if (element.hasStatusElement())
28554        composeEnumeration("status", element.getStatusElement(), new SupplyRequest.SupplyRequestStatusEnumFactory());
28555      if (element.hasKind()) {
28556        composeCodeableConcept("kind", element.getKind());
28557      }
28558      if (element.hasOrderedItem()) {
28559        composeReference("orderedItem", element.getOrderedItem());
28560      }
28561      if (element.hasSupplier()) { 
28562        for (Reference e : element.getSupplier()) 
28563          composeReference("supplier", e);
28564      }
28565      if (element.hasReason()) {
28566        composeType("reason", element.getReason());
28567      }      if (element.hasWhen()) {
28568        composeSupplyRequestSupplyRequestWhenComponent("when", element.getWhen());
28569      }
28570      composeElementClose(element);
28571      xml.exit(FHIR_NS, name);
28572    }
28573  }
28574
28575  protected void composeSupplyRequestSupplyRequestWhenComponent(String name, SupplyRequest.SupplyRequestWhenComponent element) throws IOException {
28576    if (element != null) {
28577      composeElementAttributes(element);
28578      xml.enter(FHIR_NS, name);
28579      composeBackboneElements(element);
28580      if (element.hasCode()) {
28581        composeCodeableConcept("code", element.getCode());
28582      }
28583      if (element.hasSchedule()) {
28584        composeTiming("schedule", element.getSchedule());
28585      }
28586      composeElementClose(element);
28587      xml.exit(FHIR_NS, name);
28588    }
28589  }
28590
28591  protected void composeTask(String name, Task element) throws IOException {
28592    if (element != null) {
28593      composeDomainResourceAttributes(element);
28594      xml.enter(FHIR_NS, name);
28595      composeDomainResourceElements(element);
28596      if (element.hasIdentifier()) {
28597        composeIdentifier("identifier", element.getIdentifier());
28598      }
28599      if (element.hasType()) {
28600        composeCodeableConcept("type", element.getType());
28601      }
28602      if (element.hasDescriptionElement()) {
28603        composeString("description", element.getDescriptionElement());
28604      }
28605      if (element.hasPerformerType()) { 
28606        for (Coding e : element.getPerformerType()) 
28607          composeCoding("performerType", e);
28608      }
28609      if (element.hasPriorityElement())
28610        composeEnumeration("priority", element.getPriorityElement(), new Task.TaskPriorityEnumFactory());
28611      if (element.hasStatusElement())
28612        composeEnumeration("status", element.getStatusElement(), new Task.TaskStatusEnumFactory());
28613      if (element.hasFailureReason()) {
28614        composeCodeableConcept("failureReason", element.getFailureReason());
28615      }
28616      if (element.hasSubject()) {
28617        composeReference("subject", element.getSubject());
28618      }
28619      if (element.hasFor()) {
28620        composeReference("for", element.getFor());
28621      }
28622      if (element.hasDefinitionElement()) {
28623        composeUri("definition", element.getDefinitionElement());
28624      }
28625      if (element.hasCreatedElement()) {
28626        composeDateTime("created", element.getCreatedElement());
28627      }
28628      if (element.hasLastModifiedElement()) {
28629        composeDateTime("lastModified", element.getLastModifiedElement());
28630      }
28631      if (element.hasCreator()) {
28632        composeReference("creator", element.getCreator());
28633      }
28634      if (element.hasOwner()) {
28635        composeReference("owner", element.getOwner());
28636      }
28637      if (element.hasParent()) {
28638        composeReference("parent", element.getParent());
28639      }
28640      if (element.hasInput()) { 
28641        for (Task.ParameterComponent e : element.getInput()) 
28642          composeTaskParameterComponent("input", e);
28643      }
28644      if (element.hasOutput()) { 
28645        for (Task.TaskOutputComponent e : element.getOutput()) 
28646          composeTaskTaskOutputComponent("output", e);
28647      }
28648      composeElementClose(element);
28649      xml.exit(FHIR_NS, name);
28650    }
28651  }
28652
28653  protected void composeTaskParameterComponent(String name, Task.ParameterComponent element) throws IOException {
28654    if (element != null) {
28655      composeElementAttributes(element);
28656      xml.enter(FHIR_NS, name);
28657      composeBackboneElements(element);
28658      if (element.hasNameElement()) {
28659        composeString("name", element.getNameElement());
28660      }
28661      if (element.hasValue()) {
28662        composeType("value", element.getValue());
28663      }      composeElementClose(element);
28664      xml.exit(FHIR_NS, name);
28665    }
28666  }
28667
28668  protected void composeTaskTaskOutputComponent(String name, Task.TaskOutputComponent element) throws IOException {
28669    if (element != null) {
28670      composeElementAttributes(element);
28671      xml.enter(FHIR_NS, name);
28672      composeBackboneElements(element);
28673      if (element.hasNameElement()) {
28674        composeString("name", element.getNameElement());
28675      }
28676      if (element.hasValue()) {
28677        composeType("value", element.getValue());
28678      }      composeElementClose(element);
28679      xml.exit(FHIR_NS, name);
28680    }
28681  }
28682
28683  protected void composeTestScript(String name, TestScript element) throws IOException {
28684    if (element != null) {
28685      composeDomainResourceAttributes(element);
28686      xml.enter(FHIR_NS, name);
28687      composeDomainResourceElements(element);
28688      if (element.hasUrlElement()) {
28689        composeUri("url", element.getUrlElement());
28690      }
28691      if (element.hasVersionElement()) {
28692        composeString("version", element.getVersionElement());
28693      }
28694      if (element.hasNameElement()) {
28695        composeString("name", element.getNameElement());
28696      }
28697      if (element.hasStatusElement())
28698        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
28699      if (element.hasIdentifier()) {
28700        composeIdentifier("identifier", element.getIdentifier());
28701      }
28702      if (element.hasExperimentalElement()) {
28703        composeBoolean("experimental", element.getExperimentalElement());
28704      }
28705      if (element.hasPublisherElement()) {
28706        composeString("publisher", element.getPublisherElement());
28707      }
28708      if (element.hasContact()) { 
28709        for (TestScript.TestScriptContactComponent e : element.getContact()) 
28710          composeTestScriptTestScriptContactComponent("contact", e);
28711      }
28712      if (element.hasDateElement()) {
28713        composeDateTime("date", element.getDateElement());
28714      }
28715      if (element.hasDescriptionElement()) {
28716        composeString("description", element.getDescriptionElement());
28717      }
28718      if (element.hasUseContext()) { 
28719        for (CodeableConcept e : element.getUseContext()) 
28720          composeCodeableConcept("useContext", e);
28721      }
28722      if (element.hasRequirementsElement()) {
28723        composeString("requirements", element.getRequirementsElement());
28724      }
28725      if (element.hasCopyrightElement()) {
28726        composeString("copyright", element.getCopyrightElement());
28727      }
28728      if (element.hasOrigin()) { 
28729        for (TestScript.TestScriptOriginComponent e : element.getOrigin()) 
28730          composeTestScriptTestScriptOriginComponent("origin", e);
28731      }
28732      if (element.hasDestination()) { 
28733        for (TestScript.TestScriptDestinationComponent e : element.getDestination()) 
28734          composeTestScriptTestScriptDestinationComponent("destination", e);
28735      }
28736      if (element.hasMetadata()) {
28737        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
28738      }
28739      if (element.hasFixture()) { 
28740        for (TestScript.TestScriptFixtureComponent e : element.getFixture()) 
28741          composeTestScriptTestScriptFixtureComponent("fixture", e);
28742      }
28743      if (element.hasProfile()) { 
28744        for (Reference e : element.getProfile()) 
28745          composeReference("profile", e);
28746      }
28747      if (element.hasVariable()) { 
28748        for (TestScript.TestScriptVariableComponent e : element.getVariable()) 
28749          composeTestScriptTestScriptVariableComponent("variable", e);
28750      }
28751      if (element.hasRule()) { 
28752        for (TestScript.TestScriptRuleComponent e : element.getRule()) 
28753          composeTestScriptTestScriptRuleComponent("rule", e);
28754      }
28755      if (element.hasRuleset()) { 
28756        for (TestScript.TestScriptRulesetComponent e : element.getRuleset()) 
28757          composeTestScriptTestScriptRulesetComponent("ruleset", e);
28758      }
28759      if (element.hasSetup()) {
28760        composeTestScriptTestScriptSetupComponent("setup", element.getSetup());
28761      }
28762      if (element.hasTest()) { 
28763        for (TestScript.TestScriptTestComponent e : element.getTest()) 
28764          composeTestScriptTestScriptTestComponent("test", e);
28765      }
28766      if (element.hasTeardown()) {
28767        composeTestScriptTestScriptTeardownComponent("teardown", element.getTeardown());
28768      }
28769      composeElementClose(element);
28770      xml.exit(FHIR_NS, name);
28771    }
28772  }
28773
28774  protected void composeTestScriptTestScriptContactComponent(String name, TestScript.TestScriptContactComponent element) throws IOException {
28775    if (element != null) {
28776      composeElementAttributes(element);
28777      xml.enter(FHIR_NS, name);
28778      composeBackboneElements(element);
28779      if (element.hasNameElement()) {
28780        composeString("name", element.getNameElement());
28781      }
28782      if (element.hasTelecom()) { 
28783        for (ContactPoint e : element.getTelecom()) 
28784          composeContactPoint("telecom", e);
28785      }
28786      composeElementClose(element);
28787      xml.exit(FHIR_NS, name);
28788    }
28789  }
28790
28791  protected void composeTestScriptTestScriptOriginComponent(String name, TestScript.TestScriptOriginComponent element) throws IOException {
28792    if (element != null) {
28793      composeElementAttributes(element);
28794      xml.enter(FHIR_NS, name);
28795      composeBackboneElements(element);
28796      if (element.hasIndexElement()) {
28797        composeInteger("index", element.getIndexElement());
28798      }
28799      if (element.hasProfile()) {
28800        composeCoding("profile", element.getProfile());
28801      }
28802      composeElementClose(element);
28803      xml.exit(FHIR_NS, name);
28804    }
28805  }
28806
28807  protected void composeTestScriptTestScriptDestinationComponent(String name, TestScript.TestScriptDestinationComponent element) throws IOException {
28808    if (element != null) {
28809      composeElementAttributes(element);
28810      xml.enter(FHIR_NS, name);
28811      composeBackboneElements(element);
28812      if (element.hasIndexElement()) {
28813        composeInteger("index", element.getIndexElement());
28814      }
28815      if (element.hasProfile()) {
28816        composeCoding("profile", element.getProfile());
28817      }
28818      composeElementClose(element);
28819      xml.exit(FHIR_NS, name);
28820    }
28821  }
28822
28823  protected void composeTestScriptTestScriptMetadataComponent(String name, TestScript.TestScriptMetadataComponent element) throws IOException {
28824    if (element != null) {
28825      composeElementAttributes(element);
28826      xml.enter(FHIR_NS, name);
28827      composeBackboneElements(element);
28828      if (element.hasLink()) { 
28829        for (TestScript.TestScriptMetadataLinkComponent e : element.getLink()) 
28830          composeTestScriptTestScriptMetadataLinkComponent("link", e);
28831      }
28832      if (element.hasCapability()) { 
28833        for (TestScript.TestScriptMetadataCapabilityComponent e : element.getCapability()) 
28834          composeTestScriptTestScriptMetadataCapabilityComponent("capability", e);
28835      }
28836      composeElementClose(element);
28837      xml.exit(FHIR_NS, name);
28838    }
28839  }
28840
28841  protected void composeTestScriptTestScriptMetadataLinkComponent(String name, TestScript.TestScriptMetadataLinkComponent element) throws IOException {
28842    if (element != null) {
28843      composeElementAttributes(element);
28844      xml.enter(FHIR_NS, name);
28845      composeBackboneElements(element);
28846      if (element.hasUrlElement()) {
28847        composeUri("url", element.getUrlElement());
28848      }
28849      if (element.hasDescriptionElement()) {
28850        composeString("description", element.getDescriptionElement());
28851      }
28852      composeElementClose(element);
28853      xml.exit(FHIR_NS, name);
28854    }
28855  }
28856
28857  protected void composeTestScriptTestScriptMetadataCapabilityComponent(String name, TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
28858    if (element != null) {
28859      composeElementAttributes(element);
28860      xml.enter(FHIR_NS, name);
28861      composeBackboneElements(element);
28862      if (element.hasRequiredElement()) {
28863        composeBoolean("required", element.getRequiredElement());
28864      }
28865      if (element.hasValidatedElement()) {
28866        composeBoolean("validated", element.getValidatedElement());
28867      }
28868      if (element.hasDescriptionElement()) {
28869        composeString("description", element.getDescriptionElement());
28870      }
28871      if (element.hasOrigin()) { 
28872        for (IntegerType e : element.getOrigin()) 
28873          composeInteger("origin", e);
28874      }
28875      if (element.hasDestinationElement()) {
28876        composeInteger("destination", element.getDestinationElement());
28877      }
28878      if (element.hasLink()) { 
28879        for (UriType e : element.getLink()) 
28880          composeUri("link", e);
28881      }
28882      if (element.hasConformance()) {
28883        composeReference("conformance", element.getConformance());
28884      }
28885      composeElementClose(element);
28886      xml.exit(FHIR_NS, name);
28887    }
28888  }
28889
28890  protected void composeTestScriptTestScriptFixtureComponent(String name, TestScript.TestScriptFixtureComponent element) throws IOException {
28891    if (element != null) {
28892      composeElementAttributes(element);
28893      xml.enter(FHIR_NS, name);
28894      composeBackboneElements(element);
28895      if (element.hasAutocreateElement()) {
28896        composeBoolean("autocreate", element.getAutocreateElement());
28897      }
28898      if (element.hasAutodeleteElement()) {
28899        composeBoolean("autodelete", element.getAutodeleteElement());
28900      }
28901      if (element.hasResource()) {
28902        composeReference("resource", element.getResource());
28903      }
28904      composeElementClose(element);
28905      xml.exit(FHIR_NS, name);
28906    }
28907  }
28908
28909  protected void composeTestScriptTestScriptVariableComponent(String name, TestScript.TestScriptVariableComponent element) throws IOException {
28910    if (element != null) {
28911      composeElementAttributes(element);
28912      xml.enter(FHIR_NS, name);
28913      composeBackboneElements(element);
28914      if (element.hasNameElement()) {
28915        composeString("name", element.getNameElement());
28916      }
28917      if (element.hasDefaultValueElement()) {
28918        composeString("defaultValue", element.getDefaultValueElement());
28919      }
28920      if (element.hasHeaderFieldElement()) {
28921        composeString("headerField", element.getHeaderFieldElement());
28922      }
28923      if (element.hasPathElement()) {
28924        composeString("path", element.getPathElement());
28925      }
28926      if (element.hasSourceIdElement()) {
28927        composeId("sourceId", element.getSourceIdElement());
28928      }
28929      composeElementClose(element);
28930      xml.exit(FHIR_NS, name);
28931    }
28932  }
28933
28934  protected void composeTestScriptTestScriptRuleComponent(String name, TestScript.TestScriptRuleComponent element) throws IOException {
28935    if (element != null) {
28936      composeElementAttributes(element);
28937      xml.enter(FHIR_NS, name);
28938      composeBackboneElements(element);
28939      if (element.hasResource()) {
28940        composeReference("resource", element.getResource());
28941      }
28942      if (element.hasParam()) { 
28943        for (TestScript.TestScriptRuleParamComponent e : element.getParam()) 
28944          composeTestScriptTestScriptRuleParamComponent("param", e);
28945      }
28946      composeElementClose(element);
28947      xml.exit(FHIR_NS, name);
28948    }
28949  }
28950
28951  protected void composeTestScriptTestScriptRuleParamComponent(String name, TestScript.TestScriptRuleParamComponent element) throws IOException {
28952    if (element != null) {
28953      composeElementAttributes(element);
28954      xml.enter(FHIR_NS, name);
28955      composeBackboneElements(element);
28956      if (element.hasNameElement()) {
28957        composeString("name", element.getNameElement());
28958      }
28959      if (element.hasValueElement()) {
28960        composeString("value", element.getValueElement());
28961      }
28962      composeElementClose(element);
28963      xml.exit(FHIR_NS, name);
28964    }
28965  }
28966
28967  protected void composeTestScriptTestScriptRulesetComponent(String name, TestScript.TestScriptRulesetComponent element) throws IOException {
28968    if (element != null) {
28969      composeElementAttributes(element);
28970      xml.enter(FHIR_NS, name);
28971      composeBackboneElements(element);
28972      if (element.hasResource()) {
28973        composeReference("resource", element.getResource());
28974      }
28975      if (element.hasRule()) { 
28976        for (TestScript.TestScriptRulesetRuleComponent e : element.getRule()) 
28977          composeTestScriptTestScriptRulesetRuleComponent("rule", e);
28978      }
28979      composeElementClose(element);
28980      xml.exit(FHIR_NS, name);
28981    }
28982  }
28983
28984  protected void composeTestScriptTestScriptRulesetRuleComponent(String name, TestScript.TestScriptRulesetRuleComponent element) throws IOException {
28985    if (element != null) {
28986      composeElementAttributes(element);
28987      xml.enter(FHIR_NS, name);
28988      composeBackboneElements(element);
28989      if (element.hasRuleIdElement()) {
28990        composeId("ruleId", element.getRuleIdElement());
28991      }
28992      if (element.hasParam()) { 
28993        for (TestScript.TestScriptRulesetRuleParamComponent e : element.getParam()) 
28994          composeTestScriptTestScriptRulesetRuleParamComponent("param", e);
28995      }
28996      composeElementClose(element);
28997      xml.exit(FHIR_NS, name);
28998    }
28999  }
29000
29001  protected void composeTestScriptTestScriptRulesetRuleParamComponent(String name, TestScript.TestScriptRulesetRuleParamComponent element) throws IOException {
29002    if (element != null) {
29003      composeElementAttributes(element);
29004      xml.enter(FHIR_NS, name);
29005      composeBackboneElements(element);
29006      if (element.hasNameElement()) {
29007        composeString("name", element.getNameElement());
29008      }
29009      if (element.hasValueElement()) {
29010        composeString("value", element.getValueElement());
29011      }
29012      composeElementClose(element);
29013      xml.exit(FHIR_NS, name);
29014    }
29015  }
29016
29017  protected void composeTestScriptTestScriptSetupComponent(String name, TestScript.TestScriptSetupComponent element) throws IOException {
29018    if (element != null) {
29019      composeElementAttributes(element);
29020      xml.enter(FHIR_NS, name);
29021      composeBackboneElements(element);
29022      if (element.hasMetadata()) {
29023        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
29024      }
29025      if (element.hasAction()) { 
29026        for (TestScript.SetupActionComponent e : element.getAction()) 
29027          composeTestScriptSetupActionComponent("action", e);
29028      }
29029      composeElementClose(element);
29030      xml.exit(FHIR_NS, name);
29031    }
29032  }
29033
29034  protected void composeTestScriptSetupActionComponent(String name, TestScript.SetupActionComponent element) throws IOException {
29035    if (element != null) {
29036      composeElementAttributes(element);
29037      xml.enter(FHIR_NS, name);
29038      composeBackboneElements(element);
29039      if (element.hasOperation()) {
29040        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
29041      }
29042      if (element.hasAssert()) {
29043        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
29044      }
29045      composeElementClose(element);
29046      xml.exit(FHIR_NS, name);
29047    }
29048  }
29049
29050  protected void composeTestScriptSetupActionOperationComponent(String name, TestScript.SetupActionOperationComponent element) throws IOException {
29051    if (element != null) {
29052      composeElementAttributes(element);
29053      xml.enter(FHIR_NS, name);
29054      composeBackboneElements(element);
29055      if (element.hasType()) {
29056        composeCoding("type", element.getType());
29057      }
29058      if (element.hasResourceElement()) {
29059        composeCode("resource", element.getResourceElement());
29060      }
29061      if (element.hasLabelElement()) {
29062        composeString("label", element.getLabelElement());
29063      }
29064      if (element.hasDescriptionElement()) {
29065        composeString("description", element.getDescriptionElement());
29066      }
29067      if (element.hasAcceptElement())
29068        composeEnumeration("accept", element.getAcceptElement(), new TestScript.ContentTypeEnumFactory());
29069      if (element.hasContentTypeElement())
29070        composeEnumeration("contentType", element.getContentTypeElement(), new TestScript.ContentTypeEnumFactory());
29071      if (element.hasDestinationElement()) {
29072        composeInteger("destination", element.getDestinationElement());
29073      }
29074      if (element.hasEncodeRequestUrlElement()) {
29075        composeBoolean("encodeRequestUrl", element.getEncodeRequestUrlElement());
29076      }
29077      if (element.hasOriginElement()) {
29078        composeInteger("origin", element.getOriginElement());
29079      }
29080      if (element.hasParamsElement()) {
29081        composeString("params", element.getParamsElement());
29082      }
29083      if (element.hasRequestHeader()) { 
29084        for (TestScript.SetupActionOperationRequestHeaderComponent e : element.getRequestHeader()) 
29085          composeTestScriptSetupActionOperationRequestHeaderComponent("requestHeader", e);
29086      }
29087      if (element.hasResponseIdElement()) {
29088        composeId("responseId", element.getResponseIdElement());
29089      }
29090      if (element.hasSourceIdElement()) {
29091        composeId("sourceId", element.getSourceIdElement());
29092      }
29093      if (element.hasTargetIdElement()) {
29094        composeId("targetId", element.getTargetIdElement());
29095      }
29096      if (element.hasUrlElement()) {
29097        composeString("url", element.getUrlElement());
29098      }
29099      composeElementClose(element);
29100      xml.exit(FHIR_NS, name);
29101    }
29102  }
29103
29104  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(String name, TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
29105    if (element != null) {
29106      composeElementAttributes(element);
29107      xml.enter(FHIR_NS, name);
29108      composeBackboneElements(element);
29109      if (element.hasFieldElement()) {
29110        composeString("field", element.getFieldElement());
29111      }
29112      if (element.hasValueElement()) {
29113        composeString("value", element.getValueElement());
29114      }
29115      composeElementClose(element);
29116      xml.exit(FHIR_NS, name);
29117    }
29118  }
29119
29120  protected void composeTestScriptSetupActionAssertComponent(String name, TestScript.SetupActionAssertComponent element) throws IOException {
29121    if (element != null) {
29122      composeElementAttributes(element);
29123      xml.enter(FHIR_NS, name);
29124      composeBackboneElements(element);
29125      if (element.hasLabelElement()) {
29126        composeString("label", element.getLabelElement());
29127      }
29128      if (element.hasDescriptionElement()) {
29129        composeString("description", element.getDescriptionElement());
29130      }
29131      if (element.hasDirectionElement())
29132        composeEnumeration("direction", element.getDirectionElement(), new TestScript.AssertionDirectionTypeEnumFactory());
29133      if (element.hasCompareToSourceIdElement()) {
29134        composeString("compareToSourceId", element.getCompareToSourceIdElement());
29135      }
29136      if (element.hasCompareToSourcePathElement()) {
29137        composeString("compareToSourcePath", element.getCompareToSourcePathElement());
29138      }
29139      if (element.hasContentTypeElement())
29140        composeEnumeration("contentType", element.getContentTypeElement(), new TestScript.ContentTypeEnumFactory());
29141      if (element.hasHeaderFieldElement()) {
29142        composeString("headerField", element.getHeaderFieldElement());
29143      }
29144      if (element.hasMinimumIdElement()) {
29145        composeString("minimumId", element.getMinimumIdElement());
29146      }
29147      if (element.hasNavigationLinksElement()) {
29148        composeBoolean("navigationLinks", element.getNavigationLinksElement());
29149      }
29150      if (element.hasOperatorElement())
29151        composeEnumeration("operator", element.getOperatorElement(), new TestScript.AssertionOperatorTypeEnumFactory());
29152      if (element.hasPathElement()) {
29153        composeString("path", element.getPathElement());
29154      }
29155      if (element.hasResourceElement()) {
29156        composeCode("resource", element.getResourceElement());
29157      }
29158      if (element.hasResponseElement())
29159        composeEnumeration("response", element.getResponseElement(), new TestScript.AssertionResponseTypesEnumFactory());
29160      if (element.hasResponseCodeElement()) {
29161        composeString("responseCode", element.getResponseCodeElement());
29162      }
29163      if (element.hasRule()) {
29164        composeTestScriptSetupActionAssertRuleComponent("rule", element.getRule());
29165      }
29166      if (element.hasRuleset()) {
29167        composeTestScriptSetupActionAssertRulesetComponent("ruleset", element.getRuleset());
29168      }
29169      if (element.hasSourceIdElement()) {
29170        composeId("sourceId", element.getSourceIdElement());
29171      }
29172      if (element.hasValidateProfileIdElement()) {
29173        composeId("validateProfileId", element.getValidateProfileIdElement());
29174      }
29175      if (element.hasValueElement()) {
29176        composeString("value", element.getValueElement());
29177      }
29178      if (element.hasWarningOnlyElement()) {
29179        composeBoolean("warningOnly", element.getWarningOnlyElement());
29180      }
29181      composeElementClose(element);
29182      xml.exit(FHIR_NS, name);
29183    }
29184  }
29185
29186  protected void composeTestScriptSetupActionAssertRuleComponent(String name, TestScript.SetupActionAssertRuleComponent element) throws IOException {
29187    if (element != null) {
29188      composeElementAttributes(element);
29189      xml.enter(FHIR_NS, name);
29190      composeBackboneElements(element);
29191      if (element.hasRuleIdElement()) {
29192        composeId("ruleId", element.getRuleIdElement());
29193      }
29194      if (element.hasParam()) { 
29195        for (TestScript.SetupActionAssertRuleParamComponent e : element.getParam()) 
29196          composeTestScriptSetupActionAssertRuleParamComponent("param", e);
29197      }
29198      composeElementClose(element);
29199      xml.exit(FHIR_NS, name);
29200    }
29201  }
29202
29203  protected void composeTestScriptSetupActionAssertRuleParamComponent(String name, TestScript.SetupActionAssertRuleParamComponent element) throws IOException {
29204    if (element != null) {
29205      composeElementAttributes(element);
29206      xml.enter(FHIR_NS, name);
29207      composeBackboneElements(element);
29208      if (element.hasNameElement()) {
29209        composeString("name", element.getNameElement());
29210      }
29211      if (element.hasValueElement()) {
29212        composeString("value", element.getValueElement());
29213      }
29214      composeElementClose(element);
29215      xml.exit(FHIR_NS, name);
29216    }
29217  }
29218
29219  protected void composeTestScriptSetupActionAssertRulesetComponent(String name, TestScript.SetupActionAssertRulesetComponent element) throws IOException {
29220    if (element != null) {
29221      composeElementAttributes(element);
29222      xml.enter(FHIR_NS, name);
29223      composeBackboneElements(element);
29224      if (element.hasRulesetIdElement()) {
29225        composeId("rulesetId", element.getRulesetIdElement());
29226      }
29227      if (element.hasRule()) { 
29228        for (TestScript.SetupActionAssertRulesetRuleComponent e : element.getRule()) 
29229          composeTestScriptSetupActionAssertRulesetRuleComponent("rule", e);
29230      }
29231      composeElementClose(element);
29232      xml.exit(FHIR_NS, name);
29233    }
29234  }
29235
29236  protected void composeTestScriptSetupActionAssertRulesetRuleComponent(String name, TestScript.SetupActionAssertRulesetRuleComponent element) throws IOException {
29237    if (element != null) {
29238      composeElementAttributes(element);
29239      xml.enter(FHIR_NS, name);
29240      composeBackboneElements(element);
29241      if (element.hasRuleIdElement()) {
29242        composeId("ruleId", element.getRuleIdElement());
29243      }
29244      if (element.hasParam()) { 
29245        for (TestScript.SetupActionAssertRulesetRuleParamComponent e : element.getParam()) 
29246          composeTestScriptSetupActionAssertRulesetRuleParamComponent("param", e);
29247      }
29248      composeElementClose(element);
29249      xml.exit(FHIR_NS, name);
29250    }
29251  }
29252
29253  protected void composeTestScriptSetupActionAssertRulesetRuleParamComponent(String name, TestScript.SetupActionAssertRulesetRuleParamComponent element) throws IOException {
29254    if (element != null) {
29255      composeElementAttributes(element);
29256      xml.enter(FHIR_NS, name);
29257      composeBackboneElements(element);
29258      if (element.hasNameElement()) {
29259        composeString("name", element.getNameElement());
29260      }
29261      if (element.hasValueElement()) {
29262        composeString("value", element.getValueElement());
29263      }
29264      composeElementClose(element);
29265      xml.exit(FHIR_NS, name);
29266    }
29267  }
29268
29269  protected void composeTestScriptTestScriptTestComponent(String name, TestScript.TestScriptTestComponent element) throws IOException {
29270    if (element != null) {
29271      composeElementAttributes(element);
29272      xml.enter(FHIR_NS, name);
29273      composeBackboneElements(element);
29274      if (element.hasNameElement()) {
29275        composeString("name", element.getNameElement());
29276      }
29277      if (element.hasDescriptionElement()) {
29278        composeString("description", element.getDescriptionElement());
29279      }
29280      if (element.hasMetadata()) {
29281        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
29282      }
29283      if (element.hasAction()) { 
29284        for (TestScript.TestActionComponent e : element.getAction()) 
29285          composeTestScriptTestActionComponent("action", e);
29286      }
29287      composeElementClose(element);
29288      xml.exit(FHIR_NS, name);
29289    }
29290  }
29291
29292  protected void composeTestScriptTestActionComponent(String name, TestScript.TestActionComponent element) throws IOException {
29293    if (element != null) {
29294      composeElementAttributes(element);
29295      xml.enter(FHIR_NS, name);
29296      composeBackboneElements(element);
29297      if (element.hasOperation()) {
29298        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
29299      }
29300      if (element.hasAssert()) {
29301        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
29302      }
29303      composeElementClose(element);
29304      xml.exit(FHIR_NS, name);
29305    }
29306  }
29307
29308  protected void composeTestScriptTestScriptTeardownComponent(String name, TestScript.TestScriptTeardownComponent element) throws IOException {
29309    if (element != null) {
29310      composeElementAttributes(element);
29311      xml.enter(FHIR_NS, name);
29312      composeBackboneElements(element);
29313      if (element.hasAction()) { 
29314        for (TestScript.TeardownActionComponent e : element.getAction()) 
29315          composeTestScriptTeardownActionComponent("action", e);
29316      }
29317      composeElementClose(element);
29318      xml.exit(FHIR_NS, name);
29319    }
29320  }
29321
29322  protected void composeTestScriptTeardownActionComponent(String name, TestScript.TeardownActionComponent element) throws IOException {
29323    if (element != null) {
29324      composeElementAttributes(element);
29325      xml.enter(FHIR_NS, name);
29326      composeBackboneElements(element);
29327      if (element.hasOperation()) {
29328        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
29329      }
29330      composeElementClose(element);
29331      xml.exit(FHIR_NS, name);
29332    }
29333  }
29334
29335  protected void composeValueSet(String name, ValueSet element) throws IOException {
29336    if (element != null) {
29337      composeDomainResourceAttributes(element);
29338      xml.enter(FHIR_NS, name);
29339      composeDomainResourceElements(element);
29340      if (element.hasUrlElement()) {
29341        composeUri("url", element.getUrlElement());
29342      }
29343      if (element.hasIdentifier()) {
29344        composeIdentifier("identifier", element.getIdentifier());
29345      }
29346      if (element.hasVersionElement()) {
29347        composeString("version", element.getVersionElement());
29348      }
29349      if (element.hasNameElement()) {
29350        composeString("name", element.getNameElement());
29351      }
29352      if (element.hasStatusElement())
29353        composeEnumeration("status", element.getStatusElement(), new Enumerations.ConformanceResourceStatusEnumFactory());
29354      if (element.hasExperimentalElement()) {
29355        composeBoolean("experimental", element.getExperimentalElement());
29356      }
29357      if (element.hasPublisherElement()) {
29358        composeString("publisher", element.getPublisherElement());
29359      }
29360      if (element.hasContact()) { 
29361        for (ValueSet.ValueSetContactComponent e : element.getContact()) 
29362          composeValueSetValueSetContactComponent("contact", e);
29363      }
29364      if (element.hasDateElement()) {
29365        composeDateTime("date", element.getDateElement());
29366      }
29367      if (element.hasLockedDateElement()) {
29368        composeDate("lockedDate", element.getLockedDateElement());
29369      }
29370      if (element.hasDescriptionElement()) {
29371        composeString("description", element.getDescriptionElement());
29372      }
29373      if (element.hasUseContext()) { 
29374        for (CodeableConcept e : element.getUseContext()) 
29375          composeCodeableConcept("useContext", e);
29376      }
29377      if (element.hasImmutableElement()) {
29378        composeBoolean("immutable", element.getImmutableElement());
29379      }
29380      if (element.hasRequirementsElement()) {
29381        composeString("requirements", element.getRequirementsElement());
29382      }
29383      if (element.hasCopyrightElement()) {
29384        composeString("copyright", element.getCopyrightElement());
29385      }
29386      if (element.hasExtensibleElement()) {
29387        composeBoolean("extensible", element.getExtensibleElement());
29388      }
29389      if (element.hasCompose()) {
29390        composeValueSetValueSetComposeComponent("compose", element.getCompose());
29391      }
29392      if (element.hasExpansion()) {
29393        composeValueSetValueSetExpansionComponent("expansion", element.getExpansion());
29394      }
29395      composeElementClose(element);
29396      xml.exit(FHIR_NS, name);
29397    }
29398  }
29399
29400  protected void composeValueSetValueSetContactComponent(String name, ValueSet.ValueSetContactComponent element) throws IOException {
29401    if (element != null) {
29402      composeElementAttributes(element);
29403      xml.enter(FHIR_NS, name);
29404      composeBackboneElements(element);
29405      if (element.hasNameElement()) {
29406        composeString("name", element.getNameElement());
29407      }
29408      if (element.hasTelecom()) { 
29409        for (ContactPoint e : element.getTelecom()) 
29410          composeContactPoint("telecom", e);
29411      }
29412      composeElementClose(element);
29413      xml.exit(FHIR_NS, name);
29414    }
29415  }
29416
29417  protected void composeValueSetValueSetComposeComponent(String name, ValueSet.ValueSetComposeComponent element) throws IOException {
29418    if (element != null) {
29419      composeElementAttributes(element);
29420      xml.enter(FHIR_NS, name);
29421      composeBackboneElements(element);
29422      if (element.hasImport()) { 
29423        for (UriType e : element.getImport()) 
29424          composeUri("import", e);
29425      }
29426      if (element.hasInclude()) { 
29427        for (ValueSet.ConceptSetComponent e : element.getInclude()) 
29428          composeValueSetConceptSetComponent("include", e);
29429      }
29430      if (element.hasExclude()) { 
29431        for (ValueSet.ConceptSetComponent e : element.getExclude()) 
29432          composeValueSetConceptSetComponent("exclude", e);
29433      }
29434      composeElementClose(element);
29435      xml.exit(FHIR_NS, name);
29436    }
29437  }
29438
29439  protected void composeValueSetConceptSetComponent(String name, ValueSet.ConceptSetComponent element) throws IOException {
29440    if (element != null) {
29441      composeElementAttributes(element);
29442      xml.enter(FHIR_NS, name);
29443      composeBackboneElements(element);
29444      if (element.hasSystemElement()) {
29445        composeUri("system", element.getSystemElement());
29446      }
29447      if (element.hasVersionElement()) {
29448        composeString("version", element.getVersionElement());
29449      }
29450      if (element.hasConcept()) { 
29451        for (ValueSet.ConceptReferenceComponent e : element.getConcept()) 
29452          composeValueSetConceptReferenceComponent("concept", e);
29453      }
29454      if (element.hasFilter()) { 
29455        for (ValueSet.ConceptSetFilterComponent e : element.getFilter()) 
29456          composeValueSetConceptSetFilterComponent("filter", e);
29457      }
29458      composeElementClose(element);
29459      xml.exit(FHIR_NS, name);
29460    }
29461  }
29462
29463  protected void composeValueSetConceptReferenceComponent(String name, ValueSet.ConceptReferenceComponent element) throws IOException {
29464    if (element != null) {
29465      composeElementAttributes(element);
29466      xml.enter(FHIR_NS, name);
29467      composeBackboneElements(element);
29468      if (element.hasCodeElement()) {
29469        composeCode("code", element.getCodeElement());
29470      }
29471      if (element.hasDisplayElement()) {
29472        composeString("display", element.getDisplayElement());
29473      }
29474      if (element.hasDesignation()) { 
29475        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
29476          composeValueSetConceptReferenceDesignationComponent("designation", e);
29477      }
29478      composeElementClose(element);
29479      xml.exit(FHIR_NS, name);
29480    }
29481  }
29482
29483  protected void composeValueSetConceptReferenceDesignationComponent(String name, ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
29484    if (element != null) {
29485      composeElementAttributes(element);
29486      xml.enter(FHIR_NS, name);
29487      composeBackboneElements(element);
29488      if (element.hasLanguageElement()) {
29489        composeCode("language", element.getLanguageElement());
29490      }
29491      if (element.hasUse()) {
29492        composeCoding("use", element.getUse());
29493      }
29494      if (element.hasValueElement()) {
29495        composeString("value", element.getValueElement());
29496      }
29497      composeElementClose(element);
29498      xml.exit(FHIR_NS, name);
29499    }
29500  }
29501
29502  protected void composeValueSetConceptSetFilterComponent(String name, ValueSet.ConceptSetFilterComponent element) throws IOException {
29503    if (element != null) {
29504      composeElementAttributes(element);
29505      xml.enter(FHIR_NS, name);
29506      composeBackboneElements(element);
29507      if (element.hasPropertyElement()) {
29508        composeCode("property", element.getPropertyElement());
29509      }
29510      if (element.hasOpElement())
29511        composeEnumeration("op", element.getOpElement(), new ValueSet.FilterOperatorEnumFactory());
29512      if (element.hasValueElement()) {
29513        composeCode("value", element.getValueElement());
29514      }
29515      composeElementClose(element);
29516      xml.exit(FHIR_NS, name);
29517    }
29518  }
29519
29520  protected void composeValueSetValueSetExpansionComponent(String name, ValueSet.ValueSetExpansionComponent element) throws IOException {
29521    if (element != null) {
29522      composeElementAttributes(element);
29523      xml.enter(FHIR_NS, name);
29524      composeBackboneElements(element);
29525      if (element.hasIdentifierElement()) {
29526        composeUri("identifier", element.getIdentifierElement());
29527      }
29528      if (element.hasTimestampElement()) {
29529        composeDateTime("timestamp", element.getTimestampElement());
29530      }
29531      if (element.hasTotalElement()) {
29532        composeInteger("total", element.getTotalElement());
29533      }
29534      if (element.hasOffsetElement()) {
29535        composeInteger("offset", element.getOffsetElement());
29536      }
29537      if (element.hasParameter()) { 
29538        for (ValueSet.ValueSetExpansionParameterComponent e : element.getParameter()) 
29539          composeValueSetValueSetExpansionParameterComponent("parameter", e);
29540      }
29541      if (element.hasContains()) { 
29542        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
29543          composeValueSetValueSetExpansionContainsComponent("contains", e);
29544      }
29545      composeElementClose(element);
29546      xml.exit(FHIR_NS, name);
29547    }
29548  }
29549
29550  protected void composeValueSetValueSetExpansionParameterComponent(String name, ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
29551    if (element != null) {
29552      composeElementAttributes(element);
29553      xml.enter(FHIR_NS, name);
29554      composeBackboneElements(element);
29555      if (element.hasNameElement()) {
29556        composeString("name", element.getNameElement());
29557      }
29558      if (element.hasValue()) {
29559        composeType("value", element.getValue());
29560      }      composeElementClose(element);
29561      xml.exit(FHIR_NS, name);
29562    }
29563  }
29564
29565  protected void composeValueSetValueSetExpansionContainsComponent(String name, ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
29566    if (element != null) {
29567      composeElementAttributes(element);
29568      xml.enter(FHIR_NS, name);
29569      composeBackboneElements(element);
29570      if (element.hasSystemElement()) {
29571        composeUri("system", element.getSystemElement());
29572      }
29573      if (element.hasAbstractElement()) {
29574        composeBoolean("abstract", element.getAbstractElement());
29575      }
29576      if (element.hasVersionElement()) {
29577        composeString("version", element.getVersionElement());
29578      }
29579      if (element.hasCodeElement()) {
29580        composeCode("code", element.getCodeElement());
29581      }
29582      if (element.hasDisplayElement()) {
29583        composeString("display", element.getDisplayElement());
29584      }
29585      if (element.hasContains()) { 
29586        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
29587          composeValueSetValueSetExpansionContainsComponent("contains", e);
29588      }
29589      composeElementClose(element);
29590      xml.exit(FHIR_NS, name);
29591    }
29592  }
29593
29594  protected void composeVisionPrescription(String name, VisionPrescription element) throws IOException {
29595    if (element != null) {
29596      composeDomainResourceAttributes(element);
29597      xml.enter(FHIR_NS, name);
29598      composeDomainResourceElements(element);
29599      if (element.hasIdentifier()) { 
29600        for (Identifier e : element.getIdentifier()) 
29601          composeIdentifier("identifier", e);
29602      }
29603      if (element.hasDateWrittenElement()) {
29604        composeDateTime("dateWritten", element.getDateWrittenElement());
29605      }
29606      if (element.hasPatient()) {
29607        composeReference("patient", element.getPatient());
29608      }
29609      if (element.hasPrescriber()) {
29610        composeReference("prescriber", element.getPrescriber());
29611      }
29612      if (element.hasEncounter()) {
29613        composeReference("encounter", element.getEncounter());
29614      }
29615      if (element.hasReason()) {
29616        composeType("reason", element.getReason());
29617      }      if (element.hasDispense()) { 
29618        for (VisionPrescription.VisionPrescriptionDispenseComponent e : element.getDispense()) 
29619          composeVisionPrescriptionVisionPrescriptionDispenseComponent("dispense", e);
29620      }
29621      composeElementClose(element);
29622      xml.exit(FHIR_NS, name);
29623    }
29624  }
29625
29626  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponent(String name, VisionPrescription.VisionPrescriptionDispenseComponent element) throws IOException {
29627    if (element != null) {
29628      composeElementAttributes(element);
29629      xml.enter(FHIR_NS, name);
29630      composeBackboneElements(element);
29631      if (element.hasProduct()) {
29632        composeCoding("product", element.getProduct());
29633      }
29634      if (element.hasEyeElement())
29635        composeEnumeration("eye", element.getEyeElement(), new VisionPrescription.VisionEyesEnumFactory());
29636      if (element.hasSphereElement()) {
29637        composeDecimal("sphere", element.getSphereElement());
29638      }
29639      if (element.hasCylinderElement()) {
29640        composeDecimal("cylinder", element.getCylinderElement());
29641      }
29642      if (element.hasAxisElement()) {
29643        composeInteger("axis", element.getAxisElement());
29644      }
29645      if (element.hasPrismElement()) {
29646        composeDecimal("prism", element.getPrismElement());
29647      }
29648      if (element.hasBaseElement())
29649        composeEnumeration("base", element.getBaseElement(), new VisionPrescription.VisionBaseEnumFactory());
29650      if (element.hasAddElement()) {
29651        composeDecimal("add", element.getAddElement());
29652      }
29653      if (element.hasPowerElement()) {
29654        composeDecimal("power", element.getPowerElement());
29655      }
29656      if (element.hasBackCurveElement()) {
29657        composeDecimal("backCurve", element.getBackCurveElement());
29658      }
29659      if (element.hasDiameterElement()) {
29660        composeDecimal("diameter", element.getDiameterElement());
29661      }
29662      if (element.hasDuration()) {
29663        composeSimpleQuantity("duration", element.getDuration());
29664      }
29665      if (element.hasColorElement()) {
29666        composeString("color", element.getColorElement());
29667      }
29668      if (element.hasBrandElement()) {
29669        composeString("brand", element.getBrandElement());
29670      }
29671      if (element.hasNotesElement()) {
29672        composeString("notes", element.getNotesElement());
29673      }
29674      composeElementClose(element);
29675      xml.exit(FHIR_NS, name);
29676    }
29677  }
29678
29679  @Override
29680  protected void composeResource(Resource resource) throws IOException {
29681    if (resource instanceof Parameters)
29682      composeParameters("Parameters", (Parameters)resource);
29683    else if (resource instanceof Account)
29684      composeAccount("Account", (Account)resource);
29685    else if (resource instanceof AllergyIntolerance)
29686      composeAllergyIntolerance("AllergyIntolerance", (AllergyIntolerance)resource);
29687    else if (resource instanceof Appointment)
29688      composeAppointment("Appointment", (Appointment)resource);
29689    else if (resource instanceof AppointmentResponse)
29690      composeAppointmentResponse("AppointmentResponse", (AppointmentResponse)resource);
29691    else if (resource instanceof AuditEvent)
29692      composeAuditEvent("AuditEvent", (AuditEvent)resource);
29693    else if (resource instanceof Basic)
29694      composeBasic("Basic", (Basic)resource);
29695    else if (resource instanceof Binary)
29696      composeBinary("Binary", (Binary)resource);
29697    else if (resource instanceof BodySite)
29698      composeBodySite("BodySite", (BodySite)resource);
29699    else if (resource instanceof Bundle)
29700      composeBundle("Bundle", (Bundle)resource);
29701    else if (resource instanceof CarePlan)
29702      composeCarePlan("CarePlan", (CarePlan)resource);
29703    else if (resource instanceof CareTeam)
29704      composeCareTeam("CareTeam", (CareTeam)resource);
29705    else if (resource instanceof Claim)
29706      composeClaim("Claim", (Claim)resource);
29707    else if (resource instanceof ClaimResponse)
29708      composeClaimResponse("ClaimResponse", (ClaimResponse)resource);
29709    else if (resource instanceof ClinicalImpression)
29710      composeClinicalImpression("ClinicalImpression", (ClinicalImpression)resource);
29711    else if (resource instanceof CodeSystem)
29712      composeCodeSystem("CodeSystem", (CodeSystem)resource);
29713    else if (resource instanceof Communication)
29714      composeCommunication("Communication", (Communication)resource);
29715    else if (resource instanceof CommunicationRequest)
29716      composeCommunicationRequest("CommunicationRequest", (CommunicationRequest)resource);
29717    else if (resource instanceof CompartmentDefinition)
29718      composeCompartmentDefinition("CompartmentDefinition", (CompartmentDefinition)resource);
29719    else if (resource instanceof Composition)
29720      composeComposition("Composition", (Composition)resource);
29721    else if (resource instanceof ConceptMap)
29722      composeConceptMap("ConceptMap", (ConceptMap)resource);
29723    else if (resource instanceof Condition)
29724      composeCondition("Condition", (Condition)resource);
29725    else if (resource instanceof Conformance)
29726      composeConformance("Conformance", (Conformance)resource);
29727    else if (resource instanceof Contract)
29728      composeContract("Contract", (Contract)resource);
29729    else if (resource instanceof Coverage)
29730      composeCoverage("Coverage", (Coverage)resource);
29731    else if (resource instanceof DataElement)
29732      composeDataElement("DataElement", (DataElement)resource);
29733    else if (resource instanceof DecisionSupportRule)
29734      composeDecisionSupportRule("DecisionSupportRule", (DecisionSupportRule)resource);
29735    else if (resource instanceof DecisionSupportServiceModule)
29736      composeDecisionSupportServiceModule("DecisionSupportServiceModule", (DecisionSupportServiceModule)resource);
29737    else if (resource instanceof DetectedIssue)
29738      composeDetectedIssue("DetectedIssue", (DetectedIssue)resource);
29739    else if (resource instanceof Device)
29740      composeDevice("Device", (Device)resource);
29741    else if (resource instanceof DeviceComponent)
29742      composeDeviceComponent("DeviceComponent", (DeviceComponent)resource);
29743    else if (resource instanceof DeviceMetric)
29744      composeDeviceMetric("DeviceMetric", (DeviceMetric)resource);
29745    else if (resource instanceof DeviceUseRequest)
29746      composeDeviceUseRequest("DeviceUseRequest", (DeviceUseRequest)resource);
29747    else if (resource instanceof DeviceUseStatement)
29748      composeDeviceUseStatement("DeviceUseStatement", (DeviceUseStatement)resource);
29749    else if (resource instanceof DiagnosticOrder)
29750      composeDiagnosticOrder("DiagnosticOrder", (DiagnosticOrder)resource);
29751    else if (resource instanceof DiagnosticReport)
29752      composeDiagnosticReport("DiagnosticReport", (DiagnosticReport)resource);
29753    else if (resource instanceof DocumentManifest)
29754      composeDocumentManifest("DocumentManifest", (DocumentManifest)resource);
29755    else if (resource instanceof DocumentReference)
29756      composeDocumentReference("DocumentReference", (DocumentReference)resource);
29757    else if (resource instanceof EligibilityRequest)
29758      composeEligibilityRequest("EligibilityRequest", (EligibilityRequest)resource);
29759    else if (resource instanceof EligibilityResponse)
29760      composeEligibilityResponse("EligibilityResponse", (EligibilityResponse)resource);
29761    else if (resource instanceof Encounter)
29762      composeEncounter("Encounter", (Encounter)resource);
29763    else if (resource instanceof EnrollmentRequest)
29764      composeEnrollmentRequest("EnrollmentRequest", (EnrollmentRequest)resource);
29765    else if (resource instanceof EnrollmentResponse)
29766      composeEnrollmentResponse("EnrollmentResponse", (EnrollmentResponse)resource);
29767    else if (resource instanceof EpisodeOfCare)
29768      composeEpisodeOfCare("EpisodeOfCare", (EpisodeOfCare)resource);
29769    else if (resource instanceof ExpansionProfile)
29770      composeExpansionProfile("ExpansionProfile", (ExpansionProfile)resource);
29771    else if (resource instanceof ExplanationOfBenefit)
29772      composeExplanationOfBenefit("ExplanationOfBenefit", (ExplanationOfBenefit)resource);
29773    else if (resource instanceof FamilyMemberHistory)
29774      composeFamilyMemberHistory("FamilyMemberHistory", (FamilyMemberHistory)resource);
29775    else if (resource instanceof Flag)
29776      composeFlag("Flag", (Flag)resource);
29777    else if (resource instanceof Goal)
29778      composeGoal("Goal", (Goal)resource);
29779    else if (resource instanceof Group)
29780      composeGroup("Group", (Group)resource);
29781    else if (resource instanceof GuidanceResponse)
29782      composeGuidanceResponse("GuidanceResponse", (GuidanceResponse)resource);
29783    else if (resource instanceof HealthcareService)
29784      composeHealthcareService("HealthcareService", (HealthcareService)resource);
29785    else if (resource instanceof ImagingExcerpt)
29786      composeImagingExcerpt("ImagingExcerpt", (ImagingExcerpt)resource);
29787    else if (resource instanceof ImagingObjectSelection)
29788      composeImagingObjectSelection("ImagingObjectSelection", (ImagingObjectSelection)resource);
29789    else if (resource instanceof ImagingStudy)
29790      composeImagingStudy("ImagingStudy", (ImagingStudy)resource);
29791    else if (resource instanceof Immunization)
29792      composeImmunization("Immunization", (Immunization)resource);
29793    else if (resource instanceof ImmunizationRecommendation)
29794      composeImmunizationRecommendation("ImmunizationRecommendation", (ImmunizationRecommendation)resource);
29795    else if (resource instanceof ImplementationGuide)
29796      composeImplementationGuide("ImplementationGuide", (ImplementationGuide)resource);
29797    else if (resource instanceof Library)
29798      composeLibrary("Library", (Library)resource);
29799    else if (resource instanceof Linkage)
29800      composeLinkage("Linkage", (Linkage)resource);
29801    else if (resource instanceof ListResource)
29802      composeListResource("List", (ListResource)resource);
29803    else if (resource instanceof Location)
29804      composeLocation("Location", (Location)resource);
29805    else if (resource instanceof Measure)
29806      composeMeasure("Measure", (Measure)resource);
29807    else if (resource instanceof MeasureReport)
29808      composeMeasureReport("MeasureReport", (MeasureReport)resource);
29809    else if (resource instanceof Media)
29810      composeMedia("Media", (Media)resource);
29811    else if (resource instanceof Medication)
29812      composeMedication("Medication", (Medication)resource);
29813    else if (resource instanceof MedicationAdministration)
29814      composeMedicationAdministration("MedicationAdministration", (MedicationAdministration)resource);
29815    else if (resource instanceof MedicationDispense)
29816      composeMedicationDispense("MedicationDispense", (MedicationDispense)resource);
29817    else if (resource instanceof MedicationOrder)
29818      composeMedicationOrder("MedicationOrder", (MedicationOrder)resource);
29819    else if (resource instanceof MedicationStatement)
29820      composeMedicationStatement("MedicationStatement", (MedicationStatement)resource);
29821    else if (resource instanceof MessageHeader)
29822      composeMessageHeader("MessageHeader", (MessageHeader)resource);
29823    else if (resource instanceof ModuleDefinition)
29824      composeModuleDefinition("ModuleDefinition", (ModuleDefinition)resource);
29825    else if (resource instanceof NamingSystem)
29826      composeNamingSystem("NamingSystem", (NamingSystem)resource);
29827    else if (resource instanceof NutritionOrder)
29828      composeNutritionOrder("NutritionOrder", (NutritionOrder)resource);
29829    else if (resource instanceof Observation)
29830      composeObservation("Observation", (Observation)resource);
29831    else if (resource instanceof OperationDefinition)
29832      composeOperationDefinition("OperationDefinition", (OperationDefinition)resource);
29833    else if (resource instanceof OperationOutcome)
29834      composeOperationOutcome("OperationOutcome", (OperationOutcome)resource);
29835    else if (resource instanceof Order)
29836      composeOrder("Order", (Order)resource);
29837    else if (resource instanceof OrderResponse)
29838      composeOrderResponse("OrderResponse", (OrderResponse)resource);
29839    else if (resource instanceof OrderSet)
29840      composeOrderSet("OrderSet", (OrderSet)resource);
29841    else if (resource instanceof Organization)
29842      composeOrganization("Organization", (Organization)resource);
29843    else if (resource instanceof Patient)
29844      composePatient("Patient", (Patient)resource);
29845    else if (resource instanceof PaymentNotice)
29846      composePaymentNotice("PaymentNotice", (PaymentNotice)resource);
29847    else if (resource instanceof PaymentReconciliation)
29848      composePaymentReconciliation("PaymentReconciliation", (PaymentReconciliation)resource);
29849    else if (resource instanceof Person)
29850      composePerson("Person", (Person)resource);
29851    else if (resource instanceof Practitioner)
29852      composePractitioner("Practitioner", (Practitioner)resource);
29853    else if (resource instanceof PractitionerRole)
29854      composePractitionerRole("PractitionerRole", (PractitionerRole)resource);
29855    else if (resource instanceof Procedure)
29856      composeProcedure("Procedure", (Procedure)resource);
29857    else if (resource instanceof ProcedureRequest)
29858      composeProcedureRequest("ProcedureRequest", (ProcedureRequest)resource);
29859    else if (resource instanceof ProcessRequest)
29860      composeProcessRequest("ProcessRequest", (ProcessRequest)resource);
29861    else if (resource instanceof ProcessResponse)
29862      composeProcessResponse("ProcessResponse", (ProcessResponse)resource);
29863    else if (resource instanceof Protocol)
29864      composeProtocol("Protocol", (Protocol)resource);
29865    else if (resource instanceof Provenance)
29866      composeProvenance("Provenance", (Provenance)resource);
29867    else if (resource instanceof Questionnaire)
29868      composeQuestionnaire("Questionnaire", (Questionnaire)resource);
29869    else if (resource instanceof QuestionnaireResponse)
29870      composeQuestionnaireResponse("QuestionnaireResponse", (QuestionnaireResponse)resource);
29871    else if (resource instanceof ReferralRequest)
29872      composeReferralRequest("ReferralRequest", (ReferralRequest)resource);
29873    else if (resource instanceof RelatedPerson)
29874      composeRelatedPerson("RelatedPerson", (RelatedPerson)resource);
29875    else if (resource instanceof RiskAssessment)
29876      composeRiskAssessment("RiskAssessment", (RiskAssessment)resource);
29877    else if (resource instanceof Schedule)
29878      composeSchedule("Schedule", (Schedule)resource);
29879    else if (resource instanceof SearchParameter)
29880      composeSearchParameter("SearchParameter", (SearchParameter)resource);
29881    else if (resource instanceof Sequence)
29882      composeSequence("Sequence", (Sequence)resource);
29883    else if (resource instanceof Slot)
29884      composeSlot("Slot", (Slot)resource);
29885    else if (resource instanceof Specimen)
29886      composeSpecimen("Specimen", (Specimen)resource);
29887    else if (resource instanceof StructureDefinition)
29888      composeStructureDefinition("StructureDefinition", (StructureDefinition)resource);
29889    else if (resource instanceof StructureMap)
29890      composeStructureMap("StructureMap", (StructureMap)resource);
29891    else if (resource instanceof Subscription)
29892      composeSubscription("Subscription", (Subscription)resource);
29893    else if (resource instanceof Substance)
29894      composeSubstance("Substance", (Substance)resource);
29895    else if (resource instanceof SupplyDelivery)
29896      composeSupplyDelivery("SupplyDelivery", (SupplyDelivery)resource);
29897    else if (resource instanceof SupplyRequest)
29898      composeSupplyRequest("SupplyRequest", (SupplyRequest)resource);
29899    else if (resource instanceof Task)
29900      composeTask("Task", (Task)resource);
29901    else if (resource instanceof TestScript)
29902      composeTestScript("TestScript", (TestScript)resource);
29903    else if (resource instanceof ValueSet)
29904      composeValueSet("ValueSet", (ValueSet)resource);
29905    else if (resource instanceof VisionPrescription)
29906      composeVisionPrescription("VisionPrescription", (VisionPrescription)resource);
29907    else if (resource instanceof Binary)
29908      composeBinary("Binary", (Binary)resource);
29909    else
29910      throw new Error("Unhandled resource type "+resource.getClass().getName());
29911  }
29912
29913  protected void composeResource(String name, Resource resource) throws IOException {
29914    if (resource instanceof Parameters)
29915      composeParameters(name, (Parameters)resource);
29916    else if (resource instanceof Account)
29917      composeAccount(name, (Account)resource);
29918    else if (resource instanceof AllergyIntolerance)
29919      composeAllergyIntolerance(name, (AllergyIntolerance)resource);
29920    else if (resource instanceof Appointment)
29921      composeAppointment(name, (Appointment)resource);
29922    else if (resource instanceof AppointmentResponse)
29923      composeAppointmentResponse(name, (AppointmentResponse)resource);
29924    else if (resource instanceof AuditEvent)
29925      composeAuditEvent(name, (AuditEvent)resource);
29926    else if (resource instanceof Basic)
29927      composeBasic(name, (Basic)resource);
29928    else if (resource instanceof Binary)
29929      composeBinary(name, (Binary)resource);
29930    else if (resource instanceof BodySite)
29931      composeBodySite(name, (BodySite)resource);
29932    else if (resource instanceof Bundle)
29933      composeBundle(name, (Bundle)resource);
29934    else if (resource instanceof CarePlan)
29935      composeCarePlan(name, (CarePlan)resource);
29936    else if (resource instanceof CareTeam)
29937      composeCareTeam(name, (CareTeam)resource);
29938    else if (resource instanceof Claim)
29939      composeClaim(name, (Claim)resource);
29940    else if (resource instanceof ClaimResponse)
29941      composeClaimResponse(name, (ClaimResponse)resource);
29942    else if (resource instanceof ClinicalImpression)
29943      composeClinicalImpression(name, (ClinicalImpression)resource);
29944    else if (resource instanceof CodeSystem)
29945      composeCodeSystem(name, (CodeSystem)resource);
29946    else if (resource instanceof Communication)
29947      composeCommunication(name, (Communication)resource);
29948    else if (resource instanceof CommunicationRequest)
29949      composeCommunicationRequest(name, (CommunicationRequest)resource);
29950    else if (resource instanceof CompartmentDefinition)
29951      composeCompartmentDefinition(name, (CompartmentDefinition)resource);
29952    else if (resource instanceof Composition)
29953      composeComposition(name, (Composition)resource);
29954    else if (resource instanceof ConceptMap)
29955      composeConceptMap(name, (ConceptMap)resource);
29956    else if (resource instanceof Condition)
29957      composeCondition(name, (Condition)resource);
29958    else if (resource instanceof Conformance)
29959      composeConformance(name, (Conformance)resource);
29960    else if (resource instanceof Contract)
29961      composeContract(name, (Contract)resource);
29962    else if (resource instanceof Coverage)
29963      composeCoverage(name, (Coverage)resource);
29964    else if (resource instanceof DataElement)
29965      composeDataElement(name, (DataElement)resource);
29966    else if (resource instanceof DecisionSupportRule)
29967      composeDecisionSupportRule(name, (DecisionSupportRule)resource);
29968    else if (resource instanceof DecisionSupportServiceModule)
29969      composeDecisionSupportServiceModule(name, (DecisionSupportServiceModule)resource);
29970    else if (resource instanceof DetectedIssue)
29971      composeDetectedIssue(name, (DetectedIssue)resource);
29972    else if (resource instanceof Device)
29973      composeDevice(name, (Device)resource);
29974    else if (resource instanceof DeviceComponent)
29975      composeDeviceComponent(name, (DeviceComponent)resource);
29976    else if (resource instanceof DeviceMetric)
29977      composeDeviceMetric(name, (DeviceMetric)resource);
29978    else if (resource instanceof DeviceUseRequest)
29979      composeDeviceUseRequest(name, (DeviceUseRequest)resource);
29980    else if (resource instanceof DeviceUseStatement)
29981      composeDeviceUseStatement(name, (DeviceUseStatement)resource);
29982    else if (resource instanceof DiagnosticOrder)
29983      composeDiagnosticOrder(name, (DiagnosticOrder)resource);
29984    else if (resource instanceof DiagnosticReport)
29985      composeDiagnosticReport(name, (DiagnosticReport)resource);
29986    else if (resource instanceof DocumentManifest)
29987      composeDocumentManifest(name, (DocumentManifest)resource);
29988    else if (resource instanceof DocumentReference)
29989      composeDocumentReference(name, (DocumentReference)resource);
29990    else if (resource instanceof EligibilityRequest)
29991      composeEligibilityRequest(name, (EligibilityRequest)resource);
29992    else if (resource instanceof EligibilityResponse)
29993      composeEligibilityResponse(name, (EligibilityResponse)resource);
29994    else if (resource instanceof Encounter)
29995      composeEncounter(name, (Encounter)resource);
29996    else if (resource instanceof EnrollmentRequest)
29997      composeEnrollmentRequest(name, (EnrollmentRequest)resource);
29998    else if (resource instanceof EnrollmentResponse)
29999      composeEnrollmentResponse(name, (EnrollmentResponse)resource);
30000    else if (resource instanceof EpisodeOfCare)
30001      composeEpisodeOfCare(name, (EpisodeOfCare)resource);
30002    else if (resource instanceof ExpansionProfile)
30003      composeExpansionProfile(name, (ExpansionProfile)resource);
30004    else if (resource instanceof ExplanationOfBenefit)
30005      composeExplanationOfBenefit(name, (ExplanationOfBenefit)resource);
30006    else if (resource instanceof FamilyMemberHistory)
30007      composeFamilyMemberHistory(name, (FamilyMemberHistory)resource);
30008    else if (resource instanceof Flag)
30009      composeFlag(name, (Flag)resource);
30010    else if (resource instanceof Goal)
30011      composeGoal(name, (Goal)resource);
30012    else if (resource instanceof Group)
30013      composeGroup(name, (Group)resource);
30014    else if (resource instanceof GuidanceResponse)
30015      composeGuidanceResponse(name, (GuidanceResponse)resource);
30016    else if (resource instanceof HealthcareService)
30017      composeHealthcareService(name, (HealthcareService)resource);
30018    else if (resource instanceof ImagingExcerpt)
30019      composeImagingExcerpt(name, (ImagingExcerpt)resource);
30020    else if (resource instanceof ImagingObjectSelection)
30021      composeImagingObjectSelection(name, (ImagingObjectSelection)resource);
30022    else if (resource instanceof ImagingStudy)
30023      composeImagingStudy(name, (ImagingStudy)resource);
30024    else if (resource instanceof Immunization)
30025      composeImmunization(name, (Immunization)resource);
30026    else if (resource instanceof ImmunizationRecommendation)
30027      composeImmunizationRecommendation(name, (ImmunizationRecommendation)resource);
30028    else if (resource instanceof ImplementationGuide)
30029      composeImplementationGuide(name, (ImplementationGuide)resource);
30030    else if (resource instanceof Library)
30031      composeLibrary(name, (Library)resource);
30032    else if (resource instanceof Linkage)
30033      composeLinkage(name, (Linkage)resource);
30034    else if (resource instanceof ListResource)
30035      composeListResource(name, (ListResource)resource);
30036    else if (resource instanceof Location)
30037      composeLocation(name, (Location)resource);
30038    else if (resource instanceof Measure)
30039      composeMeasure(name, (Measure)resource);
30040    else if (resource instanceof MeasureReport)
30041      composeMeasureReport(name, (MeasureReport)resource);
30042    else if (resource instanceof Media)
30043      composeMedia(name, (Media)resource);
30044    else if (resource instanceof Medication)
30045      composeMedication(name, (Medication)resource);
30046    else if (resource instanceof MedicationAdministration)
30047      composeMedicationAdministration(name, (MedicationAdministration)resource);
30048    else if (resource instanceof MedicationDispense)
30049      composeMedicationDispense(name, (MedicationDispense)resource);
30050    else if (resource instanceof MedicationOrder)
30051      composeMedicationOrder(name, (MedicationOrder)resource);
30052    else if (resource instanceof MedicationStatement)
30053      composeMedicationStatement(name, (MedicationStatement)resource);
30054    else if (resource instanceof MessageHeader)
30055      composeMessageHeader(name, (MessageHeader)resource);
30056    else if (resource instanceof ModuleDefinition)
30057      composeModuleDefinition(name, (ModuleDefinition)resource);
30058    else if (resource instanceof NamingSystem)
30059      composeNamingSystem(name, (NamingSystem)resource);
30060    else if (resource instanceof NutritionOrder)
30061      composeNutritionOrder(name, (NutritionOrder)resource);
30062    else if (resource instanceof Observation)
30063      composeObservation(name, (Observation)resource);
30064    else if (resource instanceof OperationDefinition)
30065      composeOperationDefinition(name, (OperationDefinition)resource);
30066    else if (resource instanceof OperationOutcome)
30067      composeOperationOutcome(name, (OperationOutcome)resource);
30068    else if (resource instanceof Order)
30069      composeOrder(name, (Order)resource);
30070    else if (resource instanceof OrderResponse)
30071      composeOrderResponse(name, (OrderResponse)resource);
30072    else if (resource instanceof OrderSet)
30073      composeOrderSet(name, (OrderSet)resource);
30074    else if (resource instanceof Organization)
30075      composeOrganization(name, (Organization)resource);
30076    else if (resource instanceof Patient)
30077      composePatient(name, (Patient)resource);
30078    else if (resource instanceof PaymentNotice)
30079      composePaymentNotice(name, (PaymentNotice)resource);
30080    else if (resource instanceof PaymentReconciliation)
30081      composePaymentReconciliation(name, (PaymentReconciliation)resource);
30082    else if (resource instanceof Person)
30083      composePerson(name, (Person)resource);
30084    else if (resource instanceof Practitioner)
30085      composePractitioner(name, (Practitioner)resource);
30086    else if (resource instanceof PractitionerRole)
30087      composePractitionerRole(name, (PractitionerRole)resource);
30088    else if (resource instanceof Procedure)
30089      composeProcedure(name, (Procedure)resource);
30090    else if (resource instanceof ProcedureRequest)
30091      composeProcedureRequest(name, (ProcedureRequest)resource);
30092    else if (resource instanceof ProcessRequest)
30093      composeProcessRequest(name, (ProcessRequest)resource);
30094    else if (resource instanceof ProcessResponse)
30095      composeProcessResponse(name, (ProcessResponse)resource);
30096    else if (resource instanceof Protocol)
30097      composeProtocol(name, (Protocol)resource);
30098    else if (resource instanceof Provenance)
30099      composeProvenance(name, (Provenance)resource);
30100    else if (resource instanceof Questionnaire)
30101      composeQuestionnaire(name, (Questionnaire)resource);
30102    else if (resource instanceof QuestionnaireResponse)
30103      composeQuestionnaireResponse(name, (QuestionnaireResponse)resource);
30104    else if (resource instanceof ReferralRequest)
30105      composeReferralRequest(name, (ReferralRequest)resource);
30106    else if (resource instanceof RelatedPerson)
30107      composeRelatedPerson(name, (RelatedPerson)resource);
30108    else if (resource instanceof RiskAssessment)
30109      composeRiskAssessment(name, (RiskAssessment)resource);
30110    else if (resource instanceof Schedule)
30111      composeSchedule(name, (Schedule)resource);
30112    else if (resource instanceof SearchParameter)
30113      composeSearchParameter(name, (SearchParameter)resource);
30114    else if (resource instanceof Sequence)
30115      composeSequence(name, (Sequence)resource);
30116    else if (resource instanceof Slot)
30117      composeSlot(name, (Slot)resource);
30118    else if (resource instanceof Specimen)
30119      composeSpecimen(name, (Specimen)resource);
30120    else if (resource instanceof StructureDefinition)
30121      composeStructureDefinition(name, (StructureDefinition)resource);
30122    else if (resource instanceof StructureMap)
30123      composeStructureMap(name, (StructureMap)resource);
30124    else if (resource instanceof Subscription)
30125      composeSubscription(name, (Subscription)resource);
30126    else if (resource instanceof Substance)
30127      composeSubstance(name, (Substance)resource);
30128    else if (resource instanceof SupplyDelivery)
30129      composeSupplyDelivery(name, (SupplyDelivery)resource);
30130    else if (resource instanceof SupplyRequest)
30131      composeSupplyRequest(name, (SupplyRequest)resource);
30132    else if (resource instanceof Task)
30133      composeTask(name, (Task)resource);
30134    else if (resource instanceof TestScript)
30135      composeTestScript(name, (TestScript)resource);
30136    else if (resource instanceof ValueSet)
30137      composeValueSet(name, (ValueSet)resource);
30138    else if (resource instanceof VisionPrescription)
30139      composeVisionPrescription(name, (VisionPrescription)resource);
30140    else if (resource instanceof Binary)
30141      composeBinary(name, (Binary)resource);
30142    else
30143      throw new Error("Unhandled resource type "+resource.getClass().getName());
30144  }
30145
30146  protected void composeType(String prefix, Type type) throws IOException {
30147    if (type == null)
30148      ;
30149    else if (type instanceof Age)
30150       composeAge(prefix+"Age", (Age) type);
30151    else if (type instanceof Count)
30152       composeCount(prefix+"Count", (Count) type);
30153    else if (type instanceof Money)
30154       composeMoney(prefix+"Money", (Money) type);
30155    else if (type instanceof Distance)
30156       composeDistance(prefix+"Distance", (Distance) type);
30157    else if (type instanceof Duration)
30158       composeDuration(prefix+"Duration", (Duration) type);
30159    else if (type instanceof SimpleQuantity)
30160       composeSimpleQuantity(prefix+"SimpleQuantity", (SimpleQuantity) type);
30161    else if (type instanceof Period)
30162       composePeriod(prefix+"Period", (Period) type);
30163    else if (type instanceof Coding)
30164       composeCoding(prefix+"Coding", (Coding) type);
30165    else if (type instanceof Range)
30166       composeRange(prefix+"Range", (Range) type);
30167    else if (type instanceof Quantity)
30168       composeQuantity(prefix+"Quantity", (Quantity) type);
30169    else if (type instanceof Attachment)
30170       composeAttachment(prefix+"Attachment", (Attachment) type);
30171    else if (type instanceof Ratio)
30172       composeRatio(prefix+"Ratio", (Ratio) type);
30173    else if (type instanceof Annotation)
30174       composeAnnotation(prefix+"Annotation", (Annotation) type);
30175    else if (type instanceof SampledData)
30176       composeSampledData(prefix+"SampledData", (SampledData) type);
30177    else if (type instanceof Reference)
30178       composeReference(prefix+"Reference", (Reference) type);
30179    else if (type instanceof CodeableConcept)
30180       composeCodeableConcept(prefix+"CodeableConcept", (CodeableConcept) type);
30181    else if (type instanceof Identifier)
30182       composeIdentifier(prefix+"Identifier", (Identifier) type);
30183    else if (type instanceof Signature)
30184       composeSignature(prefix+"Signature", (Signature) type);
30185    else if (type instanceof TriggerDefinition)
30186       composeTriggerDefinition(prefix+"TriggerDefinition", (TriggerDefinition) type);
30187    else if (type instanceof ElementDefinition)
30188       composeElementDefinition(prefix+"ElementDefinition", (ElementDefinition) type);
30189    else if (type instanceof Timing)
30190       composeTiming(prefix+"Timing", (Timing) type);
30191    else if (type instanceof ModuleMetadata)
30192       composeModuleMetadata(prefix+"ModuleMetadata", (ModuleMetadata) type);
30193    else if (type instanceof ActionDefinition)
30194       composeActionDefinition(prefix+"ActionDefinition", (ActionDefinition) type);
30195    else if (type instanceof Address)
30196       composeAddress(prefix+"Address", (Address) type);
30197    else if (type instanceof HumanName)
30198       composeHumanName(prefix+"HumanName", (HumanName) type);
30199    else if (type instanceof DataRequirement)
30200       composeDataRequirement(prefix+"DataRequirement", (DataRequirement) type);
30201    else if (type instanceof Meta)
30202       composeMeta(prefix+"Meta", (Meta) type);
30203    else if (type instanceof ParameterDefinition)
30204       composeParameterDefinition(prefix+"ParameterDefinition", (ParameterDefinition) type);
30205    else if (type instanceof ContactPoint)
30206       composeContactPoint(prefix+"ContactPoint", (ContactPoint) type);
30207    else if (type instanceof MarkdownType)
30208       composeMarkdown(prefix+"Markdown", (MarkdownType) type);
30209    else if (type instanceof UnsignedIntType)
30210       composeUnsignedInt(prefix+"UnsignedInt", (UnsignedIntType) type);
30211    else if (type instanceof CodeType)
30212       composeCode(prefix+"Code", (CodeType) type);
30213    else if (type instanceof IdType)
30214       composeId(prefix+"Id", (IdType) type);
30215    else if (type instanceof OidType)
30216       composeOid(prefix+"Oid", (OidType) type);
30217    else if (type instanceof PositiveIntType)
30218       composePositiveInt(prefix+"PositiveInt", (PositiveIntType) type);
30219    else if (type instanceof UuidType)
30220       composeUuid(prefix+"Uuid", (UuidType) type);
30221    else if (type instanceof IntegerType)
30222       composeInteger(prefix+"Integer", (IntegerType) type);
30223    else if (type instanceof DateTimeType)
30224       composeDateTime(prefix+"DateTime", (DateTimeType) type);
30225    else if (type instanceof DateType)
30226       composeDate(prefix+"Date", (DateType) type);
30227    else if (type instanceof DecimalType)
30228       composeDecimal(prefix+"Decimal", (DecimalType) type);
30229    else if (type instanceof UriType)
30230       composeUri(prefix+"Uri", (UriType) type);
30231    else if (type instanceof Base64BinaryType)
30232       composeBase64Binary(prefix+"Base64Binary", (Base64BinaryType) type);
30233    else if (type instanceof TimeType)
30234       composeTime(prefix+"Time", (TimeType) type);
30235    else if (type instanceof StringType)
30236       composeString(prefix+"String", (StringType) type);
30237    else if (type instanceof BooleanType)
30238       composeBoolean(prefix+"Boolean", (BooleanType) type);
30239    else if (type instanceof InstantType)
30240       composeInstant(prefix+"Instant", (InstantType) type);
30241    else
30242      throw new Error("Unhandled type");
30243  }
30244
30245}