001package org.hl7.fhir.dstu2.formats;
002
003import java.io.IOException;
004
005/*
006  Copyright (c) 2011+, HL7, Inc.
007  All rights reserved.
008  
009  Redistribution and use in source and binary forms, with or without modification, 
010  are permitted provided that the following conditions are met:
011  
012   * Redistributions of source code must retain the above copyright notice, this 
013     list of conditions and the following disclaimer.
014   * Redistributions in binary form must reproduce the above copyright notice, 
015     this list of conditions and the following disclaimer in the documentation 
016     and/or other materials provided with the distribution.
017   * Neither the name of HL7 nor the names of its contributors may be used to 
018     endorse or promote products derived from this software without specific 
019     prior written permission.
020  
021  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
022  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
023  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
024  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
025  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
026  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
027  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
028  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
029  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
030  POSSIBILITY OF SUCH DAMAGE.
031  
032*/
033
034// Generated on Wed, Jul 13, 2016 05:32+1000 for FHIR v1.0.2
035import org.hl7.fhir.dstu2.model.*;
036import org.hl7.fhir.exceptions.FHIRFormatError;
037import org.hl7.fhir.utilities.Utilities;
038import org.xmlpull.v1.XmlPullParser;
039import org.xmlpull.v1.XmlPullParserException;
040
041public class XmlParser extends XmlParserBase {
042
043  public XmlParser() {
044    super();
045  }
046
047  public XmlParser(boolean allowUnknownContent) {
048    super();
049    setAllowUnknownContent(allowUnknownContent);
050  }
051
052  protected boolean parseElementContent(int eventType, XmlPullParser xpp, Element res)
053      throws XmlPullParserException, IOException, FHIRFormatError {
054    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension"))
055      res.getExtension().add(parseExtension(xpp));
056    else
057      return false;
058
059    return true;
060  }
061
062  protected boolean parseBackboneContent(int eventType, XmlPullParser xpp, BackboneElement res)
063      throws XmlPullParserException, IOException, FHIRFormatError {
064    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension"))
065      res.getModifierExtension().add(parseExtension(xpp));
066    else
067      return parseElementContent(eventType, xpp, res);
068
069    return true;
070  }
071
072  @SuppressWarnings("unchecked")
073  protected <E extends Enum<E>> Enumeration<E> parseEnumeration(XmlPullParser xpp, E item, EnumFactory e)
074      throws XmlPullParserException, IOException, FHIRFormatError {
075    Enumeration<E> res = new Enumeration<E>(e);
076    parseElementAttributes(xpp, res);
077    res.setValue((E) e.fromCode(xpp.getAttributeValue(null, "value")));
078    next(xpp);
079    int eventType = nextNoWhitespace(xpp);
080    while (eventType != XmlPullParser.END_TAG) {
081      if (!parseElementContent(eventType, xpp, res))
082        unknownContent(xpp);
083      eventType = nextNoWhitespace(xpp);
084    }
085    next(xpp);
086    parseElementClose(res);
087    return res;
088  }
089
090  protected DateType parseDate(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
091    DateType res = new DateType(xpp.getAttributeValue(null, "value"));
092    parseElementAttributes(xpp, res);
093    next(xpp);
094    int eventType = nextNoWhitespace(xpp);
095    while (eventType != XmlPullParser.END_TAG) {
096      if (!parseElementContent(eventType, xpp, res))
097        unknownContent(xpp);
098      eventType = nextNoWhitespace(xpp);
099    }
100    next(xpp);
101    parseElementClose(res);
102    return res;
103  }
104
105  protected DateTimeType parseDateTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
106    DateTimeType res = new DateTimeType(xpp.getAttributeValue(null, "value"));
107    parseElementAttributes(xpp, res);
108    next(xpp);
109    int eventType = nextNoWhitespace(xpp);
110    while (eventType != XmlPullParser.END_TAG) {
111      if (!parseElementContent(eventType, xpp, res))
112        unknownContent(xpp);
113      eventType = nextNoWhitespace(xpp);
114    }
115    next(xpp);
116    parseElementClose(res);
117    return res;
118  }
119
120  protected CodeType parseCode(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
121    CodeType res = new CodeType(xpp.getAttributeValue(null, "value"));
122    parseElementAttributes(xpp, res);
123    next(xpp);
124    int eventType = nextNoWhitespace(xpp);
125    while (eventType != XmlPullParser.END_TAG) {
126      if (!parseElementContent(eventType, xpp, res))
127        unknownContent(xpp);
128      eventType = nextNoWhitespace(xpp);
129    }
130    next(xpp);
131    parseElementClose(res);
132    return res;
133  }
134
135  protected StringType parseString(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
136    StringType res = new StringType(xpp.getAttributeValue(null, "value"));
137    parseElementAttributes(xpp, res);
138    next(xpp);
139    int eventType = nextNoWhitespace(xpp);
140    while (eventType != XmlPullParser.END_TAG) {
141      if (!parseElementContent(eventType, xpp, res))
142        unknownContent(xpp);
143      eventType = nextNoWhitespace(xpp);
144    }
145    next(xpp);
146    parseElementClose(res);
147    return res;
148  }
149
150  protected IntegerType parseInteger(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
151    IntegerType res = new IntegerType(xpp.getAttributeValue(null, "value"));
152    parseElementAttributes(xpp, res);
153    next(xpp);
154    int eventType = nextNoWhitespace(xpp);
155    while (eventType != XmlPullParser.END_TAG) {
156      if (!parseElementContent(eventType, xpp, res))
157        unknownContent(xpp);
158      eventType = nextNoWhitespace(xpp);
159    }
160    next(xpp);
161    parseElementClose(res);
162    return res;
163  }
164
165  protected OidType parseOid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
166    OidType res = new OidType(xpp.getAttributeValue(null, "value"));
167    parseElementAttributes(xpp, res);
168    next(xpp);
169    int eventType = nextNoWhitespace(xpp);
170    while (eventType != XmlPullParser.END_TAG) {
171      if (!parseElementContent(eventType, xpp, res))
172        unknownContent(xpp);
173      eventType = nextNoWhitespace(xpp);
174    }
175    next(xpp);
176    parseElementClose(res);
177    return res;
178  }
179
180  protected UriType parseUri(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
181    UriType res = new UriType(xpp.getAttributeValue(null, "value"));
182    parseElementAttributes(xpp, res);
183    next(xpp);
184    int eventType = nextNoWhitespace(xpp);
185    while (eventType != XmlPullParser.END_TAG) {
186      if (!parseElementContent(eventType, xpp, res))
187        unknownContent(xpp);
188      eventType = nextNoWhitespace(xpp);
189    }
190    next(xpp);
191    parseElementClose(res);
192    return res;
193  }
194
195  protected UuidType parseUuid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
196    UuidType res = new UuidType(xpp.getAttributeValue(null, "value"));
197    parseElementAttributes(xpp, res);
198    next(xpp);
199    int eventType = nextNoWhitespace(xpp);
200    while (eventType != XmlPullParser.END_TAG) {
201      if (!parseElementContent(eventType, xpp, res))
202        unknownContent(xpp);
203      eventType = nextNoWhitespace(xpp);
204    }
205    next(xpp);
206    parseElementClose(res);
207    return res;
208  }
209
210  protected InstantType parseInstant(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
211    InstantType res = new InstantType(xpp.getAttributeValue(null, "value"));
212    parseElementAttributes(xpp, res);
213    next(xpp);
214    int eventType = nextNoWhitespace(xpp);
215    while (eventType != XmlPullParser.END_TAG) {
216      if (!parseElementContent(eventType, xpp, res))
217        unknownContent(xpp);
218      eventType = nextNoWhitespace(xpp);
219    }
220    next(xpp);
221    parseElementClose(res);
222    return res;
223  }
224
225  protected BooleanType parseBoolean(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
226    BooleanType res = new BooleanType(xpp.getAttributeValue(null, "value"));
227    parseElementAttributes(xpp, res);
228    next(xpp);
229    int eventType = nextNoWhitespace(xpp);
230    while (eventType != XmlPullParser.END_TAG) {
231      if (!parseElementContent(eventType, xpp, res))
232        unknownContent(xpp);
233      eventType = nextNoWhitespace(xpp);
234    }
235    next(xpp);
236    parseElementClose(res);
237    return res;
238  }
239
240  protected Base64BinaryType parseBase64Binary(XmlPullParser xpp)
241      throws XmlPullParserException, IOException, FHIRFormatError {
242    Base64BinaryType res = new Base64BinaryType(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 UnsignedIntType parseUnsignedInt(XmlPullParser xpp)
257      throws XmlPullParserException, IOException, FHIRFormatError {
258    UnsignedIntType res = new UnsignedIntType(xpp.getAttributeValue(null, "value"));
259    parseElementAttributes(xpp, res);
260    next(xpp);
261    int eventType = nextNoWhitespace(xpp);
262    while (eventType != XmlPullParser.END_TAG) {
263      if (!parseElementContent(eventType, xpp, res))
264        unknownContent(xpp);
265      eventType = nextNoWhitespace(xpp);
266    }
267    next(xpp);
268    parseElementClose(res);
269    return res;
270  }
271
272  protected MarkdownType parseMarkdown(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
273    MarkdownType res = new MarkdownType(xpp.getAttributeValue(null, "value"));
274    parseElementAttributes(xpp, res);
275    next(xpp);
276    int eventType = nextNoWhitespace(xpp);
277    while (eventType != XmlPullParser.END_TAG) {
278      if (!parseElementContent(eventType, xpp, res))
279        unknownContent(xpp);
280      eventType = nextNoWhitespace(xpp);
281    }
282    next(xpp);
283    parseElementClose(res);
284    return res;
285  }
286
287  protected TimeType parseTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
288    TimeType res = new TimeType(xpp.getAttributeValue(null, "value"));
289    parseElementAttributes(xpp, res);
290    next(xpp);
291    int eventType = nextNoWhitespace(xpp);
292    while (eventType != XmlPullParser.END_TAG) {
293      if (!parseElementContent(eventType, xpp, res))
294        unknownContent(xpp);
295      eventType = nextNoWhitespace(xpp);
296    }
297    next(xpp);
298    parseElementClose(res);
299    return res;
300  }
301
302  protected IdType parseId(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
303    IdType res = new IdType(xpp.getAttributeValue(null, "value"));
304    parseElementAttributes(xpp, res);
305    next(xpp);
306    int eventType = nextNoWhitespace(xpp);
307    while (eventType != XmlPullParser.END_TAG) {
308      if (!parseElementContent(eventType, xpp, res))
309        unknownContent(xpp);
310      eventType = nextNoWhitespace(xpp);
311    }
312    next(xpp);
313    parseElementClose(res);
314    return res;
315  }
316
317  protected PositiveIntType parsePositiveInt(XmlPullParser xpp)
318      throws XmlPullParserException, IOException, FHIRFormatError {
319    PositiveIntType res = new PositiveIntType(xpp.getAttributeValue(null, "value"));
320    parseElementAttributes(xpp, res);
321    next(xpp);
322    int eventType = nextNoWhitespace(xpp);
323    while (eventType != XmlPullParser.END_TAG) {
324      if (!parseElementContent(eventType, xpp, res))
325        unknownContent(xpp);
326      eventType = nextNoWhitespace(xpp);
327    }
328    next(xpp);
329    parseElementClose(res);
330    return res;
331  }
332
333  protected DecimalType parseDecimal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
334    DecimalType res = new DecimalType(xpp.getAttributeValue(null, "value"));
335    parseElementAttributes(xpp, res);
336    next(xpp);
337    int eventType = nextNoWhitespace(xpp);
338    while (eventType != XmlPullParser.END_TAG) {
339      if (!parseElementContent(eventType, xpp, res))
340        unknownContent(xpp);
341      eventType = nextNoWhitespace(xpp);
342    }
343    next(xpp);
344    parseElementClose(res);
345    return res;
346  }
347
348  protected Extension parseExtension(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
349    Extension res = new Extension();
350    parseElementAttributes(xpp, res);
351    if (xpp.getAttributeValue(null, "url") != null)
352      res.setUrl(xpp.getAttributeValue(null, "url"));
353    next(xpp);
354    int eventType = nextNoWhitespace(xpp);
355    while (eventType != XmlPullParser.END_TAG) {
356      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
357        res.setValue(parseType("value", xpp));
358      } else if (!parseElementContent(eventType, xpp, res))
359        unknownContent(xpp);
360      eventType = nextNoWhitespace(xpp);
361    }
362    next(xpp);
363    parseElementClose(res);
364    return res;
365  }
366
367  protected Narrative parseNarrative(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
368    Narrative res = new Narrative();
369    parseElementAttributes(xpp, res);
370    next(xpp);
371    int eventType = nextNoWhitespace(xpp);
372    while (eventType != XmlPullParser.END_TAG) {
373      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
374        res.setStatusElement(
375            parseEnumeration(xpp, Narrative.NarrativeStatus.NULL, new Narrative.NarrativeStatusEnumFactory()));
376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("div")) {
377        res.setDiv(parseXhtml(xpp));
378      } else if (!parseElementContent(eventType, xpp, res))
379        unknownContent(xpp);
380      eventType = nextNoWhitespace(xpp);
381    }
382    next(xpp);
383    parseElementClose(res);
384    return res;
385  }
386
387  protected Identifier parseIdentifier(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
388    Identifier res = new Identifier();
389    parseTypeAttributes(xpp, res);
390    next(xpp);
391    int eventType = nextNoWhitespace(xpp);
392    while (eventType != XmlPullParser.END_TAG) {
393      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
394        res.setUseElement(
395            parseEnumeration(xpp, Identifier.IdentifierUse.NULL, new Identifier.IdentifierUseEnumFactory()));
396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
397        res.setType(parseCodeableConcept(xpp));
398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
399        res.setSystemElement(parseUri(xpp));
400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
401        res.setValueElement(parseString(xpp));
402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
403        res.setPeriod(parsePeriod(xpp));
404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assigner")) {
405        res.setAssigner(parseReference(xpp));
406      } else if (!parseElementContent(eventType, xpp, res))
407        unknownContent(xpp);
408      eventType = nextNoWhitespace(xpp);
409    }
410    next(xpp);
411    parseElementClose(res);
412    return res;
413  }
414
415  protected Coding parseCoding(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
416    Coding res = new Coding();
417    parseTypeAttributes(xpp, res);
418    next(xpp);
419    int eventType = nextNoWhitespace(xpp);
420    while (eventType != XmlPullParser.END_TAG) {
421      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
422        res.setSystemElement(parseUri(xpp));
423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
424        res.setVersionElement(parseString(xpp));
425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
426        res.setCodeElement(parseCode(xpp));
427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
428        res.setDisplayElement(parseString(xpp));
429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userSelected")) {
430        res.setUserSelectedElement(parseBoolean(xpp));
431      } else if (!parseElementContent(eventType, xpp, res))
432        unknownContent(xpp);
433      eventType = nextNoWhitespace(xpp);
434    }
435    next(xpp);
436    parseElementClose(res);
437    return res;
438  }
439
440  protected Reference parseReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
441    Reference res = new Reference();
442    parseTypeAttributes(xpp, res);
443    next(xpp);
444    int eventType = nextNoWhitespace(xpp);
445    while (eventType != XmlPullParser.END_TAG) {
446      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
447        res.setReferenceElement(parseString(xpp));
448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
449        res.setDisplayElement(parseString(xpp));
450      } else if (!parseElementContent(eventType, xpp, res))
451        unknownContent(xpp);
452      eventType = nextNoWhitespace(xpp);
453    }
454    next(xpp);
455    parseElementClose(res);
456    return res;
457  }
458
459  protected Signature parseSignature(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
460    Signature res = new Signature();
461    parseTypeAttributes(xpp, res);
462    next(xpp);
463    int eventType = nextNoWhitespace(xpp);
464    while (eventType != XmlPullParser.END_TAG) {
465      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
466        res.getType().add(parseCoding(xpp));
467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
468        res.setWhenElement(parseInstant(xpp));
469      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "who")) {
470        res.setWho(parseType("who", xpp));
471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
472        res.setContentTypeElement(parseCode(xpp));
473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("blob")) {
474        res.setBlobElement(parseBase64Binary(xpp));
475      } else if (!parseElementContent(eventType, xpp, res))
476        unknownContent(xpp);
477      eventType = nextNoWhitespace(xpp);
478    }
479    next(xpp);
480    parseElementClose(res);
481    return res;
482  }
483
484  protected SampledData parseSampledData(XmlPullParser xpp)
485      throws XmlPullParserException, IOException, FHIRFormatError {
486    SampledData res = new SampledData();
487    parseTypeAttributes(xpp, res);
488    next(xpp);
489    int eventType = nextNoWhitespace(xpp);
490    while (eventType != XmlPullParser.END_TAG) {
491      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
492        res.setOrigin(parseSimpleQuantity(xpp));
493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
494        res.setPeriodElement(parseDecimal(xpp));
495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
496        res.setFactorElement(parseDecimal(xpp));
497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowerLimit")) {
498        res.setLowerLimitElement(parseDecimal(xpp));
499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("upperLimit")) {
500        res.setUpperLimitElement(parseDecimal(xpp));
501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dimensions")) {
502        res.setDimensionsElement(parsePositiveInt(xpp));
503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
504        res.setDataElement(parseString(xpp));
505      } else if (!parseElementContent(eventType, xpp, res))
506        unknownContent(xpp);
507      eventType = nextNoWhitespace(xpp);
508    }
509    next(xpp);
510    parseElementClose(res);
511    return res;
512  }
513
514  protected Quantity parseQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
515    Quantity res = new Quantity();
516    parseTypeAttributes(xpp, res);
517    next(xpp);
518    int eventType = nextNoWhitespace(xpp);
519    while (eventType != XmlPullParser.END_TAG) {
520      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
521        res.setValueElement(parseDecimal(xpp));
522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
523        res.setComparatorElement(
524            parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
526        res.setUnitElement(parseString(xpp));
527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
528        res.setSystemElement(parseUri(xpp));
529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
530        res.setCodeElement(parseCode(xpp));
531      } else if (!parseElementContent(eventType, xpp, res))
532        unknownContent(xpp);
533      eventType = nextNoWhitespace(xpp);
534    }
535    next(xpp);
536    parseElementClose(res);
537    return res;
538  }
539
540  protected Period parsePeriod(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
541    Period res = new Period();
542    parseTypeAttributes(xpp, res);
543    next(xpp);
544    int eventType = nextNoWhitespace(xpp);
545    while (eventType != XmlPullParser.END_TAG) {
546      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
547        res.setStartElement(parseDateTime(xpp));
548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
549        res.setEndElement(parseDateTime(xpp));
550      } else if (!parseElementContent(eventType, xpp, res))
551        unknownContent(xpp);
552      eventType = nextNoWhitespace(xpp);
553    }
554    next(xpp);
555    parseElementClose(res);
556    return res;
557  }
558
559  protected Attachment parseAttachment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
560    Attachment res = new Attachment();
561    parseTypeAttributes(xpp, res);
562    next(xpp);
563    int eventType = nextNoWhitespace(xpp);
564    while (eventType != XmlPullParser.END_TAG) {
565      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
566        res.setContentTypeElement(parseCode(xpp));
567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
568        res.setLanguageElement(parseCode(xpp));
569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
570        res.setDataElement(parseBase64Binary(xpp));
571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
572        res.setUrlElement(parseUri(xpp));
573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("size")) {
574        res.setSizeElement(parseUnsignedInt(xpp));
575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hash")) {
576        res.setHashElement(parseBase64Binary(xpp));
577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
578        res.setTitleElement(parseString(xpp));
579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("creation")) {
580        res.setCreationElement(parseDateTime(xpp));
581      } else if (!parseElementContent(eventType, xpp, res))
582        unknownContent(xpp);
583      eventType = nextNoWhitespace(xpp);
584    }
585    next(xpp);
586    parseElementClose(res);
587    return res;
588  }
589
590  protected Ratio parseRatio(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
591    Ratio res = new Ratio();
592    parseTypeAttributes(xpp, res);
593    next(xpp);
594    int eventType = nextNoWhitespace(xpp);
595    while (eventType != XmlPullParser.END_TAG) {
596      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numerator")) {
597        res.setNumerator(parseQuantity(xpp));
598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
599        res.setDenominator(parseQuantity(xpp));
600      } else if (!parseElementContent(eventType, xpp, res))
601        unknownContent(xpp);
602      eventType = nextNoWhitespace(xpp);
603    }
604    next(xpp);
605    parseElementClose(res);
606    return res;
607  }
608
609  protected Range parseRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
610    Range res = new Range();
611    parseTypeAttributes(xpp, res);
612    next(xpp);
613    int eventType = nextNoWhitespace(xpp);
614    while (eventType != XmlPullParser.END_TAG) {
615      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
616        res.setLow(parseSimpleQuantity(xpp));
617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
618        res.setHigh(parseSimpleQuantity(xpp));
619      } else if (!parseElementContent(eventType, xpp, res))
620        unknownContent(xpp);
621      eventType = nextNoWhitespace(xpp);
622    }
623    next(xpp);
624    parseElementClose(res);
625    return res;
626  }
627
628  protected Annotation parseAnnotation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
629    Annotation res = new Annotation();
630    parseTypeAttributes(xpp, res);
631    next(xpp);
632    int eventType = nextNoWhitespace(xpp);
633    while (eventType != XmlPullParser.END_TAG) {
634      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "author")) {
635        res.setAuthor(parseType("author", xpp));
636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
637        res.setTimeElement(parseDateTime(xpp));
638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
639        res.setTextElement(parseString(xpp));
640      } else if (!parseElementContent(eventType, xpp, res))
641        unknownContent(xpp);
642      eventType = nextNoWhitespace(xpp);
643    }
644    next(xpp);
645    parseElementClose(res);
646    return res;
647  }
648
649  protected CodeableConcept parseCodeableConcept(XmlPullParser xpp)
650      throws XmlPullParserException, IOException, FHIRFormatError {
651    CodeableConcept res = new CodeableConcept();
652    parseTypeAttributes(xpp, res);
653    next(xpp);
654    int eventType = nextNoWhitespace(xpp);
655    while (eventType != XmlPullParser.END_TAG) {
656      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coding")) {
657        res.getCoding().add(parseCoding(xpp));
658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
659        res.setTextElement(parseString(xpp));
660      } else if (!parseElementContent(eventType, xpp, res))
661        unknownContent(xpp);
662      eventType = nextNoWhitespace(xpp);
663    }
664    next(xpp);
665    parseElementClose(res);
666    return res;
667  }
668
669  protected Money parseMoney(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
670    Money res = new Money();
671    parseElementAttributes(xpp, res);
672    next(xpp);
673    int eventType = nextNoWhitespace(xpp);
674    while (eventType != XmlPullParser.END_TAG) {
675      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
676        res.setValueElement(parseDecimal(xpp));
677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
678        res.setComparatorElement(
679            parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
681        res.setUnitElement(parseString(xpp));
682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
683        res.setSystemElement(parseUri(xpp));
684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
685        res.setCodeElement(parseCode(xpp));
686      } else if (!parseElementContent(eventType, xpp, res))
687        unknownContent(xpp);
688      eventType = nextNoWhitespace(xpp);
689    }
690    next(xpp);
691    parseElementClose(res);
692    return res;
693  }
694
695  protected SimpleQuantity parseSimpleQuantity(XmlPullParser xpp)
696      throws XmlPullParserException, IOException, FHIRFormatError {
697    SimpleQuantity res = new SimpleQuantity();
698    parseElementAttributes(xpp, res);
699    next(xpp);
700    int eventType = nextNoWhitespace(xpp);
701    while (eventType != XmlPullParser.END_TAG) {
702      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
703        res.setValueElement(parseDecimal(xpp));
704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
705        res.setComparatorElement(
706            parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
708        res.setUnitElement(parseString(xpp));
709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
710        res.setSystemElement(parseUri(xpp));
711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
712        res.setCodeElement(parseCode(xpp));
713      } else if (!parseElementContent(eventType, xpp, res))
714        unknownContent(xpp);
715      eventType = nextNoWhitespace(xpp);
716    }
717    next(xpp);
718    parseElementClose(res);
719    return res;
720  }
721
722  protected Duration parseDuration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
723    Duration res = new Duration();
724    parseElementAttributes(xpp, res);
725    next(xpp);
726    int eventType = nextNoWhitespace(xpp);
727    while (eventType != XmlPullParser.END_TAG) {
728      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
729        res.setValueElement(parseDecimal(xpp));
730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
731        res.setComparatorElement(
732            parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
734        res.setUnitElement(parseString(xpp));
735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
736        res.setSystemElement(parseUri(xpp));
737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
738        res.setCodeElement(parseCode(xpp));
739      } else if (!parseElementContent(eventType, xpp, res))
740        unknownContent(xpp);
741      eventType = nextNoWhitespace(xpp);
742    }
743    next(xpp);
744    parseElementClose(res);
745    return res;
746  }
747
748  protected Count parseCount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
749    Count res = new Count();
750    parseElementAttributes(xpp, res);
751    next(xpp);
752    int eventType = nextNoWhitespace(xpp);
753    while (eventType != XmlPullParser.END_TAG) {
754      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
755        res.setValueElement(parseDecimal(xpp));
756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
757        res.setComparatorElement(
758            parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
760        res.setUnitElement(parseString(xpp));
761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
762        res.setSystemElement(parseUri(xpp));
763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
764        res.setCodeElement(parseCode(xpp));
765      } else if (!parseElementContent(eventType, xpp, res))
766        unknownContent(xpp);
767      eventType = nextNoWhitespace(xpp);
768    }
769    next(xpp);
770    parseElementClose(res);
771    return res;
772  }
773
774  protected Distance parseDistance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
775    Distance res = new Distance();
776    parseElementAttributes(xpp, res);
777    next(xpp);
778    int eventType = nextNoWhitespace(xpp);
779    while (eventType != XmlPullParser.END_TAG) {
780      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
781        res.setValueElement(parseDecimal(xpp));
782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
783        res.setComparatorElement(
784            parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
786        res.setUnitElement(parseString(xpp));
787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
788        res.setSystemElement(parseUri(xpp));
789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
790        res.setCodeElement(parseCode(xpp));
791      } else if (!parseElementContent(eventType, xpp, res))
792        unknownContent(xpp);
793      eventType = nextNoWhitespace(xpp);
794    }
795    next(xpp);
796    parseElementClose(res);
797    return res;
798  }
799
800  protected Age parseAge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
801    Age res = new Age();
802    parseElementAttributes(xpp, res);
803    next(xpp);
804    int eventType = nextNoWhitespace(xpp);
805    while (eventType != XmlPullParser.END_TAG) {
806      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
807        res.setValueElement(parseDecimal(xpp));
808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
809        res.setComparatorElement(
810            parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
812        res.setUnitElement(parseString(xpp));
813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
814        res.setSystemElement(parseUri(xpp));
815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
816        res.setCodeElement(parseCode(xpp));
817      } else if (!parseElementContent(eventType, xpp, res))
818        unknownContent(xpp);
819      eventType = nextNoWhitespace(xpp);
820    }
821    next(xpp);
822    parseElementClose(res);
823    return res;
824  }
825
826  protected HumanName parseHumanName(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
827    HumanName res = new HumanName();
828    parseElementAttributes(xpp, res);
829    next(xpp);
830    int eventType = nextNoWhitespace(xpp);
831    while (eventType != XmlPullParser.END_TAG) {
832      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
833        res.setUseElement(parseEnumeration(xpp, HumanName.NameUse.NULL, new HumanName.NameUseEnumFactory()));
834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
835        res.setTextElement(parseString(xpp));
836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
837        res.getFamily().add(parseString(xpp));
838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("given")) {
839        res.getGiven().add(parseString(xpp));
840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
841        res.getPrefix().add(parseString(xpp));
842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suffix")) {
843        res.getSuffix().add(parseString(xpp));
844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
845        res.setPeriod(parsePeriod(xpp));
846      } else if (!parseElementContent(eventType, xpp, res))
847        unknownContent(xpp);
848      eventType = nextNoWhitespace(xpp);
849    }
850    next(xpp);
851    parseElementClose(res);
852    return res;
853  }
854
855  protected ContactPoint parseContactPoint(XmlPullParser xpp)
856      throws XmlPullParserException, IOException, FHIRFormatError {
857    ContactPoint res = new ContactPoint();
858    parseElementAttributes(xpp, res);
859    next(xpp);
860    int eventType = nextNoWhitespace(xpp);
861    while (eventType != XmlPullParser.END_TAG) {
862      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
863        res.setSystemElement(parseEnumeration(xpp, ContactPoint.ContactPointSystem.NULL,
864            new ContactPoint.ContactPointSystemEnumFactory()));
865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
866        res.setValueElement(parseString(xpp));
867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
868        res.setUseElement(
869            parseEnumeration(xpp, ContactPoint.ContactPointUse.NULL, new ContactPoint.ContactPointUseEnumFactory()));
870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
871        res.setRankElement(parsePositiveInt(xpp));
872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
873        res.setPeriod(parsePeriod(xpp));
874      } else if (!parseElementContent(eventType, xpp, res))
875        unknownContent(xpp);
876      eventType = nextNoWhitespace(xpp);
877    }
878    next(xpp);
879    parseElementClose(res);
880    return res;
881  }
882
883  protected Meta parseMeta(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
884    Meta res = new Meta();
885    parseElementAttributes(xpp, res);
886    next(xpp);
887    int eventType = nextNoWhitespace(xpp);
888    while (eventType != XmlPullParser.END_TAG) {
889      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
890        res.setVersionIdElement(parseId(xpp));
891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
892        res.setLastUpdatedElement(parseInstant(xpp));
893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
894        res.getProfile().add(parseUri(xpp));
895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
896        res.getSecurity().add(parseCoding(xpp));
897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
898        res.getTag().add(parseCoding(xpp));
899      } else if (!parseElementContent(eventType, xpp, res))
900        unknownContent(xpp);
901      eventType = nextNoWhitespace(xpp);
902    }
903    next(xpp);
904    parseElementClose(res);
905    return res;
906  }
907
908  protected Address parseAddress(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
909    Address res = new Address();
910    parseElementAttributes(xpp, res);
911    next(xpp);
912    int eventType = nextNoWhitespace(xpp);
913    while (eventType != XmlPullParser.END_TAG) {
914      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
915        res.setUseElement(parseEnumeration(xpp, Address.AddressUse.NULL, new Address.AddressUseEnumFactory()));
916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
917        res.setTypeElement(parseEnumeration(xpp, Address.AddressType.NULL, new Address.AddressTypeEnumFactory()));
918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
919        res.setTextElement(parseString(xpp));
920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("line")) {
921        res.getLine().add(parseString(xpp));
922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("city")) {
923        res.setCityElement(parseString(xpp));
924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("district")) {
925        res.setDistrictElement(parseString(xpp));
926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
927        res.setStateElement(parseString(xpp));
928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postalCode")) {
929        res.setPostalCodeElement(parseString(xpp));
930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
931        res.setCountryElement(parseString(xpp));
932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
933        res.setPeriod(parsePeriod(xpp));
934      } else if (!parseElementContent(eventType, xpp, res))
935        unknownContent(xpp);
936      eventType = nextNoWhitespace(xpp);
937    }
938    next(xpp);
939    parseElementClose(res);
940    return res;
941  }
942
943  protected Timing parseTiming(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
944    Timing res = new Timing();
945    parseElementAttributes(xpp, res);
946    next(xpp);
947    int eventType = nextNoWhitespace(xpp);
948    while (eventType != XmlPullParser.END_TAG) {
949      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
950        res.getEvent().add(parseDateTime(xpp));
951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
952        res.setRepeat(parseTimingTimingRepeatComponent(xpp, res));
953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
954        res.setCode(parseCodeableConcept(xpp));
955      } else if (!parseElementContent(eventType, xpp, res))
956        unknownContent(xpp);
957      eventType = nextNoWhitespace(xpp);
958    }
959    next(xpp);
960    parseElementClose(res);
961    return res;
962  }
963
964  protected Timing.TimingRepeatComponent parseTimingTimingRepeatComponent(XmlPullParser xpp, Timing owner)
965      throws XmlPullParserException, IOException, FHIRFormatError {
966    Timing.TimingRepeatComponent res = new Timing.TimingRepeatComponent();
967    parseElementAttributes(xpp, res);
968    next(xpp);
969    int eventType = nextNoWhitespace(xpp);
970    while (eventType != XmlPullParser.END_TAG) {
971      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bounds")) {
972        res.setBounds(parseType("bounds", xpp));
973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
974        res.setCountElement(parseInteger(xpp));
975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
976        res.setDurationElement(parseDecimal(xpp));
977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationMax")) {
978        res.setDurationMaxElement(parseDecimal(xpp));
979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationUnits")) {
980        res.setDurationUnitsElement(
981            parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
983        res.setFrequencyElement(parseInteger(xpp));
984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyMax")) {
985        res.setFrequencyMaxElement(parseInteger(xpp));
986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
987        res.setPeriodElement(parseDecimal(xpp));
988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodMax")) {
989        res.setPeriodMaxElement(parseDecimal(xpp));
990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodUnits")) {
991        res.setPeriodUnitsElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
993        res.setWhenElement(parseEnumeration(xpp, Timing.EventTiming.NULL, new Timing.EventTimingEnumFactory()));
994      } else if (!parseElementContent(eventType, xpp, res))
995        unknownContent(xpp);
996      eventType = nextNoWhitespace(xpp);
997    }
998    next(xpp);
999    parseElementClose(res);
1000    return res;
1001  }
1002
1003  protected ElementDefinition parseElementDefinition(XmlPullParser xpp)
1004      throws XmlPullParserException, IOException, FHIRFormatError {
1005    ElementDefinition res = new ElementDefinition();
1006    parseElementAttributes(xpp, res);
1007    next(xpp);
1008    int eventType = nextNoWhitespace(xpp);
1009    while (eventType != XmlPullParser.END_TAG) {
1010      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1011        res.setPathElement(parseString(xpp));
1012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
1013        res.getRepresentation().add(parseEnumeration(xpp, ElementDefinition.PropertyRepresentation.NULL,
1014            new ElementDefinition.PropertyRepresentationEnumFactory()));
1015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1016        res.setNameElement(parseString(xpp));
1017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1018        res.setLabelElement(parseString(xpp));
1019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1020        res.getCode().add(parseCoding(xpp));
1021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slicing")) {
1022        res.setSlicing(parseElementDefinitionElementDefinitionSlicingComponent(xpp, res));
1023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("short")) {
1024        res.setShortElement(parseString(xpp));
1025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
1026        res.setDefinitionElement(parseMarkdown(xpp));
1027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comments")) {
1028        res.setCommentsElement(parseMarkdown(xpp));
1029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1030        res.setRequirementsElement(parseMarkdown(xpp));
1031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
1032        res.getAlias().add(parseString(xpp));
1033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1034        res.setMinElement(parseInteger(xpp));
1035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1036        res.setMaxElement(parseString(xpp));
1037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
1038        res.setBase(parseElementDefinitionElementDefinitionBaseComponent(xpp, res));
1039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1040        res.getType().add(parseElementDefinitionTypeRefComponent(xpp, res));
1041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nameReference")) {
1042        res.setNameReferenceElement(parseString(xpp));
1043      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
1044        res.setDefaultValue(parseType("defaultValue", xpp));
1045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaningWhenMissing")) {
1046        res.setMeaningWhenMissingElement(parseMarkdown(xpp));
1047      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fixed")) {
1048        res.setFixed(parseType("fixed", xpp));
1049      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "pattern")) {
1050        res.setPattern(parseType("pattern", xpp));
1051      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
1052        res.setExample(parseType("example", xpp));
1053      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minValue")) {
1054        res.setMinValue(parseType("minValue", xpp));
1055      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "maxValue")) {
1056        res.setMaxValue(parseType("maxValue", xpp));
1057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
1058        res.setMaxLengthElement(parseInteger(xpp));
1059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1060        res.getCondition().add(parseId(xpp));
1061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constraint")) {
1062        res.getConstraint().add(parseElementDefinitionElementDefinitionConstraintComponent(xpp, res));
1063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1064        res.setMustSupportElement(parseBoolean(xpp));
1065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifier")) {
1066        res.setIsModifierElement(parseBoolean(xpp));
1067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSummary")) {
1068        res.setIsSummaryElement(parseBoolean(xpp));
1069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
1070        res.setBinding(parseElementDefinitionElementDefinitionBindingComponent(xpp, res));
1071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
1072        res.getMapping().add(parseElementDefinitionElementDefinitionMappingComponent(xpp, res));
1073      } else if (!parseElementContent(eventType, xpp, res))
1074        unknownContent(xpp);
1075      eventType = nextNoWhitespace(xpp);
1076    }
1077    next(xpp);
1078    parseElementClose(res);
1079    return res;
1080  }
1081
1082  protected ElementDefinition.ElementDefinitionSlicingComponent parseElementDefinitionElementDefinitionSlicingComponent(
1083      XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1084    ElementDefinition.ElementDefinitionSlicingComponent res = new ElementDefinition.ElementDefinitionSlicingComponent();
1085    parseElementAttributes(xpp, res);
1086    next(xpp);
1087    int eventType = nextNoWhitespace(xpp);
1088    while (eventType != XmlPullParser.END_TAG) {
1089      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("discriminator")) {
1090        res.getDiscriminator().add(parseString(xpp));
1091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1092        res.setDescriptionElement(parseString(xpp));
1093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ordered")) {
1094        res.setOrderedElement(parseBoolean(xpp));
1095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rules")) {
1096        res.setRulesElement(parseEnumeration(xpp, ElementDefinition.SlicingRules.NULL,
1097            new ElementDefinition.SlicingRulesEnumFactory()));
1098      } else if (!parseElementContent(eventType, xpp, res))
1099        unknownContent(xpp);
1100      eventType = nextNoWhitespace(xpp);
1101    }
1102    next(xpp);
1103    parseElementClose(res);
1104    return res;
1105  }
1106
1107  protected ElementDefinition.ElementDefinitionBaseComponent parseElementDefinitionElementDefinitionBaseComponent(
1108      XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1109    ElementDefinition.ElementDefinitionBaseComponent res = new ElementDefinition.ElementDefinitionBaseComponent();
1110    parseElementAttributes(xpp, res);
1111    next(xpp);
1112    int eventType = nextNoWhitespace(xpp);
1113    while (eventType != XmlPullParser.END_TAG) {
1114      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1115        res.setPathElement(parseString(xpp));
1116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1117        res.setMinElement(parseInteger(xpp));
1118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1119        res.setMaxElement(parseString(xpp));
1120      } else if (!parseElementContent(eventType, xpp, res))
1121        unknownContent(xpp);
1122      eventType = nextNoWhitespace(xpp);
1123    }
1124    next(xpp);
1125    parseElementClose(res);
1126    return res;
1127  }
1128
1129  protected ElementDefinition.TypeRefComponent parseElementDefinitionTypeRefComponent(XmlPullParser xpp,
1130      ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1131    ElementDefinition.TypeRefComponent res = new ElementDefinition.TypeRefComponent();
1132    parseElementAttributes(xpp, res);
1133    next(xpp);
1134    int eventType = nextNoWhitespace(xpp);
1135    while (eventType != XmlPullParser.END_TAG) {
1136      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1137        res.setCodeElement(parseCode(xpp));
1138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1139        res.getProfile().add(parseUri(xpp));
1140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregation")) {
1141        res.getAggregation().add(parseEnumeration(xpp, ElementDefinition.AggregationMode.NULL,
1142            new ElementDefinition.AggregationModeEnumFactory()));
1143      } else if (!parseElementContent(eventType, xpp, res))
1144        unknownContent(xpp);
1145      eventType = nextNoWhitespace(xpp);
1146    }
1147    next(xpp);
1148    parseElementClose(res);
1149    return res;
1150  }
1151
1152  protected ElementDefinition.ElementDefinitionConstraintComponent parseElementDefinitionElementDefinitionConstraintComponent(
1153      XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1154    ElementDefinition.ElementDefinitionConstraintComponent res = new ElementDefinition.ElementDefinitionConstraintComponent();
1155    parseElementAttributes(xpp, res);
1156    next(xpp);
1157    int eventType = nextNoWhitespace(xpp);
1158    while (eventType != XmlPullParser.END_TAG) {
1159      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
1160        res.setKeyElement(parseId(xpp));
1161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1162        res.setRequirementsElement(parseString(xpp));
1163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1164        res.setSeverityElement(parseEnumeration(xpp, ElementDefinition.ConstraintSeverity.NULL,
1165            new ElementDefinition.ConstraintSeverityEnumFactory()));
1166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("human")) {
1167        res.setHumanElement(parseString(xpp));
1168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
1169        res.setXpathElement(parseString(xpp));
1170      } else if (!parseElementContent(eventType, xpp, res))
1171        unknownContent(xpp);
1172      eventType = nextNoWhitespace(xpp);
1173    }
1174    next(xpp);
1175    parseElementClose(res);
1176    return res;
1177  }
1178
1179  protected ElementDefinition.ElementDefinitionBindingComponent parseElementDefinitionElementDefinitionBindingComponent(
1180      XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1181    ElementDefinition.ElementDefinitionBindingComponent res = new ElementDefinition.ElementDefinitionBindingComponent();
1182    parseElementAttributes(xpp, res);
1183    next(xpp);
1184    int eventType = nextNoWhitespace(xpp);
1185    while (eventType != XmlPullParser.END_TAG) {
1186      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
1187        res.setStrengthElement(
1188            parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
1189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1190        res.setDescriptionElement(parseString(xpp));
1191      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
1192        res.setValueSet(parseType("valueSet", xpp));
1193      } else if (!parseElementContent(eventType, xpp, res))
1194        unknownContent(xpp);
1195      eventType = nextNoWhitespace(xpp);
1196    }
1197    next(xpp);
1198    parseElementClose(res);
1199    return res;
1200  }
1201
1202  protected ElementDefinition.ElementDefinitionMappingComponent parseElementDefinitionElementDefinitionMappingComponent(
1203      XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1204    ElementDefinition.ElementDefinitionMappingComponent res = new ElementDefinition.ElementDefinitionMappingComponent();
1205    parseElementAttributes(xpp, res);
1206    next(xpp);
1207    int eventType = nextNoWhitespace(xpp);
1208    while (eventType != XmlPullParser.END_TAG) {
1209      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
1210        res.setIdentityElement(parseId(xpp));
1211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1212        res.setLanguageElement(parseCode(xpp));
1213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("map")) {
1214        res.setMapElement(parseString(xpp));
1215      } else if (!parseElementContent(eventType, xpp, res))
1216        unknownContent(xpp);
1217      eventType = nextNoWhitespace(xpp);
1218    }
1219    next(xpp);
1220    parseElementClose(res);
1221    return res;
1222  }
1223
1224  protected void parseDomainResourceAttributes(XmlPullParser xpp, DomainResource res)
1225      throws XmlPullParserException, IOException, FHIRFormatError {
1226    parseResourceAttributes(xpp, res);
1227  }
1228
1229  protected boolean parseDomainResourceContent(int eventType, XmlPullParser xpp, DomainResource res)
1230      throws XmlPullParserException, IOException, FHIRFormatError {
1231    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1232      res.setText(parseNarrative(xpp));
1233    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contained")) {
1234      res.getContained().add(parseResourceContained(xpp));
1235    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
1236      res.getExtension().add(parseExtension(xpp));
1237    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
1238      res.getModifierExtension().add(parseExtension(xpp));
1239    } else
1240      return parseResourceContent(eventType, xpp, res);
1241    return true;
1242  }
1243
1244  protected Parameters parseParameters(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1245    Parameters res = new Parameters();
1246    parseResourceAttributes(xpp, res);
1247    next(xpp);
1248    int eventType = nextNoWhitespace(xpp);
1249    while (eventType != XmlPullParser.END_TAG) {
1250      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
1251        res.getParameter().add(parseParametersParametersParameterComponent(xpp, res));
1252      } else if (!parseResourceContent(eventType, xpp, res))
1253        unknownContent(xpp);
1254      eventType = nextNoWhitespace(xpp);
1255    }
1256    next(xpp);
1257    parseElementClose(res);
1258    return res;
1259  }
1260
1261  protected Parameters.ParametersParameterComponent parseParametersParametersParameterComponent(XmlPullParser xpp,
1262      Parameters owner) throws XmlPullParserException, IOException, FHIRFormatError {
1263    Parameters.ParametersParameterComponent res = new Parameters.ParametersParameterComponent();
1264    parseBackboneAttributes(xpp, res);
1265    next(xpp);
1266    int eventType = nextNoWhitespace(xpp);
1267    while (eventType != XmlPullParser.END_TAG) {
1268      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1269        res.setNameElement(parseString(xpp));
1270      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1271        res.setValue(parseType("value", xpp));
1272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1273        res.setResource(parseResourceContained(xpp));
1274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
1275        res.getPart().add(parseParametersParametersParameterComponent(xpp, owner));
1276      } else if (!parseBackboneContent(eventType, xpp, res))
1277        unknownContent(xpp);
1278      eventType = nextNoWhitespace(xpp);
1279    }
1280    next(xpp);
1281    parseElementClose(res);
1282    return res;
1283  }
1284
1285  protected void parseResourceAttributes(XmlPullParser xpp, Resource res)
1286      throws XmlPullParserException, IOException, FHIRFormatError {
1287    if (!comments.isEmpty()) {
1288      res.getFormatCommentsPre().addAll(comments);
1289      comments.clear();
1290    }
1291  }
1292
1293  protected boolean parseResourceContent(int eventType, XmlPullParser xpp, Resource res)
1294      throws XmlPullParserException, IOException, FHIRFormatError {
1295    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("id")) {
1296      res.setIdElement(parseId(xpp));
1297    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meta")) {
1298      res.setMeta(parseMeta(xpp));
1299    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicitRules")) {
1300      res.setImplicitRulesElement(parseUri(xpp));
1301    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1302      res.setLanguageElement(parseCode(xpp));
1303    } else
1304      return false;
1305    return true;
1306  }
1307
1308  protected Account parseAccount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1309    Account res = new Account();
1310    parseDomainResourceAttributes(xpp, res);
1311    next(xpp);
1312    int eventType = nextNoWhitespace(xpp);
1313    while (eventType != XmlPullParser.END_TAG) {
1314      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1315        res.getIdentifier().add(parseIdentifier(xpp));
1316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1317        res.setNameElement(parseString(xpp));
1318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1319        res.setType(parseCodeableConcept(xpp));
1320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1321        res.setStatusElement(parseEnumeration(xpp, Account.AccountStatus.NULL, new Account.AccountStatusEnumFactory()));
1322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activePeriod")) {
1323        res.setActivePeriod(parsePeriod(xpp));
1324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currency")) {
1325        res.setCurrency(parseCoding(xpp));
1326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("balance")) {
1327        res.setBalance(parseMoney(xpp));
1328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coveragePeriod")) {
1329        res.setCoveragePeriod(parsePeriod(xpp));
1330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
1331        res.setSubject(parseReference(xpp));
1332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
1333        res.setOwner(parseReference(xpp));
1334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1335        res.setDescriptionElement(parseString(xpp));
1336      } else if (!parseDomainResourceContent(eventType, xpp, res))
1337        unknownContent(xpp);
1338      eventType = nextNoWhitespace(xpp);
1339    }
1340    next(xpp);
1341    parseElementClose(res);
1342    return res;
1343  }
1344
1345  protected AllergyIntolerance parseAllergyIntolerance(XmlPullParser xpp)
1346      throws XmlPullParserException, IOException, FHIRFormatError {
1347    AllergyIntolerance res = new AllergyIntolerance();
1348    parseDomainResourceAttributes(xpp, res);
1349    next(xpp);
1350    int eventType = nextNoWhitespace(xpp);
1351    while (eventType != XmlPullParser.END_TAG) {
1352      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1353        res.getIdentifier().add(parseIdentifier(xpp));
1354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
1355        res.setOnsetElement(parseDateTime(xpp));
1356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
1357        res.setRecordedDateElement(parseDateTime(xpp));
1358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
1359        res.setRecorder(parseReference(xpp));
1360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
1361        res.setPatient(parseReference(xpp));
1362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reporter")) {
1363        res.setReporter(parseReference(xpp));
1364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
1365        res.setSubstance(parseCodeableConcept(xpp));
1366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1367        res.setStatusElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceStatus.NULL,
1368            new AllergyIntolerance.AllergyIntoleranceStatusEnumFactory()));
1369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticality")) {
1370        res.setCriticalityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCriticality.NULL,
1371            new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory()));
1372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1373        res.setTypeElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceType.NULL,
1374            new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory()));
1375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
1376        res.setCategoryElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCategory.NULL,
1377            new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory()));
1378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastOccurence")) {
1379        res.setLastOccurenceElement(parseDateTime(xpp));
1380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
1381        res.setNote(parseAnnotation(xpp));
1382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
1383        res.getReaction().add(parseAllergyIntoleranceAllergyIntoleranceReactionComponent(xpp, res));
1384      } else if (!parseDomainResourceContent(eventType, xpp, res))
1385        unknownContent(xpp);
1386      eventType = nextNoWhitespace(xpp);
1387    }
1388    next(xpp);
1389    parseElementClose(res);
1390    return res;
1391  }
1392
1393  protected AllergyIntolerance.AllergyIntoleranceReactionComponent parseAllergyIntoleranceAllergyIntoleranceReactionComponent(
1394      XmlPullParser xpp, AllergyIntolerance owner) throws XmlPullParserException, IOException, FHIRFormatError {
1395    AllergyIntolerance.AllergyIntoleranceReactionComponent res = new AllergyIntolerance.AllergyIntoleranceReactionComponent();
1396    parseBackboneAttributes(xpp, res);
1397    next(xpp);
1398    int eventType = nextNoWhitespace(xpp);
1399    while (eventType != XmlPullParser.END_TAG) {
1400      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
1401        res.setSubstance(parseCodeableConcept(xpp));
1402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certainty")) {
1403        res.setCertaintyElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCertainty.NULL,
1404            new AllergyIntolerance.AllergyIntoleranceCertaintyEnumFactory()));
1405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifestation")) {
1406        res.getManifestation().add(parseCodeableConcept(xpp));
1407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1408        res.setDescriptionElement(parseString(xpp));
1409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
1410        res.setOnsetElement(parseDateTime(xpp));
1411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1412        res.setSeverityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceSeverity.NULL,
1413            new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory()));
1414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureRoute")) {
1415        res.setExposureRoute(parseCodeableConcept(xpp));
1416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
1417        res.setNote(parseAnnotation(xpp));
1418      } else if (!parseBackboneContent(eventType, xpp, res))
1419        unknownContent(xpp);
1420      eventType = nextNoWhitespace(xpp);
1421    }
1422    next(xpp);
1423    parseElementClose(res);
1424    return res;
1425  }
1426
1427  protected Appointment parseAppointment(XmlPullParser xpp)
1428      throws XmlPullParserException, IOException, FHIRFormatError {
1429    Appointment res = new Appointment();
1430    parseDomainResourceAttributes(xpp, res);
1431    next(xpp);
1432    int eventType = nextNoWhitespace(xpp);
1433    while (eventType != XmlPullParser.END_TAG) {
1434      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1435        res.getIdentifier().add(parseIdentifier(xpp));
1436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1437        res.setStatusElement(
1438            parseEnumeration(xpp, Appointment.AppointmentStatus.NULL, new Appointment.AppointmentStatusEnumFactory()));
1439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1440        res.setType(parseCodeableConcept(xpp));
1441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
1442        res.setReason(parseCodeableConcept(xpp));
1443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
1444        res.setPriorityElement(parseUnsignedInt(xpp));
1445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1446        res.setDescriptionElement(parseString(xpp));
1447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
1448        res.setStartElement(parseInstant(xpp));
1449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
1450        res.setEndElement(parseInstant(xpp));
1451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minutesDuration")) {
1452        res.setMinutesDurationElement(parsePositiveInt(xpp));
1453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slot")) {
1454        res.getSlot().add(parseReference(xpp));
1455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1456        res.setCommentElement(parseString(xpp));
1457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
1458        res.getParticipant().add(parseAppointmentAppointmentParticipantComponent(xpp, res));
1459      } else if (!parseDomainResourceContent(eventType, xpp, res))
1460        unknownContent(xpp);
1461      eventType = nextNoWhitespace(xpp);
1462    }
1463    next(xpp);
1464    parseElementClose(res);
1465    return res;
1466  }
1467
1468  protected Appointment.AppointmentParticipantComponent parseAppointmentAppointmentParticipantComponent(
1469      XmlPullParser xpp, Appointment owner) throws XmlPullParserException, IOException, FHIRFormatError {
1470    Appointment.AppointmentParticipantComponent res = new Appointment.AppointmentParticipantComponent();
1471    parseBackboneAttributes(xpp, res);
1472    next(xpp);
1473    int eventType = nextNoWhitespace(xpp);
1474    while (eventType != XmlPullParser.END_TAG) {
1475      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1476        res.getType().add(parseCodeableConcept(xpp));
1477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
1478        res.setActor(parseReference(xpp));
1479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
1480        res.setRequiredElement(parseEnumeration(xpp, Appointment.ParticipantRequired.NULL,
1481            new Appointment.ParticipantRequiredEnumFactory()));
1482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1483        res.setStatusElement(parseEnumeration(xpp, Appointment.ParticipationStatus.NULL,
1484            new Appointment.ParticipationStatusEnumFactory()));
1485      } else if (!parseBackboneContent(eventType, xpp, res))
1486        unknownContent(xpp);
1487      eventType = nextNoWhitespace(xpp);
1488    }
1489    next(xpp);
1490    parseElementClose(res);
1491    return res;
1492  }
1493
1494  protected AppointmentResponse parseAppointmentResponse(XmlPullParser xpp)
1495      throws XmlPullParserException, IOException, FHIRFormatError {
1496    AppointmentResponse res = new AppointmentResponse();
1497    parseDomainResourceAttributes(xpp, res);
1498    next(xpp);
1499    int eventType = nextNoWhitespace(xpp);
1500    while (eventType != XmlPullParser.END_TAG) {
1501      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1502        res.getIdentifier().add(parseIdentifier(xpp));
1503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
1504        res.setAppointment(parseReference(xpp));
1505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
1506        res.setStartElement(parseInstant(xpp));
1507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
1508        res.setEndElement(parseInstant(xpp));
1509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantType")) {
1510        res.getParticipantType().add(parseCodeableConcept(xpp));
1511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
1512        res.setActor(parseReference(xpp));
1513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantStatus")) {
1514        res.setParticipantStatusElement(parseEnumeration(xpp, AppointmentResponse.ParticipantStatus.NULL,
1515            new AppointmentResponse.ParticipantStatusEnumFactory()));
1516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1517        res.setCommentElement(parseString(xpp));
1518      } else if (!parseDomainResourceContent(eventType, xpp, res))
1519        unknownContent(xpp);
1520      eventType = nextNoWhitespace(xpp);
1521    }
1522    next(xpp);
1523    parseElementClose(res);
1524    return res;
1525  }
1526
1527  protected AuditEvent parseAuditEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1528    AuditEvent res = new AuditEvent();
1529    parseDomainResourceAttributes(xpp, res);
1530    next(xpp);
1531    int eventType = nextNoWhitespace(xpp);
1532    while (eventType != XmlPullParser.END_TAG) {
1533      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
1534        res.setEvent(parseAuditEventAuditEventEventComponent(xpp, res));
1535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
1536        res.getParticipant().add(parseAuditEventAuditEventParticipantComponent(xpp, res));
1537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1538        res.setSource(parseAuditEventAuditEventSourceComponent(xpp, res));
1539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("object")) {
1540        res.getObject().add(parseAuditEventAuditEventObjectComponent(xpp, res));
1541      } else if (!parseDomainResourceContent(eventType, xpp, res))
1542        unknownContent(xpp);
1543      eventType = nextNoWhitespace(xpp);
1544    }
1545    next(xpp);
1546    parseElementClose(res);
1547    return res;
1548  }
1549
1550  protected AuditEvent.AuditEventEventComponent parseAuditEventAuditEventEventComponent(XmlPullParser xpp,
1551      AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1552    AuditEvent.AuditEventEventComponent res = new AuditEvent.AuditEventEventComponent();
1553    parseBackboneAttributes(xpp, res);
1554    next(xpp);
1555    int eventType = nextNoWhitespace(xpp);
1556    while (eventType != XmlPullParser.END_TAG) {
1557      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1558        res.setType(parseCoding(xpp));
1559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
1560        res.getSubtype().add(parseCoding(xpp));
1561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
1562        res.setActionElement(
1563            parseEnumeration(xpp, AuditEvent.AuditEventAction.NULL, new AuditEvent.AuditEventActionEnumFactory()));
1564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
1565        res.setDateTimeElement(parseInstant(xpp));
1566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
1567        res.setOutcomeElement(
1568            parseEnumeration(xpp, AuditEvent.AuditEventOutcome.NULL, new AuditEvent.AuditEventOutcomeEnumFactory()));
1569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeDesc")) {
1570        res.setOutcomeDescElement(parseString(xpp));
1571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfEvent")) {
1572        res.getPurposeOfEvent().add(parseCoding(xpp));
1573      } else if (!parseBackboneContent(eventType, xpp, res))
1574        unknownContent(xpp);
1575      eventType = nextNoWhitespace(xpp);
1576    }
1577    next(xpp);
1578    parseElementClose(res);
1579    return res;
1580  }
1581
1582  protected AuditEvent.AuditEventParticipantComponent parseAuditEventAuditEventParticipantComponent(XmlPullParser xpp,
1583      AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1584    AuditEvent.AuditEventParticipantComponent res = new AuditEvent.AuditEventParticipantComponent();
1585    parseBackboneAttributes(xpp, res);
1586    next(xpp);
1587    int eventType = nextNoWhitespace(xpp);
1588    while (eventType != XmlPullParser.END_TAG) {
1589      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
1590        res.getRole().add(parseCodeableConcept(xpp));
1591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1592        res.setReference(parseReference(xpp));
1593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userId")) {
1594        res.setUserId(parseIdentifier(xpp));
1595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altId")) {
1596        res.setAltIdElement(parseString(xpp));
1597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1598        res.setNameElement(parseString(xpp));
1599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
1600        res.setRequestorElement(parseBoolean(xpp));
1601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
1602        res.setLocation(parseReference(xpp));
1603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
1604        res.getPolicy().add(parseUri(xpp));
1605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
1606        res.setMedia(parseCoding(xpp));
1607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
1608        res.setNetwork(parseAuditEventAuditEventParticipantNetworkComponent(xpp, owner));
1609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfUse")) {
1610        res.getPurposeOfUse().add(parseCoding(xpp));
1611      } else if (!parseBackboneContent(eventType, xpp, res))
1612        unknownContent(xpp);
1613      eventType = nextNoWhitespace(xpp);
1614    }
1615    next(xpp);
1616    parseElementClose(res);
1617    return res;
1618  }
1619
1620  protected AuditEvent.AuditEventParticipantNetworkComponent parseAuditEventAuditEventParticipantNetworkComponent(
1621      XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1622    AuditEvent.AuditEventParticipantNetworkComponent res = new AuditEvent.AuditEventParticipantNetworkComponent();
1623    parseBackboneAttributes(xpp, res);
1624    next(xpp);
1625    int eventType = nextNoWhitespace(xpp);
1626    while (eventType != XmlPullParser.END_TAG) {
1627      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
1628        res.setAddressElement(parseString(xpp));
1629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1630        res.setTypeElement(parseEnumeration(xpp, AuditEvent.AuditEventParticipantNetworkType.NULL,
1631            new AuditEvent.AuditEventParticipantNetworkTypeEnumFactory()));
1632      } else if (!parseBackboneContent(eventType, xpp, res))
1633        unknownContent(xpp);
1634      eventType = nextNoWhitespace(xpp);
1635    }
1636    next(xpp);
1637    parseElementClose(res);
1638    return res;
1639  }
1640
1641  protected AuditEvent.AuditEventSourceComponent parseAuditEventAuditEventSourceComponent(XmlPullParser xpp,
1642      AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1643    AuditEvent.AuditEventSourceComponent res = new AuditEvent.AuditEventSourceComponent();
1644    parseBackboneAttributes(xpp, res);
1645    next(xpp);
1646    int eventType = nextNoWhitespace(xpp);
1647    while (eventType != XmlPullParser.END_TAG) {
1648      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
1649        res.setSiteElement(parseString(xpp));
1650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1651        res.setIdentifier(parseIdentifier(xpp));
1652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1653        res.getType().add(parseCoding(xpp));
1654      } else if (!parseBackboneContent(eventType, xpp, res))
1655        unknownContent(xpp);
1656      eventType = nextNoWhitespace(xpp);
1657    }
1658    next(xpp);
1659    parseElementClose(res);
1660    return res;
1661  }
1662
1663  protected AuditEvent.AuditEventObjectComponent parseAuditEventAuditEventObjectComponent(XmlPullParser xpp,
1664      AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1665    AuditEvent.AuditEventObjectComponent res = new AuditEvent.AuditEventObjectComponent();
1666    parseBackboneAttributes(xpp, res);
1667    next(xpp);
1668    int eventType = nextNoWhitespace(xpp);
1669    while (eventType != XmlPullParser.END_TAG) {
1670      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1671        res.setIdentifier(parseIdentifier(xpp));
1672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1673        res.setReference(parseReference(xpp));
1674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1675        res.setType(parseCoding(xpp));
1676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
1677        res.setRole(parseCoding(xpp));
1678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycle")) {
1679        res.setLifecycle(parseCoding(xpp));
1680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
1681        res.getSecurityLabel().add(parseCoding(xpp));
1682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1683        res.setNameElement(parseString(xpp));
1684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1685        res.setDescriptionElement(parseString(xpp));
1686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("query")) {
1687        res.setQueryElement(parseBase64Binary(xpp));
1688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
1689        res.getDetail().add(parseAuditEventAuditEventObjectDetailComponent(xpp, owner));
1690      } else if (!parseBackboneContent(eventType, xpp, res))
1691        unknownContent(xpp);
1692      eventType = nextNoWhitespace(xpp);
1693    }
1694    next(xpp);
1695    parseElementClose(res);
1696    return res;
1697  }
1698
1699  protected AuditEvent.AuditEventObjectDetailComponent parseAuditEventAuditEventObjectDetailComponent(XmlPullParser xpp,
1700      AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
1701    AuditEvent.AuditEventObjectDetailComponent res = new AuditEvent.AuditEventObjectDetailComponent();
1702    parseBackboneAttributes(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("type")) {
1707        res.setTypeElement(parseString(xpp));
1708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1709        res.setValueElement(parseBase64Binary(xpp));
1710      } else if (!parseBackboneContent(eventType, xpp, res))
1711        unknownContent(xpp);
1712      eventType = nextNoWhitespace(xpp);
1713    }
1714    next(xpp);
1715    parseElementClose(res);
1716    return res;
1717  }
1718
1719  protected Basic parseBasic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1720    Basic res = new Basic();
1721    parseDomainResourceAttributes(xpp, res);
1722    next(xpp);
1723    int eventType = nextNoWhitespace(xpp);
1724    while (eventType != XmlPullParser.END_TAG) {
1725      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1726        res.getIdentifier().add(parseIdentifier(xpp));
1727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1728        res.setCode(parseCodeableConcept(xpp));
1729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
1730        res.setSubject(parseReference(xpp));
1731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
1732        res.setAuthor(parseReference(xpp));
1733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
1734        res.setCreatedElement(parseDate(xpp));
1735      } else if (!parseDomainResourceContent(eventType, xpp, res))
1736        unknownContent(xpp);
1737      eventType = nextNoWhitespace(xpp);
1738    }
1739    next(xpp);
1740    parseElementClose(res);
1741    return res;
1742  }
1743
1744  protected Binary parseBinary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1745    Binary res = new Binary();
1746    parseResourceAttributes(xpp, res);
1747    next(xpp);
1748    int eventType = nextNoWhitespace(xpp);
1749    while (eventType != XmlPullParser.END_TAG) {
1750      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
1751        res.setContentTypeElement(parseCode(xpp));
1752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
1753        res.setContentElement(parseBase64Binary(xpp));
1754      } else if (!parseResourceContent(eventType, xpp, res))
1755        unknownContent(xpp);
1756      eventType = nextNoWhitespace(xpp);
1757    }
1758    next(xpp);
1759    parseElementClose(res);
1760    return res;
1761  }
1762
1763  protected BodySite parseBodySite(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1764    BodySite res = new BodySite();
1765    parseDomainResourceAttributes(xpp, res);
1766    next(xpp);
1767    int eventType = nextNoWhitespace(xpp);
1768    while (eventType != XmlPullParser.END_TAG) {
1769      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
1770        res.setPatient(parseReference(xpp));
1771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1772        res.getIdentifier().add(parseIdentifier(xpp));
1773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1774        res.setCode(parseCodeableConcept(xpp));
1775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
1776        res.getModifier().add(parseCodeableConcept(xpp));
1777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1778        res.setDescriptionElement(parseString(xpp));
1779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
1780        res.getImage().add(parseAttachment(xpp));
1781      } else if (!parseDomainResourceContent(eventType, xpp, res))
1782        unknownContent(xpp);
1783      eventType = nextNoWhitespace(xpp);
1784    }
1785    next(xpp);
1786    parseElementClose(res);
1787    return res;
1788  }
1789
1790  protected Bundle parseBundle(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1791    Bundle res = new Bundle();
1792    parseResourceAttributes(xpp, res);
1793    next(xpp);
1794    int eventType = nextNoWhitespace(xpp);
1795    while (eventType != XmlPullParser.END_TAG) {
1796      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1797        res.setTypeElement(parseEnumeration(xpp, Bundle.BundleType.NULL, new Bundle.BundleTypeEnumFactory()));
1798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
1799        res.setTotalElement(parseUnsignedInt(xpp));
1800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
1801        res.getLink().add(parseBundleBundleLinkComponent(xpp, res));
1802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
1803        res.getEntry().add(parseBundleBundleEntryComponent(xpp, res));
1804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
1805        res.setSignature(parseSignature(xpp));
1806      } else if (!parseResourceContent(eventType, xpp, res))
1807        unknownContent(xpp);
1808      eventType = nextNoWhitespace(xpp);
1809    }
1810    next(xpp);
1811    parseElementClose(res);
1812    return res;
1813  }
1814
1815  protected Bundle.BundleLinkComponent parseBundleBundleLinkComponent(XmlPullParser xpp, Bundle owner)
1816      throws XmlPullParserException, IOException, FHIRFormatError {
1817    Bundle.BundleLinkComponent res = new Bundle.BundleLinkComponent();
1818    parseBackboneAttributes(xpp, res);
1819    next(xpp);
1820    int eventType = nextNoWhitespace(xpp);
1821    while (eventType != XmlPullParser.END_TAG) {
1822      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relation")) {
1823        res.setRelationElement(parseString(xpp));
1824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1825        res.setUrlElement(parseUri(xpp));
1826      } else if (!parseBackboneContent(eventType, xpp, res))
1827        unknownContent(xpp);
1828      eventType = nextNoWhitespace(xpp);
1829    }
1830    next(xpp);
1831    parseElementClose(res);
1832    return res;
1833  }
1834
1835  protected Bundle.BundleEntryComponent parseBundleBundleEntryComponent(XmlPullParser xpp, Bundle owner)
1836      throws XmlPullParserException, IOException, FHIRFormatError {
1837    Bundle.BundleEntryComponent res = new Bundle.BundleEntryComponent();
1838    parseBackboneAttributes(xpp, res);
1839    next(xpp);
1840    int eventType = nextNoWhitespace(xpp);
1841    while (eventType != XmlPullParser.END_TAG) {
1842      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
1843        res.getLink().add(parseBundleBundleLinkComponent(xpp, owner));
1844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fullUrl")) {
1845        res.setFullUrlElement(parseUri(xpp));
1846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1847        res.setResource(parseResourceContained(xpp));
1848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
1849        res.setSearch(parseBundleBundleEntrySearchComponent(xpp, owner));
1850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
1851        res.setRequest(parseBundleBundleEntryRequestComponent(xpp, owner));
1852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
1853        res.setResponse(parseBundleBundleEntryResponseComponent(xpp, owner));
1854      } else if (!parseBackboneContent(eventType, xpp, res))
1855        unknownContent(xpp);
1856      eventType = nextNoWhitespace(xpp);
1857    }
1858    next(xpp);
1859    parseElementClose(res);
1860    return res;
1861  }
1862
1863  protected Bundle.BundleEntrySearchComponent parseBundleBundleEntrySearchComponent(XmlPullParser xpp, Bundle owner)
1864      throws XmlPullParserException, IOException, FHIRFormatError {
1865    Bundle.BundleEntrySearchComponent res = new Bundle.BundleEntrySearchComponent();
1866    parseBackboneAttributes(xpp, res);
1867    next(xpp);
1868    int eventType = nextNoWhitespace(xpp);
1869    while (eventType != XmlPullParser.END_TAG) {
1870      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
1871        res.setModeElement(parseEnumeration(xpp, Bundle.SearchEntryMode.NULL, new Bundle.SearchEntryModeEnumFactory()));
1872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
1873        res.setScoreElement(parseDecimal(xpp));
1874      } else if (!parseBackboneContent(eventType, xpp, res))
1875        unknownContent(xpp);
1876      eventType = nextNoWhitespace(xpp);
1877    }
1878    next(xpp);
1879    parseElementClose(res);
1880    return res;
1881  }
1882
1883  protected Bundle.BundleEntryRequestComponent parseBundleBundleEntryRequestComponent(XmlPullParser xpp, Bundle owner)
1884      throws XmlPullParserException, IOException, FHIRFormatError {
1885    Bundle.BundleEntryRequestComponent res = new Bundle.BundleEntryRequestComponent();
1886    parseBackboneAttributes(xpp, res);
1887    next(xpp);
1888    int eventType = nextNoWhitespace(xpp);
1889    while (eventType != XmlPullParser.END_TAG) {
1890      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
1891        res.setMethodElement(parseEnumeration(xpp, Bundle.HTTPVerb.NULL, new Bundle.HTTPVerbEnumFactory()));
1892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1893        res.setUrlElement(parseUri(xpp));
1894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneMatch")) {
1895        res.setIfNoneMatchElement(parseString(xpp));
1896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifModifiedSince")) {
1897        res.setIfModifiedSinceElement(parseInstant(xpp));
1898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifMatch")) {
1899        res.setIfMatchElement(parseString(xpp));
1900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneExist")) {
1901        res.setIfNoneExistElement(parseString(xpp));
1902      } else if (!parseBackboneContent(eventType, xpp, res))
1903        unknownContent(xpp);
1904      eventType = nextNoWhitespace(xpp);
1905    }
1906    next(xpp);
1907    parseElementClose(res);
1908    return res;
1909  }
1910
1911  protected Bundle.BundleEntryResponseComponent parseBundleBundleEntryResponseComponent(XmlPullParser xpp, Bundle owner)
1912      throws XmlPullParserException, IOException, FHIRFormatError {
1913    Bundle.BundleEntryResponseComponent res = new Bundle.BundleEntryResponseComponent();
1914    parseBackboneAttributes(xpp, res);
1915    next(xpp);
1916    int eventType = nextNoWhitespace(xpp);
1917    while (eventType != XmlPullParser.END_TAG) {
1918      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1919        res.setStatusElement(parseString(xpp));
1920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
1921        res.setLocationElement(parseUri(xpp));
1922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("etag")) {
1923        res.setEtagElement(parseString(xpp));
1924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
1925        res.setLastModifiedElement(parseInstant(xpp));
1926      } else if (!parseBackboneContent(eventType, xpp, res))
1927        unknownContent(xpp);
1928      eventType = nextNoWhitespace(xpp);
1929    }
1930    next(xpp);
1931    parseElementClose(res);
1932    return res;
1933  }
1934
1935  protected CarePlan parseCarePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1936    CarePlan res = new CarePlan();
1937    parseDomainResourceAttributes(xpp, res);
1938    next(xpp);
1939    int eventType = nextNoWhitespace(xpp);
1940    while (eventType != XmlPullParser.END_TAG) {
1941      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1942        res.getIdentifier().add(parseIdentifier(xpp));
1943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
1944        res.setSubject(parseReference(xpp));
1945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1946        res.setStatusElement(
1947            parseEnumeration(xpp, CarePlan.CarePlanStatus.NULL, new CarePlan.CarePlanStatusEnumFactory()));
1948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
1949        res.setContext(parseReference(xpp));
1950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1951        res.setPeriod(parsePeriod(xpp));
1952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
1953        res.getAuthor().add(parseReference(xpp));
1954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modified")) {
1955        res.setModifiedElement(parseDateTime(xpp));
1956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
1957        res.getCategory().add(parseCodeableConcept(xpp));
1958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1959        res.setDescriptionElement(parseString(xpp));
1960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
1961        res.getAddresses().add(parseReference(xpp));
1962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("support")) {
1963        res.getSupport().add(parseReference(xpp));
1964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedPlan")) {
1965        res.getRelatedPlan().add(parseCarePlanCarePlanRelatedPlanComponent(xpp, res));
1966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
1967        res.getParticipant().add(parseCarePlanCarePlanParticipantComponent(xpp, res));
1968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
1969        res.getGoal().add(parseReference(xpp));
1970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
1971        res.getActivity().add(parseCarePlanCarePlanActivityComponent(xpp, res));
1972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
1973        res.setNote(parseAnnotation(xpp));
1974      } else if (!parseDomainResourceContent(eventType, xpp, res))
1975        unknownContent(xpp);
1976      eventType = nextNoWhitespace(xpp);
1977    }
1978    next(xpp);
1979    parseElementClose(res);
1980    return res;
1981  }
1982
1983  protected CarePlan.CarePlanRelatedPlanComponent parseCarePlanCarePlanRelatedPlanComponent(XmlPullParser xpp,
1984      CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
1985    CarePlan.CarePlanRelatedPlanComponent res = new CarePlan.CarePlanRelatedPlanComponent();
1986    parseBackboneAttributes(xpp, res);
1987    next(xpp);
1988    int eventType = nextNoWhitespace(xpp);
1989    while (eventType != XmlPullParser.END_TAG) {
1990      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1991        res.setCodeElement(
1992            parseEnumeration(xpp, CarePlan.CarePlanRelationship.NULL, new CarePlan.CarePlanRelationshipEnumFactory()));
1993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
1994        res.setPlan(parseReference(xpp));
1995      } else if (!parseBackboneContent(eventType, xpp, res))
1996        unknownContent(xpp);
1997      eventType = nextNoWhitespace(xpp);
1998    }
1999    next(xpp);
2000    parseElementClose(res);
2001    return res;
2002  }
2003
2004  protected CarePlan.CarePlanParticipantComponent parseCarePlanCarePlanParticipantComponent(XmlPullParser xpp,
2005      CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
2006    CarePlan.CarePlanParticipantComponent res = new CarePlan.CarePlanParticipantComponent();
2007    parseBackboneAttributes(xpp, res);
2008    next(xpp);
2009    int eventType = nextNoWhitespace(xpp);
2010    while (eventType != XmlPullParser.END_TAG) {
2011      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2012        res.setRole(parseCodeableConcept(xpp));
2013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
2014        res.setMember(parseReference(xpp));
2015      } else if (!parseBackboneContent(eventType, xpp, res))
2016        unknownContent(xpp);
2017      eventType = nextNoWhitespace(xpp);
2018    }
2019    next(xpp);
2020    parseElementClose(res);
2021    return res;
2022  }
2023
2024  protected CarePlan.CarePlanActivityComponent parseCarePlanCarePlanActivityComponent(XmlPullParser xpp, CarePlan owner)
2025      throws XmlPullParserException, IOException, FHIRFormatError {
2026    CarePlan.CarePlanActivityComponent res = new CarePlan.CarePlanActivityComponent();
2027    parseBackboneAttributes(xpp, res);
2028    next(xpp);
2029    int eventType = nextNoWhitespace(xpp);
2030    while (eventType != XmlPullParser.END_TAG) {
2031      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionResulting")) {
2032        res.getActionResulting().add(parseReference(xpp));
2033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progress")) {
2034        res.getProgress().add(parseAnnotation(xpp));
2035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
2036        res.setReference(parseReference(xpp));
2037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2038        res.setDetail(parseCarePlanCarePlanActivityDetailComponent(xpp, owner));
2039      } else if (!parseBackboneContent(eventType, xpp, res))
2040        unknownContent(xpp);
2041      eventType = nextNoWhitespace(xpp);
2042    }
2043    next(xpp);
2044    parseElementClose(res);
2045    return res;
2046  }
2047
2048  protected CarePlan.CarePlanActivityDetailComponent parseCarePlanCarePlanActivityDetailComponent(XmlPullParser xpp,
2049      CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
2050    CarePlan.CarePlanActivityDetailComponent res = new CarePlan.CarePlanActivityDetailComponent();
2051    parseBackboneAttributes(xpp, res);
2052    next(xpp);
2053    int eventType = nextNoWhitespace(xpp);
2054    while (eventType != XmlPullParser.END_TAG) {
2055      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2056        res.setCategory(parseCodeableConcept(xpp));
2057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2058        res.setCode(parseCodeableConcept(xpp));
2059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
2060        res.getReasonCode().add(parseCodeableConcept(xpp));
2061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
2062        res.getReasonReference().add(parseReference(xpp));
2063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
2064        res.getGoal().add(parseReference(xpp));
2065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2066        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanActivityStatus.NULL,
2067            new CarePlan.CarePlanActivityStatusEnumFactory()));
2068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
2069        res.setStatusReason(parseCodeableConcept(xpp));
2070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prohibited")) {
2071        res.setProhibitedElement(parseBoolean(xpp));
2072      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
2073        res.setScheduled(parseType("scheduled", xpp));
2074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2075        res.setLocation(parseReference(xpp));
2076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
2077        res.getPerformer().add(parseReference(xpp));
2078      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
2079        res.setProduct(parseType("product", xpp));
2080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dailyAmount")) {
2081        res.setDailyAmount(parseSimpleQuantity(xpp));
2082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2083        res.setQuantity(parseSimpleQuantity(xpp));
2084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2085        res.setDescriptionElement(parseString(xpp));
2086      } else if (!parseBackboneContent(eventType, xpp, res))
2087        unknownContent(xpp);
2088      eventType = nextNoWhitespace(xpp);
2089    }
2090    next(xpp);
2091    parseElementClose(res);
2092    return res;
2093  }
2094
2095  protected Claim parseClaim(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2096    Claim res = new Claim();
2097    parseDomainResourceAttributes(xpp, res);
2098    next(xpp);
2099    int eventType = nextNoWhitespace(xpp);
2100    while (eventType != XmlPullParser.END_TAG) {
2101      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2102        res.setTypeElement(parseEnumeration(xpp, Claim.ClaimType.NULL, new Claim.ClaimTypeEnumFactory()));
2103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2104        res.getIdentifier().add(parseIdentifier(xpp));
2105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
2106        res.setRuleset(parseCoding(xpp));
2107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
2108        res.setOriginalRuleset(parseCoding(xpp));
2109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2110        res.setCreatedElement(parseDateTime(xpp));
2111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
2112        res.setTarget(parseReference(xpp));
2113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
2114        res.setProvider(parseReference(xpp));
2115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
2116        res.setOrganization(parseReference(xpp));
2117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
2118        res.setUseElement(parseEnumeration(xpp, Claim.Use.NULL, new Claim.UseEnumFactory()));
2119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2120        res.setPriority(parseCoding(xpp));
2121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
2122        res.setFundsReserve(parseCoding(xpp));
2123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
2124        res.setEnterer(parseReference(xpp));
2125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
2126        res.setFacility(parseReference(xpp));
2127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
2128        res.setPrescription(parseReference(xpp));
2129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
2130        res.setOriginalPrescription(parseReference(xpp));
2131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
2132        res.setPayee(parseClaimPayeeComponent(xpp, res));
2133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
2134        res.setReferral(parseReference(xpp));
2135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
2136        res.getDiagnosis().add(parseClaimDiagnosisComponent(xpp, res));
2137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
2138        res.getCondition().add(parseCoding(xpp));
2139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2140        res.setPatient(parseReference(xpp));
2141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2142        res.getCoverage().add(parseClaimCoverageComponent(xpp, res));
2143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exception")) {
2144        res.getException().add(parseCoding(xpp));
2145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("school")) {
2146        res.setSchoolElement(parseString(xpp));
2147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
2148        res.setAccidentElement(parseDate(xpp));
2149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accidentType")) {
2150        res.setAccidentType(parseCoding(xpp));
2151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interventionException")) {
2152        res.getInterventionException().add(parseCoding(xpp));
2153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
2154        res.getItem().add(parseClaimItemsComponent(xpp, res));
2155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalMaterials")) {
2156        res.getAdditionalMaterials().add(parseCoding(xpp));
2157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("missingTeeth")) {
2158        res.getMissingTeeth().add(parseClaimMissingTeethComponent(xpp, res));
2159      } else if (!parseDomainResourceContent(eventType, xpp, res))
2160        unknownContent(xpp);
2161      eventType = nextNoWhitespace(xpp);
2162    }
2163    next(xpp);
2164    parseElementClose(res);
2165    return res;
2166  }
2167
2168  protected Claim.PayeeComponent parseClaimPayeeComponent(XmlPullParser xpp, Claim owner)
2169      throws XmlPullParserException, IOException, FHIRFormatError {
2170    Claim.PayeeComponent res = new Claim.PayeeComponent();
2171    parseBackboneAttributes(xpp, res);
2172    next(xpp);
2173    int eventType = nextNoWhitespace(xpp);
2174    while (eventType != XmlPullParser.END_TAG) {
2175      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2176        res.setType(parseCoding(xpp));
2177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
2178        res.setProvider(parseReference(xpp));
2179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
2180        res.setOrganization(parseReference(xpp));
2181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("person")) {
2182        res.setPerson(parseReference(xpp));
2183      } else if (!parseBackboneContent(eventType, xpp, res))
2184        unknownContent(xpp);
2185      eventType = nextNoWhitespace(xpp);
2186    }
2187    next(xpp);
2188    parseElementClose(res);
2189    return res;
2190  }
2191
2192  protected Claim.DiagnosisComponent parseClaimDiagnosisComponent(XmlPullParser xpp, Claim owner)
2193      throws XmlPullParserException, IOException, FHIRFormatError {
2194    Claim.DiagnosisComponent res = new Claim.DiagnosisComponent();
2195    parseBackboneAttributes(xpp, res);
2196    next(xpp);
2197    int eventType = nextNoWhitespace(xpp);
2198    while (eventType != XmlPullParser.END_TAG) {
2199      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2200        res.setSequenceElement(parsePositiveInt(xpp));
2201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
2202        res.setDiagnosis(parseCoding(xpp));
2203      } else if (!parseBackboneContent(eventType, xpp, res))
2204        unknownContent(xpp);
2205      eventType = nextNoWhitespace(xpp);
2206    }
2207    next(xpp);
2208    parseElementClose(res);
2209    return res;
2210  }
2211
2212  protected Claim.CoverageComponent parseClaimCoverageComponent(XmlPullParser xpp, Claim owner)
2213      throws XmlPullParserException, IOException, FHIRFormatError {
2214    Claim.CoverageComponent res = new Claim.CoverageComponent();
2215    parseBackboneAttributes(xpp, res);
2216    next(xpp);
2217    int eventType = nextNoWhitespace(xpp);
2218    while (eventType != XmlPullParser.END_TAG) {
2219      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2220        res.setSequenceElement(parsePositiveInt(xpp));
2221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
2222        res.setFocalElement(parseBoolean(xpp));
2223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2224        res.setCoverage(parseReference(xpp));
2225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
2226        res.setBusinessArrangementElement(parseString(xpp));
2227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
2228        res.setRelationship(parseCoding(xpp));
2229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
2230        res.getPreAuthRef().add(parseString(xpp));
2231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
2232        res.setClaimResponse(parseReference(xpp));
2233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
2234        res.setOriginalRuleset(parseCoding(xpp));
2235      } else if (!parseBackboneContent(eventType, xpp, res))
2236        unknownContent(xpp);
2237      eventType = nextNoWhitespace(xpp);
2238    }
2239    next(xpp);
2240    parseElementClose(res);
2241    return res;
2242  }
2243
2244  protected Claim.ItemsComponent parseClaimItemsComponent(XmlPullParser xpp, Claim owner)
2245      throws XmlPullParserException, IOException, FHIRFormatError {
2246    Claim.ItemsComponent res = new Claim.ItemsComponent();
2247    parseBackboneAttributes(xpp, res);
2248    next(xpp);
2249    int eventType = nextNoWhitespace(xpp);
2250    while (eventType != XmlPullParser.END_TAG) {
2251      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2252        res.setSequenceElement(parsePositiveInt(xpp));
2253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2254        res.setType(parseCoding(xpp));
2255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
2256        res.setProvider(parseReference(xpp));
2257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisLinkId")) {
2258        res.getDiagnosisLinkId().add(parsePositiveInt(xpp));
2259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
2260        res.setService(parseCoding(xpp));
2261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceDate")) {
2262        res.setServiceDateElement(parseDate(xpp));
2263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2264        res.setQuantity(parseSimpleQuantity(xpp));
2265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
2266        res.setUnitPrice(parseMoney(xpp));
2267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
2268        res.setFactorElement(parseDecimal(xpp));
2269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
2270        res.setPointsElement(parseDecimal(xpp));
2271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
2272        res.setNet(parseMoney(xpp));
2273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
2274        res.setUdi(parseCoding(xpp));
2275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
2276        res.setBodySite(parseCoding(xpp));
2277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
2278        res.getSubSite().add(parseCoding(xpp));
2279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
2280        res.getModifier().add(parseCoding(xpp));
2281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2282        res.getDetail().add(parseClaimDetailComponent(xpp, owner));
2283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prosthesis")) {
2284        res.setProsthesis(parseClaimProsthesisComponent(xpp, owner));
2285      } else if (!parseBackboneContent(eventType, xpp, res))
2286        unknownContent(xpp);
2287      eventType = nextNoWhitespace(xpp);
2288    }
2289    next(xpp);
2290    parseElementClose(res);
2291    return res;
2292  }
2293
2294  protected Claim.DetailComponent parseClaimDetailComponent(XmlPullParser xpp, Claim owner)
2295      throws XmlPullParserException, IOException, FHIRFormatError {
2296    Claim.DetailComponent res = new Claim.DetailComponent();
2297    parseBackboneAttributes(xpp, res);
2298    next(xpp);
2299    int eventType = nextNoWhitespace(xpp);
2300    while (eventType != XmlPullParser.END_TAG) {
2301      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2302        res.setSequenceElement(parsePositiveInt(xpp));
2303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2304        res.setType(parseCoding(xpp));
2305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
2306        res.setService(parseCoding(xpp));
2307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2308        res.setQuantity(parseSimpleQuantity(xpp));
2309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
2310        res.setUnitPrice(parseMoney(xpp));
2311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
2312        res.setFactorElement(parseDecimal(xpp));
2313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
2314        res.setPointsElement(parseDecimal(xpp));
2315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
2316        res.setNet(parseMoney(xpp));
2317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
2318        res.setUdi(parseCoding(xpp));
2319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
2320        res.getSubDetail().add(parseClaimSubDetailComponent(xpp, owner));
2321      } else if (!parseBackboneContent(eventType, xpp, res))
2322        unknownContent(xpp);
2323      eventType = nextNoWhitespace(xpp);
2324    }
2325    next(xpp);
2326    parseElementClose(res);
2327    return res;
2328  }
2329
2330  protected Claim.SubDetailComponent parseClaimSubDetailComponent(XmlPullParser xpp, Claim owner)
2331      throws XmlPullParserException, IOException, FHIRFormatError {
2332    Claim.SubDetailComponent res = new Claim.SubDetailComponent();
2333    parseBackboneAttributes(xpp, res);
2334    next(xpp);
2335    int eventType = nextNoWhitespace(xpp);
2336    while (eventType != XmlPullParser.END_TAG) {
2337      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2338        res.setSequenceElement(parsePositiveInt(xpp));
2339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2340        res.setType(parseCoding(xpp));
2341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
2342        res.setService(parseCoding(xpp));
2343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2344        res.setQuantity(parseSimpleQuantity(xpp));
2345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
2346        res.setUnitPrice(parseMoney(xpp));
2347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
2348        res.setFactorElement(parseDecimal(xpp));
2349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
2350        res.setPointsElement(parseDecimal(xpp));
2351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
2352        res.setNet(parseMoney(xpp));
2353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
2354        res.setUdi(parseCoding(xpp));
2355      } else if (!parseBackboneContent(eventType, xpp, res))
2356        unknownContent(xpp);
2357      eventType = nextNoWhitespace(xpp);
2358    }
2359    next(xpp);
2360    parseElementClose(res);
2361    return res;
2362  }
2363
2364  protected Claim.ProsthesisComponent parseClaimProsthesisComponent(XmlPullParser xpp, Claim owner)
2365      throws XmlPullParserException, IOException, FHIRFormatError {
2366    Claim.ProsthesisComponent res = new Claim.ProsthesisComponent();
2367    parseBackboneAttributes(xpp, res);
2368    next(xpp);
2369    int eventType = nextNoWhitespace(xpp);
2370    while (eventType != XmlPullParser.END_TAG) {
2371      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initial")) {
2372        res.setInitialElement(parseBoolean(xpp));
2373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorDate")) {
2374        res.setPriorDateElement(parseDate(xpp));
2375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorMaterial")) {
2376        res.setPriorMaterial(parseCoding(xpp));
2377      } else if (!parseBackboneContent(eventType, xpp, res))
2378        unknownContent(xpp);
2379      eventType = nextNoWhitespace(xpp);
2380    }
2381    next(xpp);
2382    parseElementClose(res);
2383    return res;
2384  }
2385
2386  protected Claim.MissingTeethComponent parseClaimMissingTeethComponent(XmlPullParser xpp, Claim owner)
2387      throws XmlPullParserException, IOException, FHIRFormatError {
2388    Claim.MissingTeethComponent res = new Claim.MissingTeethComponent();
2389    parseBackboneAttributes(xpp, res);
2390    next(xpp);
2391    int eventType = nextNoWhitespace(xpp);
2392    while (eventType != XmlPullParser.END_TAG) {
2393      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tooth")) {
2394        res.setTooth(parseCoding(xpp));
2395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2396        res.setReason(parseCoding(xpp));
2397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extractionDate")) {
2398        res.setExtractionDateElement(parseDate(xpp));
2399      } else if (!parseBackboneContent(eventType, xpp, res))
2400        unknownContent(xpp);
2401      eventType = nextNoWhitespace(xpp);
2402    }
2403    next(xpp);
2404    parseElementClose(res);
2405    return res;
2406  }
2407
2408  protected ClaimResponse parseClaimResponse(XmlPullParser xpp)
2409      throws XmlPullParserException, IOException, FHIRFormatError {
2410    ClaimResponse res = new ClaimResponse();
2411    parseDomainResourceAttributes(xpp, res);
2412    next(xpp);
2413    int eventType = nextNoWhitespace(xpp);
2414    while (eventType != XmlPullParser.END_TAG) {
2415      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2416        res.getIdentifier().add(parseIdentifier(xpp));
2417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
2418        res.setRequest(parseReference(xpp));
2419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
2420        res.setRuleset(parseCoding(xpp));
2421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
2422        res.setOriginalRuleset(parseCoding(xpp));
2423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2424        res.setCreatedElement(parseDateTime(xpp));
2425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
2426        res.setOrganization(parseReference(xpp));
2427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
2428        res.setRequestProvider(parseReference(xpp));
2429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
2430        res.setRequestOrganization(parseReference(xpp));
2431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2432        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL,
2433            new Enumerations.RemittanceOutcomeEnumFactory()));
2434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
2435        res.setDispositionElement(parseString(xpp));
2436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payeeType")) {
2437        res.setPayeeType(parseCoding(xpp));
2438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
2439        res.getItem().add(parseClaimResponseItemsComponent(xpp, res));
2440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
2441        res.getAddItem().add(parseClaimResponseAddedItemComponent(xpp, res));
2442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
2443        res.getError().add(parseClaimResponseErrorsComponent(xpp, res));
2444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalCost")) {
2445        res.setTotalCost(parseMoney(xpp));
2446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unallocDeductable")) {
2447        res.setUnallocDeductable(parseMoney(xpp));
2448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalBenefit")) {
2449        res.setTotalBenefit(parseMoney(xpp));
2450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAdjustment")) {
2451        res.setPaymentAdjustment(parseMoney(xpp));
2452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAdjustmentReason")) {
2453        res.setPaymentAdjustmentReason(parseCoding(xpp));
2454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
2455        res.setPaymentDateElement(parseDate(xpp));
2456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAmount")) {
2457        res.setPaymentAmount(parseMoney(xpp));
2458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentRef")) {
2459        res.setPaymentRef(parseIdentifier(xpp));
2460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reserved")) {
2461        res.setReserved(parseCoding(xpp));
2462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
2463        res.setForm(parseCoding(xpp));
2464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2465        res.getNote().add(parseClaimResponseNotesComponent(xpp, res));
2466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2467        res.getCoverage().add(parseClaimResponseCoverageComponent(xpp, res));
2468      } else if (!parseDomainResourceContent(eventType, xpp, res))
2469        unknownContent(xpp);
2470      eventType = nextNoWhitespace(xpp);
2471    }
2472    next(xpp);
2473    parseElementClose(res);
2474    return res;
2475  }
2476
2477  protected ClaimResponse.ItemsComponent parseClaimResponseItemsComponent(XmlPullParser xpp, ClaimResponse owner)
2478      throws XmlPullParserException, IOException, FHIRFormatError {
2479    ClaimResponse.ItemsComponent res = new ClaimResponse.ItemsComponent();
2480    parseBackboneAttributes(xpp, res);
2481    next(xpp);
2482    int eventType = nextNoWhitespace(xpp);
2483    while (eventType != XmlPullParser.END_TAG) {
2484      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
2485        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
2486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
2487        res.getNoteNumber().add(parsePositiveInt(xpp));
2488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
2489        res.getAdjudication().add(parseClaimResponseItemAdjudicationComponent(xpp, owner));
2490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2491        res.getDetail().add(parseClaimResponseItemDetailComponent(xpp, owner));
2492      } else if (!parseBackboneContent(eventType, xpp, res))
2493        unknownContent(xpp);
2494      eventType = nextNoWhitespace(xpp);
2495    }
2496    next(xpp);
2497    parseElementClose(res);
2498    return res;
2499  }
2500
2501  protected ClaimResponse.ItemAdjudicationComponent parseClaimResponseItemAdjudicationComponent(XmlPullParser xpp,
2502      ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2503    ClaimResponse.ItemAdjudicationComponent res = new ClaimResponse.ItemAdjudicationComponent();
2504    parseBackboneAttributes(xpp, res);
2505    next(xpp);
2506    int eventType = nextNoWhitespace(xpp);
2507    while (eventType != XmlPullParser.END_TAG) {
2508      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2509        res.setCode(parseCoding(xpp));
2510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
2511        res.setAmount(parseMoney(xpp));
2512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2513        res.setValueElement(parseDecimal(xpp));
2514      } else if (!parseBackboneContent(eventType, xpp, res))
2515        unknownContent(xpp);
2516      eventType = nextNoWhitespace(xpp);
2517    }
2518    next(xpp);
2519    parseElementClose(res);
2520    return res;
2521  }
2522
2523  protected ClaimResponse.ItemDetailComponent parseClaimResponseItemDetailComponent(XmlPullParser xpp,
2524      ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2525    ClaimResponse.ItemDetailComponent res = new ClaimResponse.ItemDetailComponent();
2526    parseBackboneAttributes(xpp, res);
2527    next(xpp);
2528    int eventType = nextNoWhitespace(xpp);
2529    while (eventType != XmlPullParser.END_TAG) {
2530      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
2531        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
2532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
2533        res.getAdjudication().add(parseClaimResponseDetailAdjudicationComponent(xpp, owner));
2534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
2535        res.getSubDetail().add(parseClaimResponseSubDetailComponent(xpp, owner));
2536      } else if (!parseBackboneContent(eventType, xpp, res))
2537        unknownContent(xpp);
2538      eventType = nextNoWhitespace(xpp);
2539    }
2540    next(xpp);
2541    parseElementClose(res);
2542    return res;
2543  }
2544
2545  protected ClaimResponse.DetailAdjudicationComponent parseClaimResponseDetailAdjudicationComponent(XmlPullParser xpp,
2546      ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2547    ClaimResponse.DetailAdjudicationComponent res = new ClaimResponse.DetailAdjudicationComponent();
2548    parseBackboneAttributes(xpp, res);
2549    next(xpp);
2550    int eventType = nextNoWhitespace(xpp);
2551    while (eventType != XmlPullParser.END_TAG) {
2552      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2553        res.setCode(parseCoding(xpp));
2554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
2555        res.setAmount(parseMoney(xpp));
2556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2557        res.setValueElement(parseDecimal(xpp));
2558      } else if (!parseBackboneContent(eventType, xpp, res))
2559        unknownContent(xpp);
2560      eventType = nextNoWhitespace(xpp);
2561    }
2562    next(xpp);
2563    parseElementClose(res);
2564    return res;
2565  }
2566
2567  protected ClaimResponse.SubDetailComponent parseClaimResponseSubDetailComponent(XmlPullParser xpp,
2568      ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2569    ClaimResponse.SubDetailComponent res = new ClaimResponse.SubDetailComponent();
2570    parseBackboneAttributes(xpp, res);
2571    next(xpp);
2572    int eventType = nextNoWhitespace(xpp);
2573    while (eventType != XmlPullParser.END_TAG) {
2574      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
2575        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
2576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
2577        res.getAdjudication().add(parseClaimResponseSubdetailAdjudicationComponent(xpp, owner));
2578      } else if (!parseBackboneContent(eventType, xpp, res))
2579        unknownContent(xpp);
2580      eventType = nextNoWhitespace(xpp);
2581    }
2582    next(xpp);
2583    parseElementClose(res);
2584    return res;
2585  }
2586
2587  protected ClaimResponse.SubdetailAdjudicationComponent parseClaimResponseSubdetailAdjudicationComponent(
2588      XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2589    ClaimResponse.SubdetailAdjudicationComponent res = new ClaimResponse.SubdetailAdjudicationComponent();
2590    parseBackboneAttributes(xpp, res);
2591    next(xpp);
2592    int eventType = nextNoWhitespace(xpp);
2593    while (eventType != XmlPullParser.END_TAG) {
2594      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2595        res.setCode(parseCoding(xpp));
2596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
2597        res.setAmount(parseMoney(xpp));
2598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2599        res.setValueElement(parseDecimal(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 ClaimResponse.AddedItemComponent parseClaimResponseAddedItemComponent(XmlPullParser xpp,
2610      ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2611    ClaimResponse.AddedItemComponent res = new ClaimResponse.AddedItemComponent();
2612    parseBackboneAttributes(xpp, res);
2613    next(xpp);
2614    int eventType = nextNoWhitespace(xpp);
2615    while (eventType != XmlPullParser.END_TAG) {
2616      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
2617        res.getSequenceLinkId().add(parsePositiveInt(xpp));
2618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
2619        res.setService(parseCoding(xpp));
2620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
2621        res.setFee(parseMoney(xpp));
2622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumberLinkId")) {
2623        res.getNoteNumberLinkId().add(parsePositiveInt(xpp));
2624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
2625        res.getAdjudication().add(parseClaimResponseAddedItemAdjudicationComponent(xpp, owner));
2626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2627        res.getDetail().add(parseClaimResponseAddedItemsDetailComponent(xpp, owner));
2628      } else if (!parseBackboneContent(eventType, xpp, res))
2629        unknownContent(xpp);
2630      eventType = nextNoWhitespace(xpp);
2631    }
2632    next(xpp);
2633    parseElementClose(res);
2634    return res;
2635  }
2636
2637  protected ClaimResponse.AddedItemAdjudicationComponent parseClaimResponseAddedItemAdjudicationComponent(
2638      XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2639    ClaimResponse.AddedItemAdjudicationComponent res = new ClaimResponse.AddedItemAdjudicationComponent();
2640    parseBackboneAttributes(xpp, res);
2641    next(xpp);
2642    int eventType = nextNoWhitespace(xpp);
2643    while (eventType != XmlPullParser.END_TAG) {
2644      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2645        res.setCode(parseCoding(xpp));
2646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
2647        res.setAmount(parseMoney(xpp));
2648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2649        res.setValueElement(parseDecimal(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 ClaimResponse.AddedItemsDetailComponent parseClaimResponseAddedItemsDetailComponent(XmlPullParser xpp,
2660      ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2661    ClaimResponse.AddedItemsDetailComponent res = new ClaimResponse.AddedItemsDetailComponent();
2662    parseBackboneAttributes(xpp, res);
2663    next(xpp);
2664    int eventType = nextNoWhitespace(xpp);
2665    while (eventType != XmlPullParser.END_TAG) {
2666      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
2667        res.setService(parseCoding(xpp));
2668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
2669        res.setFee(parseMoney(xpp));
2670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
2671        res.getAdjudication().add(parseClaimResponseAddedItemDetailAdjudicationComponent(xpp, owner));
2672      } else if (!parseBackboneContent(eventType, xpp, res))
2673        unknownContent(xpp);
2674      eventType = nextNoWhitespace(xpp);
2675    }
2676    next(xpp);
2677    parseElementClose(res);
2678    return res;
2679  }
2680
2681  protected ClaimResponse.AddedItemDetailAdjudicationComponent parseClaimResponseAddedItemDetailAdjudicationComponent(
2682      XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
2683    ClaimResponse.AddedItemDetailAdjudicationComponent res = new ClaimResponse.AddedItemDetailAdjudicationComponent();
2684    parseBackboneAttributes(xpp, res);
2685    next(xpp);
2686    int eventType = nextNoWhitespace(xpp);
2687    while (eventType != XmlPullParser.END_TAG) {
2688      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2689        res.setCode(parseCoding(xpp));
2690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
2691        res.setAmount(parseMoney(xpp));
2692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2693        res.setValueElement(parseDecimal(xpp));
2694      } else if (!parseBackboneContent(eventType, xpp, res))
2695        unknownContent(xpp);
2696      eventType = nextNoWhitespace(xpp);
2697    }
2698    next(xpp);
2699    parseElementClose(res);
2700    return res;
2701  }
2702
2703  protected ClaimResponse.ErrorsComponent parseClaimResponseErrorsComponent(XmlPullParser xpp, ClaimResponse owner)
2704      throws XmlPullParserException, IOException, FHIRFormatError {
2705    ClaimResponse.ErrorsComponent res = new ClaimResponse.ErrorsComponent();
2706    parseBackboneAttributes(xpp, res);
2707    next(xpp);
2708    int eventType = nextNoWhitespace(xpp);
2709    while (eventType != XmlPullParser.END_TAG) {
2710      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
2711        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
2712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequenceLinkId")) {
2713        res.setDetailSequenceLinkIdElement(parsePositiveInt(xpp));
2714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subdetailSequenceLinkId")) {
2715        res.setSubdetailSequenceLinkIdElement(parsePositiveInt(xpp));
2716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2717        res.setCode(parseCoding(xpp));
2718      } else if (!parseBackboneContent(eventType, xpp, res))
2719        unknownContent(xpp);
2720      eventType = nextNoWhitespace(xpp);
2721    }
2722    next(xpp);
2723    parseElementClose(res);
2724    return res;
2725  }
2726
2727  protected ClaimResponse.NotesComponent parseClaimResponseNotesComponent(XmlPullParser xpp, ClaimResponse owner)
2728      throws XmlPullParserException, IOException, FHIRFormatError {
2729    ClaimResponse.NotesComponent res = new ClaimResponse.NotesComponent();
2730    parseBackboneAttributes(xpp, res);
2731    next(xpp);
2732    int eventType = nextNoWhitespace(xpp);
2733    while (eventType != XmlPullParser.END_TAG) {
2734      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
2735        res.setNumberElement(parsePositiveInt(xpp));
2736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2737        res.setType(parseCoding(xpp));
2738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
2739        res.setTextElement(parseString(xpp));
2740      } else if (!parseBackboneContent(eventType, xpp, res))
2741        unknownContent(xpp);
2742      eventType = nextNoWhitespace(xpp);
2743    }
2744    next(xpp);
2745    parseElementClose(res);
2746    return res;
2747  }
2748
2749  protected ClaimResponse.CoverageComponent parseClaimResponseCoverageComponent(XmlPullParser xpp, ClaimResponse owner)
2750      throws XmlPullParserException, IOException, FHIRFormatError {
2751    ClaimResponse.CoverageComponent res = new ClaimResponse.CoverageComponent();
2752    parseBackboneAttributes(xpp, res);
2753    next(xpp);
2754    int eventType = nextNoWhitespace(xpp);
2755    while (eventType != XmlPullParser.END_TAG) {
2756      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2757        res.setSequenceElement(parsePositiveInt(xpp));
2758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
2759        res.setFocalElement(parseBoolean(xpp));
2760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2761        res.setCoverage(parseReference(xpp));
2762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
2763        res.setBusinessArrangementElement(parseString(xpp));
2764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
2765        res.setRelationship(parseCoding(xpp));
2766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
2767        res.getPreAuthRef().add(parseString(xpp));
2768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
2769        res.setClaimResponse(parseReference(xpp));
2770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
2771        res.setOriginalRuleset(parseCoding(xpp));
2772      } else if (!parseBackboneContent(eventType, xpp, res))
2773        unknownContent(xpp);
2774      eventType = nextNoWhitespace(xpp);
2775    }
2776    next(xpp);
2777    parseElementClose(res);
2778    return res;
2779  }
2780
2781  protected ClinicalImpression parseClinicalImpression(XmlPullParser xpp)
2782      throws XmlPullParserException, IOException, FHIRFormatError {
2783    ClinicalImpression res = new ClinicalImpression();
2784    parseDomainResourceAttributes(xpp, res);
2785    next(xpp);
2786    int eventType = nextNoWhitespace(xpp);
2787    while (eventType != XmlPullParser.END_TAG) {
2788      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2789        res.setPatient(parseReference(xpp));
2790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessor")) {
2791        res.setAssessor(parseReference(xpp));
2792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2793        res.setStatusElement(parseEnumeration(xpp, ClinicalImpression.ClinicalImpressionStatus.NULL,
2794            new ClinicalImpression.ClinicalImpressionStatusEnumFactory()));
2795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2796        res.setDateElement(parseDateTime(xpp));
2797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2798        res.setDescriptionElement(parseString(xpp));
2799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
2800        res.setPrevious(parseReference(xpp));
2801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("problem")) {
2802        res.getProblem().add(parseReference(xpp));
2803      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "trigger")) {
2804        res.setTrigger(parseType("trigger", xpp));
2805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("investigations")) {
2806        res.getInvestigations().add(parseClinicalImpressionClinicalImpressionInvestigationsComponent(xpp, res));
2807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
2808        res.setProtocolElement(parseUri(xpp));
2809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
2810        res.setSummaryElement(parseString(xpp));
2811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("finding")) {
2812        res.getFinding().add(parseClinicalImpressionClinicalImpressionFindingComponent(xpp, res));
2813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resolved")) {
2814        res.getResolved().add(parseCodeableConcept(xpp));
2815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruledOut")) {
2816        res.getRuledOut().add(parseClinicalImpressionClinicalImpressionRuledOutComponent(xpp, res));
2817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosis")) {
2818        res.setPrognosisElement(parseString(xpp));
2819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
2820        res.getPlan().add(parseReference(xpp));
2821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
2822        res.getAction().add(parseReference(xpp));
2823      } else if (!parseDomainResourceContent(eventType, xpp, res))
2824        unknownContent(xpp);
2825      eventType = nextNoWhitespace(xpp);
2826    }
2827    next(xpp);
2828    parseElementClose(res);
2829    return res;
2830  }
2831
2832  protected ClinicalImpression.ClinicalImpressionInvestigationsComponent parseClinicalImpressionClinicalImpressionInvestigationsComponent(
2833      XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
2834    ClinicalImpression.ClinicalImpressionInvestigationsComponent res = new ClinicalImpression.ClinicalImpressionInvestigationsComponent();
2835    parseBackboneAttributes(xpp, res);
2836    next(xpp);
2837    int eventType = nextNoWhitespace(xpp);
2838    while (eventType != XmlPullParser.END_TAG) {
2839      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2840        res.setCode(parseCodeableConcept(xpp));
2841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
2842        res.getItem().add(parseReference(xpp));
2843      } else if (!parseBackboneContent(eventType, xpp, res))
2844        unknownContent(xpp);
2845      eventType = nextNoWhitespace(xpp);
2846    }
2847    next(xpp);
2848    parseElementClose(res);
2849    return res;
2850  }
2851
2852  protected ClinicalImpression.ClinicalImpressionFindingComponent parseClinicalImpressionClinicalImpressionFindingComponent(
2853      XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
2854    ClinicalImpression.ClinicalImpressionFindingComponent res = new ClinicalImpression.ClinicalImpressionFindingComponent();
2855    parseBackboneAttributes(xpp, res);
2856    next(xpp);
2857    int eventType = nextNoWhitespace(xpp);
2858    while (eventType != XmlPullParser.END_TAG) {
2859      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
2860        res.setItem(parseCodeableConcept(xpp));
2861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cause")) {
2862        res.setCauseElement(parseString(xpp));
2863      } else if (!parseBackboneContent(eventType, xpp, res))
2864        unknownContent(xpp);
2865      eventType = nextNoWhitespace(xpp);
2866    }
2867    next(xpp);
2868    parseElementClose(res);
2869    return res;
2870  }
2871
2872  protected ClinicalImpression.ClinicalImpressionRuledOutComponent parseClinicalImpressionClinicalImpressionRuledOutComponent(
2873      XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
2874    ClinicalImpression.ClinicalImpressionRuledOutComponent res = new ClinicalImpression.ClinicalImpressionRuledOutComponent();
2875    parseBackboneAttributes(xpp, res);
2876    next(xpp);
2877    int eventType = nextNoWhitespace(xpp);
2878    while (eventType != XmlPullParser.END_TAG) {
2879      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
2880        res.setItem(parseCodeableConcept(xpp));
2881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2882        res.setReasonElement(parseString(xpp));
2883      } else if (!parseBackboneContent(eventType, xpp, res))
2884        unknownContent(xpp);
2885      eventType = nextNoWhitespace(xpp);
2886    }
2887    next(xpp);
2888    parseElementClose(res);
2889    return res;
2890  }
2891
2892  protected Communication parseCommunication(XmlPullParser xpp)
2893      throws XmlPullParserException, IOException, FHIRFormatError {
2894    Communication res = new Communication();
2895    parseDomainResourceAttributes(xpp, res);
2896    next(xpp);
2897    int eventType = nextNoWhitespace(xpp);
2898    while (eventType != XmlPullParser.END_TAG) {
2899      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2900        res.getIdentifier().add(parseIdentifier(xpp));
2901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2902        res.setCategory(parseCodeableConcept(xpp));
2903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
2904        res.setSender(parseReference(xpp));
2905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
2906        res.getRecipient().add(parseReference(xpp));
2907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
2908        res.getPayload().add(parseCommunicationCommunicationPayloadComponent(xpp, res));
2909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
2910        res.getMedium().add(parseCodeableConcept(xpp));
2911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2912        res.setStatusElement(parseEnumeration(xpp, Communication.CommunicationStatus.NULL,
2913            new Communication.CommunicationStatusEnumFactory()));
2914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2915        res.setEncounter(parseReference(xpp));
2916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sent")) {
2917        res.setSentElement(parseDateTime(xpp));
2918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("received")) {
2919        res.setReceivedElement(parseDateTime(xpp));
2920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2921        res.getReason().add(parseCodeableConcept(xpp));
2922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2923        res.setSubject(parseReference(xpp));
2924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestDetail")) {
2925        res.setRequestDetail(parseReference(xpp));
2926      } else if (!parseDomainResourceContent(eventType, xpp, res))
2927        unknownContent(xpp);
2928      eventType = nextNoWhitespace(xpp);
2929    }
2930    next(xpp);
2931    parseElementClose(res);
2932    return res;
2933  }
2934
2935  protected Communication.CommunicationPayloadComponent parseCommunicationCommunicationPayloadComponent(
2936      XmlPullParser xpp, Communication owner) throws XmlPullParserException, IOException, FHIRFormatError {
2937    Communication.CommunicationPayloadComponent res = new Communication.CommunicationPayloadComponent();
2938    parseBackboneAttributes(xpp, res);
2939    next(xpp);
2940    int eventType = nextNoWhitespace(xpp);
2941    while (eventType != XmlPullParser.END_TAG) {
2942      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
2943        res.setContent(parseType("content", xpp));
2944      } else if (!parseBackboneContent(eventType, xpp, res))
2945        unknownContent(xpp);
2946      eventType = nextNoWhitespace(xpp);
2947    }
2948    next(xpp);
2949    parseElementClose(res);
2950    return res;
2951  }
2952
2953  protected CommunicationRequest parseCommunicationRequest(XmlPullParser xpp)
2954      throws XmlPullParserException, IOException, FHIRFormatError {
2955    CommunicationRequest res = new CommunicationRequest();
2956    parseDomainResourceAttributes(xpp, res);
2957    next(xpp);
2958    int eventType = nextNoWhitespace(xpp);
2959    while (eventType != XmlPullParser.END_TAG) {
2960      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2961        res.getIdentifier().add(parseIdentifier(xpp));
2962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2963        res.setCategory(parseCodeableConcept(xpp));
2964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
2965        res.setSender(parseReference(xpp));
2966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
2967        res.getRecipient().add(parseReference(xpp));
2968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
2969        res.getPayload().add(parseCommunicationRequestCommunicationRequestPayloadComponent(xpp, res));
2970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
2971        res.getMedium().add(parseCodeableConcept(xpp));
2972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
2973        res.setRequester(parseReference(xpp));
2974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2975        res.setStatusElement(parseEnumeration(xpp, CommunicationRequest.CommunicationRequestStatus.NULL,
2976            new CommunicationRequest.CommunicationRequestStatusEnumFactory()));
2977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2978        res.setEncounter(parseReference(xpp));
2979      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
2980        res.setScheduled(parseType("scheduled", xpp));
2981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2982        res.getReason().add(parseCodeableConcept(xpp));
2983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedOn")) {
2984        res.setRequestedOnElement(parseDateTime(xpp));
2985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2986        res.setSubject(parseReference(xpp));
2987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2988        res.setPriority(parseCodeableConcept(xpp));
2989      } else if (!parseDomainResourceContent(eventType, xpp, res))
2990        unknownContent(xpp);
2991      eventType = nextNoWhitespace(xpp);
2992    }
2993    next(xpp);
2994    parseElementClose(res);
2995    return res;
2996  }
2997
2998  protected CommunicationRequest.CommunicationRequestPayloadComponent parseCommunicationRequestCommunicationRequestPayloadComponent(
2999      XmlPullParser xpp, CommunicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
3000    CommunicationRequest.CommunicationRequestPayloadComponent res = new CommunicationRequest.CommunicationRequestPayloadComponent();
3001    parseBackboneAttributes(xpp, res);
3002    next(xpp);
3003    int eventType = nextNoWhitespace(xpp);
3004    while (eventType != XmlPullParser.END_TAG) {
3005      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
3006        res.setContent(parseType("content", xpp));
3007      } else if (!parseBackboneContent(eventType, xpp, res))
3008        unknownContent(xpp);
3009      eventType = nextNoWhitespace(xpp);
3010    }
3011    next(xpp);
3012    parseElementClose(res);
3013    return res;
3014  }
3015
3016  protected Composition parseComposition(XmlPullParser xpp)
3017      throws XmlPullParserException, IOException, FHIRFormatError {
3018    Composition res = new Composition();
3019    parseDomainResourceAttributes(xpp, res);
3020    next(xpp);
3021    int eventType = nextNoWhitespace(xpp);
3022    while (eventType != XmlPullParser.END_TAG) {
3023      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3024        res.setIdentifier(parseIdentifier(xpp));
3025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3026        res.setDateElement(parseDateTime(xpp));
3027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3028        res.setType(parseCodeableConcept(xpp));
3029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
3030        res.setClass_(parseCodeableConcept(xpp));
3031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3032        res.setTitleElement(parseString(xpp));
3033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3034        res.setStatusElement(
3035            parseEnumeration(xpp, Composition.CompositionStatus.NULL, new Composition.CompositionStatusEnumFactory()));
3036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
3037        res.setConfidentialityElement(parseCode(xpp));
3038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3039        res.setSubject(parseReference(xpp));
3040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
3041        res.getAuthor().add(parseReference(xpp));
3042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attester")) {
3043        res.getAttester().add(parseCompositionCompositionAttesterComponent(xpp, res));
3044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
3045        res.setCustodian(parseReference(xpp));
3046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
3047        res.getEvent().add(parseCompositionCompositionEventComponent(xpp, res));
3048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3049        res.setEncounter(parseReference(xpp));
3050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
3051        res.getSection().add(parseCompositionSectionComponent(xpp, res));
3052      } else if (!parseDomainResourceContent(eventType, xpp, res))
3053        unknownContent(xpp);
3054      eventType = nextNoWhitespace(xpp);
3055    }
3056    next(xpp);
3057    parseElementClose(res);
3058    return res;
3059  }
3060
3061  protected Composition.CompositionAttesterComponent parseCompositionCompositionAttesterComponent(XmlPullParser xpp,
3062      Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
3063    Composition.CompositionAttesterComponent res = new Composition.CompositionAttesterComponent();
3064    parseBackboneAttributes(xpp, res);
3065    next(xpp);
3066    int eventType = nextNoWhitespace(xpp);
3067    while (eventType != XmlPullParser.END_TAG) {
3068      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3069        res.getMode().add(parseEnumeration(xpp, Composition.CompositionAttestationMode.NULL,
3070            new Composition.CompositionAttestationModeEnumFactory()));
3071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
3072        res.setTimeElement(parseDateTime(xpp));
3073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
3074        res.setParty(parseReference(xpp));
3075      } else if (!parseBackboneContent(eventType, xpp, res))
3076        unknownContent(xpp);
3077      eventType = nextNoWhitespace(xpp);
3078    }
3079    next(xpp);
3080    parseElementClose(res);
3081    return res;
3082  }
3083
3084  protected Composition.CompositionEventComponent parseCompositionCompositionEventComponent(XmlPullParser xpp,
3085      Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
3086    Composition.CompositionEventComponent res = new Composition.CompositionEventComponent();
3087    parseBackboneAttributes(xpp, res);
3088    next(xpp);
3089    int eventType = nextNoWhitespace(xpp);
3090    while (eventType != XmlPullParser.END_TAG) {
3091      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3092        res.getCode().add(parseCodeableConcept(xpp));
3093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3094        res.setPeriod(parsePeriod(xpp));
3095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3096        res.getDetail().add(parseReference(xpp));
3097      } else if (!parseBackboneContent(eventType, xpp, res))
3098        unknownContent(xpp);
3099      eventType = nextNoWhitespace(xpp);
3100    }
3101    next(xpp);
3102    parseElementClose(res);
3103    return res;
3104  }
3105
3106  protected Composition.SectionComponent parseCompositionSectionComponent(XmlPullParser xpp, Composition owner)
3107      throws XmlPullParserException, IOException, FHIRFormatError {
3108    Composition.SectionComponent res = new Composition.SectionComponent();
3109    parseBackboneAttributes(xpp, res);
3110    next(xpp);
3111    int eventType = nextNoWhitespace(xpp);
3112    while (eventType != XmlPullParser.END_TAG) {
3113      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3114        res.setTitleElement(parseString(xpp));
3115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3116        res.setCode(parseCodeableConcept(xpp));
3117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
3118        res.setText(parseNarrative(xpp));
3119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3120        res.setModeElement(parseCode(xpp));
3121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
3122        res.setOrderedBy(parseCodeableConcept(xpp));
3123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
3124        res.getEntry().add(parseReference(xpp));
3125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
3126        res.setEmptyReason(parseCodeableConcept(xpp));
3127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
3128        res.getSection().add(parseCompositionSectionComponent(xpp, owner));
3129      } else if (!parseBackboneContent(eventType, xpp, res))
3130        unknownContent(xpp);
3131      eventType = nextNoWhitespace(xpp);
3132    }
3133    next(xpp);
3134    parseElementClose(res);
3135    return res;
3136  }
3137
3138  protected ConceptMap parseConceptMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3139    ConceptMap res = new ConceptMap();
3140    parseDomainResourceAttributes(xpp, res);
3141    next(xpp);
3142    int eventType = nextNoWhitespace(xpp);
3143    while (eventType != XmlPullParser.END_TAG) {
3144      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3145        res.setUrlElement(parseUri(xpp));
3146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3147        res.setIdentifier(parseIdentifier(xpp));
3148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3149        res.setVersionElement(parseString(xpp));
3150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3151        res.setNameElement(parseString(xpp));
3152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3153        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL,
3154            new Enumerations.ConformanceResourceStatusEnumFactory()));
3155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
3156        res.setExperimentalElement(parseBoolean(xpp));
3157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
3158        res.setPublisherElement(parseString(xpp));
3159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
3160        res.getContact().add(parseConceptMapConceptMapContactComponent(xpp, res));
3161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3162        res.setDateElement(parseDateTime(xpp));
3163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3164        res.setDescriptionElement(parseString(xpp));
3165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
3166        res.getUseContext().add(parseCodeableConcept(xpp));
3167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
3168        res.setRequirementsElement(parseString(xpp));
3169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
3170        res.setCopyrightElement(parseString(xpp));
3171      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
3172        res.setSource(parseType("source", xpp));
3173      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
3174        res.setTarget(parseType("target", xpp));
3175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
3176        res.getElement().add(parseConceptMapSourceElementComponent(xpp, res));
3177      } else if (!parseDomainResourceContent(eventType, xpp, res))
3178        unknownContent(xpp);
3179      eventType = nextNoWhitespace(xpp);
3180    }
3181    next(xpp);
3182    parseElementClose(res);
3183    return res;
3184  }
3185
3186  protected ConceptMap.ConceptMapContactComponent parseConceptMapConceptMapContactComponent(XmlPullParser xpp,
3187      ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
3188    ConceptMap.ConceptMapContactComponent res = new ConceptMap.ConceptMapContactComponent();
3189    parseBackboneAttributes(xpp, res);
3190    next(xpp);
3191    int eventType = nextNoWhitespace(xpp);
3192    while (eventType != XmlPullParser.END_TAG) {
3193      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3194        res.setNameElement(parseString(xpp));
3195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
3196        res.getTelecom().add(parseContactPoint(xpp));
3197      } else if (!parseBackboneContent(eventType, xpp, res))
3198        unknownContent(xpp);
3199      eventType = nextNoWhitespace(xpp);
3200    }
3201    next(xpp);
3202    parseElementClose(res);
3203    return res;
3204  }
3205
3206  protected ConceptMap.SourceElementComponent parseConceptMapSourceElementComponent(XmlPullParser xpp, ConceptMap owner)
3207      throws XmlPullParserException, IOException, FHIRFormatError {
3208    ConceptMap.SourceElementComponent res = new ConceptMap.SourceElementComponent();
3209    parseBackboneAttributes(xpp, res);
3210    next(xpp);
3211    int eventType = nextNoWhitespace(xpp);
3212    while (eventType != XmlPullParser.END_TAG) {
3213      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
3214        res.setCodeSystemElement(parseUri(xpp));
3215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3216        res.setCodeElement(parseCode(xpp));
3217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
3218        res.getTarget().add(parseConceptMapTargetElementComponent(xpp, owner));
3219      } else if (!parseBackboneContent(eventType, xpp, res))
3220        unknownContent(xpp);
3221      eventType = nextNoWhitespace(xpp);
3222    }
3223    next(xpp);
3224    parseElementClose(res);
3225    return res;
3226  }
3227
3228  protected ConceptMap.TargetElementComponent parseConceptMapTargetElementComponent(XmlPullParser xpp, ConceptMap owner)
3229      throws XmlPullParserException, IOException, FHIRFormatError {
3230    ConceptMap.TargetElementComponent res = new ConceptMap.TargetElementComponent();
3231    parseBackboneAttributes(xpp, res);
3232    next(xpp);
3233    int eventType = nextNoWhitespace(xpp);
3234    while (eventType != XmlPullParser.END_TAG) {
3235      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
3236        res.setCodeSystemElement(parseUri(xpp));
3237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3238        res.setCodeElement(parseCode(xpp));
3239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("equivalence")) {
3240        res.setEquivalenceElement(parseEnumeration(xpp, Enumerations.ConceptMapEquivalence.NULL,
3241            new Enumerations.ConceptMapEquivalenceEnumFactory()));
3242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comments")) {
3243        res.setCommentsElement(parseString(xpp));
3244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
3245        res.getDependsOn().add(parseConceptMapOtherElementComponent(xpp, owner));
3246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
3247        res.getProduct().add(parseConceptMapOtherElementComponent(xpp, owner));
3248      } else if (!parseBackboneContent(eventType, xpp, res))
3249        unknownContent(xpp);
3250      eventType = nextNoWhitespace(xpp);
3251    }
3252    next(xpp);
3253    parseElementClose(res);
3254    return res;
3255  }
3256
3257  protected ConceptMap.OtherElementComponent parseConceptMapOtherElementComponent(XmlPullParser xpp, ConceptMap owner)
3258      throws XmlPullParserException, IOException, FHIRFormatError {
3259    ConceptMap.OtherElementComponent res = new ConceptMap.OtherElementComponent();
3260    parseBackboneAttributes(xpp, res);
3261    next(xpp);
3262    int eventType = nextNoWhitespace(xpp);
3263    while (eventType != XmlPullParser.END_TAG) {
3264      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
3265        res.setElementElement(parseUri(xpp));
3266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
3267        res.setCodeSystemElement(parseUri(xpp));
3268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3269        res.setCodeElement(parseString(xpp));
3270      } else if (!parseBackboneContent(eventType, xpp, res))
3271        unknownContent(xpp);
3272      eventType = nextNoWhitespace(xpp);
3273    }
3274    next(xpp);
3275    parseElementClose(res);
3276    return res;
3277  }
3278
3279  protected Condition parseCondition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3280    Condition res = new Condition();
3281    parseDomainResourceAttributes(xpp, res);
3282    next(xpp);
3283    int eventType = nextNoWhitespace(xpp);
3284    while (eventType != XmlPullParser.END_TAG) {
3285      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3286        res.getIdentifier().add(parseIdentifier(xpp));
3287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3288        res.setPatient(parseReference(xpp));
3289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3290        res.setEncounter(parseReference(xpp));
3291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
3292        res.setAsserter(parseReference(xpp));
3293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateRecorded")) {
3294        res.setDateRecordedElement(parseDate(xpp));
3295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3296        res.setCode(parseCodeableConcept(xpp));
3297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3298        res.setCategory(parseCodeableConcept(xpp));
3299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
3300        res.setClinicalStatusElement(parseCode(xpp));
3301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
3302        res.setVerificationStatusElement(parseEnumeration(xpp, Condition.ConditionVerificationStatus.NULL,
3303            new Condition.ConditionVerificationStatusEnumFactory()));
3304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
3305        res.setSeverity(parseCodeableConcept(xpp));
3306      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
3307        res.setOnset(parseType("onset", xpp));
3308      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "abatement")) {
3309        res.setAbatement(parseType("abatement", xpp));
3310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stage")) {
3311        res.setStage(parseConditionConditionStageComponent(xpp, res));
3312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
3313        res.getEvidence().add(parseConditionConditionEvidenceComponent(xpp, res));
3314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
3315        res.getBodySite().add(parseCodeableConcept(xpp));
3316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
3317        res.setNotesElement(parseString(xpp));
3318      } else if (!parseDomainResourceContent(eventType, xpp, res))
3319        unknownContent(xpp);
3320      eventType = nextNoWhitespace(xpp);
3321    }
3322    next(xpp);
3323    parseElementClose(res);
3324    return res;
3325  }
3326
3327  protected Condition.ConditionStageComponent parseConditionConditionStageComponent(XmlPullParser xpp, Condition owner)
3328      throws XmlPullParserException, IOException, FHIRFormatError {
3329    Condition.ConditionStageComponent res = new Condition.ConditionStageComponent();
3330    parseBackboneAttributes(xpp, res);
3331    next(xpp);
3332    int eventType = nextNoWhitespace(xpp);
3333    while (eventType != XmlPullParser.END_TAG) {
3334      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
3335        res.setSummary(parseCodeableConcept(xpp));
3336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
3337        res.getAssessment().add(parseReference(xpp));
3338      } else if (!parseBackboneContent(eventType, xpp, res))
3339        unknownContent(xpp);
3340      eventType = nextNoWhitespace(xpp);
3341    }
3342    next(xpp);
3343    parseElementClose(res);
3344    return res;
3345  }
3346
3347  protected Condition.ConditionEvidenceComponent parseConditionConditionEvidenceComponent(XmlPullParser xpp,
3348      Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
3349    Condition.ConditionEvidenceComponent res = new Condition.ConditionEvidenceComponent();
3350    parseBackboneAttributes(xpp, res);
3351    next(xpp);
3352    int eventType = nextNoWhitespace(xpp);
3353    while (eventType != XmlPullParser.END_TAG) {
3354      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3355        res.setCode(parseCodeableConcept(xpp));
3356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3357        res.getDetail().add(parseReference(xpp));
3358      } else if (!parseBackboneContent(eventType, xpp, res))
3359        unknownContent(xpp);
3360      eventType = nextNoWhitespace(xpp);
3361    }
3362    next(xpp);
3363    parseElementClose(res);
3364    return res;
3365  }
3366
3367  protected Conformance parseConformance(XmlPullParser xpp)
3368      throws XmlPullParserException, IOException, FHIRFormatError {
3369    Conformance res = new Conformance();
3370    parseDomainResourceAttributes(xpp, res);
3371    next(xpp);
3372    int eventType = nextNoWhitespace(xpp);
3373    while (eventType != XmlPullParser.END_TAG) {
3374      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3375        res.setUrlElement(parseUri(xpp));
3376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3377        res.setVersionElement(parseString(xpp));
3378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3379        res.setNameElement(parseString(xpp));
3380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3381        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL,
3382            new Enumerations.ConformanceResourceStatusEnumFactory()));
3383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
3384        res.setExperimentalElement(parseBoolean(xpp));
3385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
3386        res.setPublisherElement(parseString(xpp));
3387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
3388        res.getContact().add(parseConformanceConformanceContactComponent(xpp, res));
3389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3390        res.setDateElement(parseDateTime(xpp));
3391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3392        res.setDescriptionElement(parseString(xpp));
3393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
3394        res.setRequirementsElement(parseString(xpp));
3395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
3396        res.setCopyrightElement(parseString(xpp));
3397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
3398        res.setKindElement(parseEnumeration(xpp, Conformance.ConformanceStatementKind.NULL,
3399            new Conformance.ConformanceStatementKindEnumFactory()));
3400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
3401        res.setSoftware(parseConformanceConformanceSoftwareComponent(xpp, res));
3402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
3403        res.setImplementation(parseConformanceConformanceImplementationComponent(xpp, res));
3404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
3405        res.setFhirVersionElement(parseId(xpp));
3406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("acceptUnknown")) {
3407        res.setAcceptUnknownElement(parseEnumeration(xpp, Conformance.UnknownContentCode.NULL,
3408            new Conformance.UnknownContentCodeEnumFactory()));
3409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
3410        res.getFormat().add(parseCode(xpp));
3411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3412        res.getProfile().add(parseReference(xpp));
3413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rest")) {
3414        res.getRest().add(parseConformanceConformanceRestComponent(xpp, res));
3415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("messaging")) {
3416        res.getMessaging().add(parseConformanceConformanceMessagingComponent(xpp, res));
3417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
3418        res.getDocument().add(parseConformanceConformanceDocumentComponent(xpp, res));
3419      } else if (!parseDomainResourceContent(eventType, xpp, res))
3420        unknownContent(xpp);
3421      eventType = nextNoWhitespace(xpp);
3422    }
3423    next(xpp);
3424    parseElementClose(res);
3425    return res;
3426  }
3427
3428  protected Conformance.ConformanceContactComponent parseConformanceConformanceContactComponent(XmlPullParser xpp,
3429      Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3430    Conformance.ConformanceContactComponent res = new Conformance.ConformanceContactComponent();
3431    parseBackboneAttributes(xpp, res);
3432    next(xpp);
3433    int eventType = nextNoWhitespace(xpp);
3434    while (eventType != XmlPullParser.END_TAG) {
3435      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3436        res.setNameElement(parseString(xpp));
3437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
3438        res.getTelecom().add(parseContactPoint(xpp));
3439      } else if (!parseBackboneContent(eventType, xpp, res))
3440        unknownContent(xpp);
3441      eventType = nextNoWhitespace(xpp);
3442    }
3443    next(xpp);
3444    parseElementClose(res);
3445    return res;
3446  }
3447
3448  protected Conformance.ConformanceSoftwareComponent parseConformanceConformanceSoftwareComponent(XmlPullParser xpp,
3449      Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3450    Conformance.ConformanceSoftwareComponent res = new Conformance.ConformanceSoftwareComponent();
3451    parseBackboneAttributes(xpp, res);
3452    next(xpp);
3453    int eventType = nextNoWhitespace(xpp);
3454    while (eventType != XmlPullParser.END_TAG) {
3455      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3456        res.setNameElement(parseString(xpp));
3457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3458        res.setVersionElement(parseString(xpp));
3459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("releaseDate")) {
3460        res.setReleaseDateElement(parseDateTime(xpp));
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 Conformance.ConformanceImplementationComponent parseConformanceConformanceImplementationComponent(
3471      XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3472    Conformance.ConformanceImplementationComponent res = new Conformance.ConformanceImplementationComponent();
3473    parseBackboneAttributes(xpp, res);
3474    next(xpp);
3475    int eventType = nextNoWhitespace(xpp);
3476    while (eventType != XmlPullParser.END_TAG) {
3477      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3478        res.setDescriptionElement(parseString(xpp));
3479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3480        res.setUrlElement(parseUri(xpp));
3481      } else if (!parseBackboneContent(eventType, xpp, res))
3482        unknownContent(xpp);
3483      eventType = nextNoWhitespace(xpp);
3484    }
3485    next(xpp);
3486    parseElementClose(res);
3487    return res;
3488  }
3489
3490  protected Conformance.ConformanceRestComponent parseConformanceConformanceRestComponent(XmlPullParser xpp,
3491      Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3492    Conformance.ConformanceRestComponent res = new Conformance.ConformanceRestComponent();
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("mode")) {
3498        res.setModeElement(parseEnumeration(xpp, Conformance.RestfulConformanceMode.NULL,
3499            new Conformance.RestfulConformanceModeEnumFactory()));
3500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3501        res.setDocumentationElement(parseString(xpp));
3502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
3503        res.setSecurity(parseConformanceConformanceRestSecurityComponent(xpp, owner));
3504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3505        res.getResource().add(parseConformanceConformanceRestResourceComponent(xpp, owner));
3506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3507        res.getInteraction().add(parseConformanceSystemInteractionComponent(xpp, owner));
3508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transactionMode")) {
3509        res.setTransactionModeElement(
3510            parseEnumeration(xpp, Conformance.TransactionMode.NULL, new Conformance.TransactionModeEnumFactory()));
3511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3512        res.getSearchParam().add(parseConformanceConformanceRestResourceSearchParamComponent(xpp, owner));
3513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3514        res.getOperation().add(parseConformanceConformanceRestOperationComponent(xpp, owner));
3515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
3516        res.getCompartment().add(parseUri(xpp));
3517      } else if (!parseBackboneContent(eventType, xpp, res))
3518        unknownContent(xpp);
3519      eventType = nextNoWhitespace(xpp);
3520    }
3521    next(xpp);
3522    parseElementClose(res);
3523    return res;
3524  }
3525
3526  protected Conformance.ConformanceRestSecurityComponent parseConformanceConformanceRestSecurityComponent(
3527      XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3528    Conformance.ConformanceRestSecurityComponent res = new Conformance.ConformanceRestSecurityComponent();
3529    parseBackboneAttributes(xpp, res);
3530    next(xpp);
3531    int eventType = nextNoWhitespace(xpp);
3532    while (eventType != XmlPullParser.END_TAG) {
3533      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cors")) {
3534        res.setCorsElement(parseBoolean(xpp));
3535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3536        res.getService().add(parseCodeableConcept(xpp));
3537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3538        res.setDescriptionElement(parseString(xpp));
3539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certificate")) {
3540        res.getCertificate().add(parseConformanceConformanceRestSecurityCertificateComponent(xpp, owner));
3541      } else if (!parseBackboneContent(eventType, xpp, res))
3542        unknownContent(xpp);
3543      eventType = nextNoWhitespace(xpp);
3544    }
3545    next(xpp);
3546    parseElementClose(res);
3547    return res;
3548  }
3549
3550  protected Conformance.ConformanceRestSecurityCertificateComponent parseConformanceConformanceRestSecurityCertificateComponent(
3551      XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3552    Conformance.ConformanceRestSecurityCertificateComponent res = new Conformance.ConformanceRestSecurityCertificateComponent();
3553    parseBackboneAttributes(xpp, res);
3554    next(xpp);
3555    int eventType = nextNoWhitespace(xpp);
3556    while (eventType != XmlPullParser.END_TAG) {
3557      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3558        res.setTypeElement(parseCode(xpp));
3559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("blob")) {
3560        res.setBlobElement(parseBase64Binary(xpp));
3561      } else if (!parseBackboneContent(eventType, xpp, res))
3562        unknownContent(xpp);
3563      eventType = nextNoWhitespace(xpp);
3564    }
3565    next(xpp);
3566    parseElementClose(res);
3567    return res;
3568  }
3569
3570  protected Conformance.ConformanceRestResourceComponent parseConformanceConformanceRestResourceComponent(
3571      XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3572    Conformance.ConformanceRestResourceComponent res = new Conformance.ConformanceRestResourceComponent();
3573    parseBackboneAttributes(xpp, res);
3574    next(xpp);
3575    int eventType = nextNoWhitespace(xpp);
3576    while (eventType != XmlPullParser.END_TAG) {
3577      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3578        res.setTypeElement(parseCode(xpp));
3579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3580        res.setProfile(parseReference(xpp));
3581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3582        res.getInteraction().add(parseConformanceResourceInteractionComponent(xpp, owner));
3583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
3584        res.setVersioningElement(parseEnumeration(xpp, Conformance.ResourceVersionPolicy.NULL,
3585            new Conformance.ResourceVersionPolicyEnumFactory()));
3586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readHistory")) {
3587        res.setReadHistoryElement(parseBoolean(xpp));
3588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("updateCreate")) {
3589        res.setUpdateCreateElement(parseBoolean(xpp));
3590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalCreate")) {
3591        res.setConditionalCreateElement(parseBoolean(xpp));
3592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalUpdate")) {
3593        res.setConditionalUpdateElement(parseBoolean(xpp));
3594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalDelete")) {
3595        res.setConditionalDeleteElement(parseEnumeration(xpp, Conformance.ConditionalDeleteStatus.NULL,
3596            new Conformance.ConditionalDeleteStatusEnumFactory()));
3597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchInclude")) {
3598        res.getSearchInclude().add(parseString(xpp));
3599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchRevInclude")) {
3600        res.getSearchRevInclude().add(parseString(xpp));
3601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3602        res.getSearchParam().add(parseConformanceConformanceRestResourceSearchParamComponent(xpp, owner));
3603      } else if (!parseBackboneContent(eventType, xpp, res))
3604        unknownContent(xpp);
3605      eventType = nextNoWhitespace(xpp);
3606    }
3607    next(xpp);
3608    parseElementClose(res);
3609    return res;
3610  }
3611
3612  protected Conformance.ResourceInteractionComponent parseConformanceResourceInteractionComponent(XmlPullParser xpp,
3613      Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3614    Conformance.ResourceInteractionComponent res = new Conformance.ResourceInteractionComponent();
3615    parseBackboneAttributes(xpp, res);
3616    next(xpp);
3617    int eventType = nextNoWhitespace(xpp);
3618    while (eventType != XmlPullParser.END_TAG) {
3619      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3620        res.setCodeElement(parseEnumeration(xpp, Conformance.TypeRestfulInteraction.NULL,
3621            new Conformance.TypeRestfulInteractionEnumFactory()));
3622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3623        res.setDocumentationElement(parseString(xpp));
3624      } else if (!parseBackboneContent(eventType, xpp, res))
3625        unknownContent(xpp);
3626      eventType = nextNoWhitespace(xpp);
3627    }
3628    next(xpp);
3629    parseElementClose(res);
3630    return res;
3631  }
3632
3633  protected Conformance.ConformanceRestResourceSearchParamComponent parseConformanceConformanceRestResourceSearchParamComponent(
3634      XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3635    Conformance.ConformanceRestResourceSearchParamComponent res = new Conformance.ConformanceRestResourceSearchParamComponent();
3636    parseBackboneAttributes(xpp, res);
3637    next(xpp);
3638    int eventType = nextNoWhitespace(xpp);
3639    while (eventType != XmlPullParser.END_TAG) {
3640      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3641        res.setNameElement(parseString(xpp));
3642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3643        res.setDefinitionElement(parseUri(xpp));
3644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3645        res.setTypeElement(
3646            parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
3647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3648        res.setDocumentationElement(parseString(xpp));
3649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
3650        res.getTarget().add(parseCode(xpp));
3651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
3652        res.getModifier().add(parseEnumeration(xpp, Conformance.SearchModifierCode.NULL,
3653            new Conformance.SearchModifierCodeEnumFactory()));
3654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chain")) {
3655        res.getChain().add(parseString(xpp));
3656      } else if (!parseBackboneContent(eventType, xpp, res))
3657        unknownContent(xpp);
3658      eventType = nextNoWhitespace(xpp);
3659    }
3660    next(xpp);
3661    parseElementClose(res);
3662    return res;
3663  }
3664
3665  protected Conformance.SystemInteractionComponent parseConformanceSystemInteractionComponent(XmlPullParser xpp,
3666      Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3667    Conformance.SystemInteractionComponent res = new Conformance.SystemInteractionComponent();
3668    parseBackboneAttributes(xpp, res);
3669    next(xpp);
3670    int eventType = nextNoWhitespace(xpp);
3671    while (eventType != XmlPullParser.END_TAG) {
3672      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3673        res.setCodeElement(parseEnumeration(xpp, Conformance.SystemRestfulInteraction.NULL,
3674            new Conformance.SystemRestfulInteractionEnumFactory()));
3675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3676        res.setDocumentationElement(parseString(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 Conformance.ConformanceRestOperationComponent parseConformanceConformanceRestOperationComponent(
3687      XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3688    Conformance.ConformanceRestOperationComponent res = new Conformance.ConformanceRestOperationComponent();
3689    parseBackboneAttributes(xpp, res);
3690    next(xpp);
3691    int eventType = nextNoWhitespace(xpp);
3692    while (eventType != XmlPullParser.END_TAG) {
3693      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3694        res.setNameElement(parseString(xpp));
3695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3696        res.setDefinition(parseReference(xpp));
3697      } else if (!parseBackboneContent(eventType, xpp, res))
3698        unknownContent(xpp);
3699      eventType = nextNoWhitespace(xpp);
3700    }
3701    next(xpp);
3702    parseElementClose(res);
3703    return res;
3704  }
3705
3706  protected Conformance.ConformanceMessagingComponent parseConformanceConformanceMessagingComponent(XmlPullParser xpp,
3707      Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3708    Conformance.ConformanceMessagingComponent res = new Conformance.ConformanceMessagingComponent();
3709    parseBackboneAttributes(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("endpoint")) {
3714        res.getEndpoint().add(parseConformanceConformanceMessagingEndpointComponent(xpp, owner));
3715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reliableCache")) {
3716        res.setReliableCacheElement(parseUnsignedInt(xpp));
3717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3718        res.setDocumentationElement(parseString(xpp));
3719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
3720        res.getEvent().add(parseConformanceConformanceMessagingEventComponent(xpp, owner));
3721      } else if (!parseBackboneContent(eventType, xpp, res))
3722        unknownContent(xpp);
3723      eventType = nextNoWhitespace(xpp);
3724    }
3725    next(xpp);
3726    parseElementClose(res);
3727    return res;
3728  }
3729
3730  protected Conformance.ConformanceMessagingEndpointComponent parseConformanceConformanceMessagingEndpointComponent(
3731      XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3732    Conformance.ConformanceMessagingEndpointComponent res = new Conformance.ConformanceMessagingEndpointComponent();
3733    parseBackboneAttributes(xpp, res);
3734    next(xpp);
3735    int eventType = nextNoWhitespace(xpp);
3736    while (eventType != XmlPullParser.END_TAG) {
3737      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
3738        res.setProtocol(parseCoding(xpp));
3739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
3740        res.setAddressElement(parseUri(xpp));
3741      } else if (!parseBackboneContent(eventType, xpp, res))
3742        unknownContent(xpp);
3743      eventType = nextNoWhitespace(xpp);
3744    }
3745    next(xpp);
3746    parseElementClose(res);
3747    return res;
3748  }
3749
3750  protected Conformance.ConformanceMessagingEventComponent parseConformanceConformanceMessagingEventComponent(
3751      XmlPullParser xpp, Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3752    Conformance.ConformanceMessagingEventComponent res = new Conformance.ConformanceMessagingEventComponent();
3753    parseBackboneAttributes(xpp, res);
3754    next(xpp);
3755    int eventType = nextNoWhitespace(xpp);
3756    while (eventType != XmlPullParser.END_TAG) {
3757      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3758        res.setCode(parseCoding(xpp));
3759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3760        res.setCategoryElement(parseEnumeration(xpp, Conformance.MessageSignificanceCategory.NULL,
3761            new Conformance.MessageSignificanceCategoryEnumFactory()));
3762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3763        res.setModeElement(parseEnumeration(xpp, Conformance.ConformanceEventMode.NULL,
3764            new Conformance.ConformanceEventModeEnumFactory()));
3765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
3766        res.setFocusElement(parseCode(xpp));
3767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3768        res.setRequest(parseReference(xpp));
3769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
3770        res.setResponse(parseReference(xpp));
3771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3772        res.setDocumentationElement(parseString(xpp));
3773      } else if (!parseBackboneContent(eventType, xpp, res))
3774        unknownContent(xpp);
3775      eventType = nextNoWhitespace(xpp);
3776    }
3777    next(xpp);
3778    parseElementClose(res);
3779    return res;
3780  }
3781
3782  protected Conformance.ConformanceDocumentComponent parseConformanceConformanceDocumentComponent(XmlPullParser xpp,
3783      Conformance owner) throws XmlPullParserException, IOException, FHIRFormatError {
3784    Conformance.ConformanceDocumentComponent res = new Conformance.ConformanceDocumentComponent();
3785    parseBackboneAttributes(xpp, res);
3786    next(xpp);
3787    int eventType = nextNoWhitespace(xpp);
3788    while (eventType != XmlPullParser.END_TAG) {
3789      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3790        res.setModeElement(
3791            parseEnumeration(xpp, Conformance.DocumentMode.NULL, new Conformance.DocumentModeEnumFactory()));
3792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3793        res.setDocumentationElement(parseString(xpp));
3794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3795        res.setProfile(parseReference(xpp));
3796      } else if (!parseBackboneContent(eventType, xpp, res))
3797        unknownContent(xpp);
3798      eventType = nextNoWhitespace(xpp);
3799    }
3800    next(xpp);
3801    parseElementClose(res);
3802    return res;
3803  }
3804
3805  protected Contract parseContract(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3806    Contract res = new Contract();
3807    parseDomainResourceAttributes(xpp, res);
3808    next(xpp);
3809    int eventType = nextNoWhitespace(xpp);
3810    while (eventType != XmlPullParser.END_TAG) {
3811      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3812        res.setIdentifier(parseIdentifier(xpp));
3813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
3814        res.setIssuedElement(parseDateTime(xpp));
3815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
3816        res.setApplies(parsePeriod(xpp));
3817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3818        res.getSubject().add(parseReference(xpp));
3819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
3820        res.getAuthority().add(parseReference(xpp));
3821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
3822        res.getDomain().add(parseReference(xpp));
3823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3824        res.setType(parseCodeableConcept(xpp));
3825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
3826        res.getSubType().add(parseCodeableConcept(xpp));
3827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
3828        res.getAction().add(parseCodeableConcept(xpp));
3829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionReason")) {
3830        res.getActionReason().add(parseCodeableConcept(xpp));
3831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
3832        res.getActor().add(parseContractActorComponent(xpp, res));
3833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
3834        res.getValuedItem().add(parseContractValuedItemComponent(xpp, res));
3835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signer")) {
3836        res.getSigner().add(parseContractSignatoryComponent(xpp, res));
3837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
3838        res.getTerm().add(parseContractTermComponent(xpp, res));
3839      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "binding")) {
3840        res.setBinding(parseType("binding", xpp));
3841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("friendly")) {
3842        res.getFriendly().add(parseContractFriendlyLanguageComponent(xpp, res));
3843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legal")) {
3844        res.getLegal().add(parseContractLegalLanguageComponent(xpp, res));
3845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
3846        res.getRule().add(parseContractComputableLanguageComponent(xpp, res));
3847      } else if (!parseDomainResourceContent(eventType, xpp, res))
3848        unknownContent(xpp);
3849      eventType = nextNoWhitespace(xpp);
3850    }
3851    next(xpp);
3852    parseElementClose(res);
3853    return res;
3854  }
3855
3856  protected Contract.ActorComponent parseContractActorComponent(XmlPullParser xpp, Contract owner)
3857      throws XmlPullParserException, IOException, FHIRFormatError {
3858    Contract.ActorComponent res = new Contract.ActorComponent();
3859    parseBackboneAttributes(xpp, res);
3860    next(xpp);
3861    int eventType = nextNoWhitespace(xpp);
3862    while (eventType != XmlPullParser.END_TAG) {
3863      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
3864        res.setEntity(parseReference(xpp));
3865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3866        res.getRole().add(parseCodeableConcept(xpp));
3867      } else if (!parseBackboneContent(eventType, xpp, res))
3868        unknownContent(xpp);
3869      eventType = nextNoWhitespace(xpp);
3870    }
3871    next(xpp);
3872    parseElementClose(res);
3873    return res;
3874  }
3875
3876  protected Contract.ValuedItemComponent parseContractValuedItemComponent(XmlPullParser xpp, Contract owner)
3877      throws XmlPullParserException, IOException, FHIRFormatError {
3878    Contract.ValuedItemComponent res = new Contract.ValuedItemComponent();
3879    parseBackboneAttributes(xpp, res);
3880    next(xpp);
3881    int eventType = nextNoWhitespace(xpp);
3882    while (eventType != XmlPullParser.END_TAG) {
3883      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
3884        res.setEntity(parseType("entity", xpp));
3885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3886        res.setIdentifier(parseIdentifier(xpp));
3887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
3888        res.setEffectiveTimeElement(parseDateTime(xpp));
3889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3890        res.setQuantity(parseSimpleQuantity(xpp));
3891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
3892        res.setUnitPrice(parseMoney(xpp));
3893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
3894        res.setFactorElement(parseDecimal(xpp));
3895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
3896        res.setPointsElement(parseDecimal(xpp));
3897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
3898        res.setNet(parseMoney(xpp));
3899      } else if (!parseBackboneContent(eventType, xpp, res))
3900        unknownContent(xpp);
3901      eventType = nextNoWhitespace(xpp);
3902    }
3903    next(xpp);
3904    parseElementClose(res);
3905    return res;
3906  }
3907
3908  protected Contract.SignatoryComponent parseContractSignatoryComponent(XmlPullParser xpp, Contract owner)
3909      throws XmlPullParserException, IOException, FHIRFormatError {
3910    Contract.SignatoryComponent res = new Contract.SignatoryComponent();
3911    parseBackboneAttributes(xpp, res);
3912    next(xpp);
3913    int eventType = nextNoWhitespace(xpp);
3914    while (eventType != XmlPullParser.END_TAG) {
3915      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3916        res.setType(parseCoding(xpp));
3917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
3918        res.setParty(parseReference(xpp));
3919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
3920        res.setSignatureElement(parseString(xpp));
3921      } else if (!parseBackboneContent(eventType, xpp, res))
3922        unknownContent(xpp);
3923      eventType = nextNoWhitespace(xpp);
3924    }
3925    next(xpp);
3926    parseElementClose(res);
3927    return res;
3928  }
3929
3930  protected Contract.TermComponent parseContractTermComponent(XmlPullParser xpp, Contract owner)
3931      throws XmlPullParserException, IOException, FHIRFormatError {
3932    Contract.TermComponent res = new Contract.TermComponent();
3933    parseBackboneAttributes(xpp, res);
3934    next(xpp);
3935    int eventType = nextNoWhitespace(xpp);
3936    while (eventType != XmlPullParser.END_TAG) {
3937      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3938        res.setIdentifier(parseIdentifier(xpp));
3939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
3940        res.setIssuedElement(parseDateTime(xpp));
3941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
3942        res.setApplies(parsePeriod(xpp));
3943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3944        res.setType(parseCodeableConcept(xpp));
3945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
3946        res.setSubType(parseCodeableConcept(xpp));
3947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3948        res.setSubject(parseReference(xpp));
3949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
3950        res.getAction().add(parseCodeableConcept(xpp));
3951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionReason")) {
3952        res.getActionReason().add(parseCodeableConcept(xpp));
3953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
3954        res.getActor().add(parseContractTermActorComponent(xpp, owner));
3955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
3956        res.setTextElement(parseString(xpp));
3957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
3958        res.getValuedItem().add(parseContractTermValuedItemComponent(xpp, owner));
3959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
3960        res.getGroup().add(parseContractTermComponent(xpp, owner));
3961      } else if (!parseBackboneContent(eventType, xpp, res))
3962        unknownContent(xpp);
3963      eventType = nextNoWhitespace(xpp);
3964    }
3965    next(xpp);
3966    parseElementClose(res);
3967    return res;
3968  }
3969
3970  protected Contract.TermActorComponent parseContractTermActorComponent(XmlPullParser xpp, Contract owner)
3971      throws XmlPullParserException, IOException, FHIRFormatError {
3972    Contract.TermActorComponent res = new Contract.TermActorComponent();
3973    parseBackboneAttributes(xpp, res);
3974    next(xpp);
3975    int eventType = nextNoWhitespace(xpp);
3976    while (eventType != XmlPullParser.END_TAG) {
3977      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
3978        res.setEntity(parseReference(xpp));
3979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3980        res.getRole().add(parseCodeableConcept(xpp));
3981      } else if (!parseBackboneContent(eventType, xpp, res))
3982        unknownContent(xpp);
3983      eventType = nextNoWhitespace(xpp);
3984    }
3985    next(xpp);
3986    parseElementClose(res);
3987    return res;
3988  }
3989
3990  protected Contract.TermValuedItemComponent parseContractTermValuedItemComponent(XmlPullParser xpp, Contract owner)
3991      throws XmlPullParserException, IOException, FHIRFormatError {
3992    Contract.TermValuedItemComponent res = new Contract.TermValuedItemComponent();
3993    parseBackboneAttributes(xpp, res);
3994    next(xpp);
3995    int eventType = nextNoWhitespace(xpp);
3996    while (eventType != XmlPullParser.END_TAG) {
3997      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
3998        res.setEntity(parseType("entity", xpp));
3999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4000        res.setIdentifier(parseIdentifier(xpp));
4001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
4002        res.setEffectiveTimeElement(parseDateTime(xpp));
4003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4004        res.setQuantity(parseSimpleQuantity(xpp));
4005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4006        res.setUnitPrice(parseMoney(xpp));
4007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4008        res.setFactorElement(parseDecimal(xpp));
4009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
4010        res.setPointsElement(parseDecimal(xpp));
4011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4012        res.setNet(parseMoney(xpp));
4013      } else if (!parseBackboneContent(eventType, xpp, res))
4014        unknownContent(xpp);
4015      eventType = nextNoWhitespace(xpp);
4016    }
4017    next(xpp);
4018    parseElementClose(res);
4019    return res;
4020  }
4021
4022  protected Contract.FriendlyLanguageComponent parseContractFriendlyLanguageComponent(XmlPullParser xpp, Contract owner)
4023      throws XmlPullParserException, IOException, FHIRFormatError {
4024    Contract.FriendlyLanguageComponent res = new Contract.FriendlyLanguageComponent();
4025    parseBackboneAttributes(xpp, res);
4026    next(xpp);
4027    int eventType = nextNoWhitespace(xpp);
4028    while (eventType != XmlPullParser.END_TAG) {
4029      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
4030        res.setContent(parseType("content", xpp));
4031      } else if (!parseBackboneContent(eventType, xpp, res))
4032        unknownContent(xpp);
4033      eventType = nextNoWhitespace(xpp);
4034    }
4035    next(xpp);
4036    parseElementClose(res);
4037    return res;
4038  }
4039
4040  protected Contract.LegalLanguageComponent parseContractLegalLanguageComponent(XmlPullParser xpp, Contract owner)
4041      throws XmlPullParserException, IOException, FHIRFormatError {
4042    Contract.LegalLanguageComponent res = new Contract.LegalLanguageComponent();
4043    parseBackboneAttributes(xpp, res);
4044    next(xpp);
4045    int eventType = nextNoWhitespace(xpp);
4046    while (eventType != XmlPullParser.END_TAG) {
4047      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
4048        res.setContent(parseType("content", xpp));
4049      } else if (!parseBackboneContent(eventType, xpp, res))
4050        unknownContent(xpp);
4051      eventType = nextNoWhitespace(xpp);
4052    }
4053    next(xpp);
4054    parseElementClose(res);
4055    return res;
4056  }
4057
4058  protected Contract.ComputableLanguageComponent parseContractComputableLanguageComponent(XmlPullParser xpp,
4059      Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
4060    Contract.ComputableLanguageComponent res = new Contract.ComputableLanguageComponent();
4061    parseBackboneAttributes(xpp, res);
4062    next(xpp);
4063    int eventType = nextNoWhitespace(xpp);
4064    while (eventType != XmlPullParser.END_TAG) {
4065      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
4066        res.setContent(parseType("content", xpp));
4067      } else if (!parseBackboneContent(eventType, xpp, res))
4068        unknownContent(xpp);
4069      eventType = nextNoWhitespace(xpp);
4070    }
4071    next(xpp);
4072    parseElementClose(res);
4073    return res;
4074  }
4075
4076  protected Coverage parseCoverage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4077    Coverage res = new Coverage();
4078    parseDomainResourceAttributes(xpp, res);
4079    next(xpp);
4080    int eventType = nextNoWhitespace(xpp);
4081    while (eventType != XmlPullParser.END_TAG) {
4082      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
4083        res.setIssuer(parseReference(xpp));
4084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bin")) {
4085        res.setBin(parseIdentifier(xpp));
4086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4087        res.setPeriod(parsePeriod(xpp));
4088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4089        res.setType(parseCoding(xpp));
4090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriberId")) {
4091        res.setSubscriberId(parseIdentifier(xpp));
4092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4093        res.getIdentifier().add(parseIdentifier(xpp));
4094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
4095        res.setGroupElement(parseString(xpp));
4096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
4097        res.setPlanElement(parseString(xpp));
4098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subPlan")) {
4099        res.setSubPlanElement(parseString(xpp));
4100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
4101        res.setDependentElement(parsePositiveInt(xpp));
4102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4103        res.setSequenceElement(parsePositiveInt(xpp));
4104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriber")) {
4105        res.setSubscriber(parseReference(xpp));
4106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
4107        res.setNetwork(parseIdentifier(xpp));
4108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
4109        res.getContract().add(parseReference(xpp));
4110      } else if (!parseDomainResourceContent(eventType, xpp, res))
4111        unknownContent(xpp);
4112      eventType = nextNoWhitespace(xpp);
4113    }
4114    next(xpp);
4115    parseElementClose(res);
4116    return res;
4117  }
4118
4119  protected DataElement parseDataElement(XmlPullParser xpp)
4120      throws XmlPullParserException, IOException, FHIRFormatError {
4121    DataElement res = new DataElement();
4122    parseDomainResourceAttributes(xpp, res);
4123    next(xpp);
4124    int eventType = nextNoWhitespace(xpp);
4125    while (eventType != XmlPullParser.END_TAG) {
4126      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4127        res.setUrlElement(parseUri(xpp));
4128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4129        res.getIdentifier().add(parseIdentifier(xpp));
4130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4131        res.setVersionElement(parseString(xpp));
4132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4133        res.setNameElement(parseString(xpp));
4134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4135        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL,
4136            new Enumerations.ConformanceResourceStatusEnumFactory()));
4137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
4138        res.setExperimentalElement(parseBoolean(xpp));
4139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
4140        res.setPublisherElement(parseString(xpp));
4141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4142        res.getContact().add(parseDataElementDataElementContactComponent(xpp, res));
4143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4144        res.setDateElement(parseDateTime(xpp));
4145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
4146        res.getUseContext().add(parseCodeableConcept(xpp));
4147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4148        res.setCopyrightElement(parseString(xpp));
4149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stringency")) {
4150        res.setStringencyElement(parseEnumeration(xpp, DataElement.DataElementStringency.NULL,
4151            new DataElement.DataElementStringencyEnumFactory()));
4152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
4153        res.getMapping().add(parseDataElementDataElementMappingComponent(xpp, res));
4154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
4155        res.getElement().add(parseElementDefinition(xpp));
4156      } else if (!parseDomainResourceContent(eventType, xpp, res))
4157        unknownContent(xpp);
4158      eventType = nextNoWhitespace(xpp);
4159    }
4160    next(xpp);
4161    parseElementClose(res);
4162    return res;
4163  }
4164
4165  protected DataElement.DataElementContactComponent parseDataElementDataElementContactComponent(XmlPullParser xpp,
4166      DataElement owner) throws XmlPullParserException, IOException, FHIRFormatError {
4167    DataElement.DataElementContactComponent res = new DataElement.DataElementContactComponent();
4168    parseBackboneAttributes(xpp, res);
4169    next(xpp);
4170    int eventType = nextNoWhitespace(xpp);
4171    while (eventType != XmlPullParser.END_TAG) {
4172      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4173        res.setNameElement(parseString(xpp));
4174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
4175        res.getTelecom().add(parseContactPoint(xpp));
4176      } else if (!parseBackboneContent(eventType, xpp, res))
4177        unknownContent(xpp);
4178      eventType = nextNoWhitespace(xpp);
4179    }
4180    next(xpp);
4181    parseElementClose(res);
4182    return res;
4183  }
4184
4185  protected DataElement.DataElementMappingComponent parseDataElementDataElementMappingComponent(XmlPullParser xpp,
4186      DataElement owner) throws XmlPullParserException, IOException, FHIRFormatError {
4187    DataElement.DataElementMappingComponent res = new DataElement.DataElementMappingComponent();
4188    parseBackboneAttributes(xpp, res);
4189    next(xpp);
4190    int eventType = nextNoWhitespace(xpp);
4191    while (eventType != XmlPullParser.END_TAG) {
4192      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
4193        res.setIdentityElement(parseId(xpp));
4194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
4195        res.setUriElement(parseUri(xpp));
4196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4197        res.setNameElement(parseString(xpp));
4198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comments")) {
4199        res.setCommentsElement(parseString(xpp));
4200      } else if (!parseBackboneContent(eventType, xpp, res))
4201        unknownContent(xpp);
4202      eventType = nextNoWhitespace(xpp);
4203    }
4204    next(xpp);
4205    parseElementClose(res);
4206    return res;
4207  }
4208
4209  protected DetectedIssue parseDetectedIssue(XmlPullParser xpp)
4210      throws XmlPullParserException, IOException, FHIRFormatError {
4211    DetectedIssue res = new DetectedIssue();
4212    parseDomainResourceAttributes(xpp, res);
4213    next(xpp);
4214    int eventType = nextNoWhitespace(xpp);
4215    while (eventType != XmlPullParser.END_TAG) {
4216      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4217        res.setPatient(parseReference(xpp));
4218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4219        res.setCategory(parseCodeableConcept(xpp));
4220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
4221        res.setSeverityElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueSeverity.NULL,
4222            new DetectedIssue.DetectedIssueSeverityEnumFactory()));
4223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicated")) {
4224        res.getImplicated().add(parseReference(xpp));
4225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4226        res.setDetailElement(parseString(xpp));
4227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4228        res.setDateElement(parseDateTime(xpp));
4229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
4230        res.setAuthor(parseReference(xpp));
4231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4232        res.setIdentifier(parseIdentifier(xpp));
4233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
4234        res.setReferenceElement(parseUri(xpp));
4235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
4236        res.getMitigation().add(parseDetectedIssueDetectedIssueMitigationComponent(xpp, res));
4237      } else if (!parseDomainResourceContent(eventType, xpp, res))
4238        unknownContent(xpp);
4239      eventType = nextNoWhitespace(xpp);
4240    }
4241    next(xpp);
4242    parseElementClose(res);
4243    return res;
4244  }
4245
4246  protected DetectedIssue.DetectedIssueMitigationComponent parseDetectedIssueDetectedIssueMitigationComponent(
4247      XmlPullParser xpp, DetectedIssue owner) throws XmlPullParserException, IOException, FHIRFormatError {
4248    DetectedIssue.DetectedIssueMitigationComponent res = new DetectedIssue.DetectedIssueMitigationComponent();
4249    parseBackboneAttributes(xpp, res);
4250    next(xpp);
4251    int eventType = nextNoWhitespace(xpp);
4252    while (eventType != XmlPullParser.END_TAG) {
4253      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
4254        res.setAction(parseCodeableConcept(xpp));
4255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4256        res.setDateElement(parseDateTime(xpp));
4257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
4258        res.setAuthor(parseReference(xpp));
4259      } else if (!parseBackboneContent(eventType, xpp, res))
4260        unknownContent(xpp);
4261      eventType = nextNoWhitespace(xpp);
4262    }
4263    next(xpp);
4264    parseElementClose(res);
4265    return res;
4266  }
4267
4268  protected Device parseDevice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4269    Device res = new Device();
4270    parseDomainResourceAttributes(xpp, res);
4271    next(xpp);
4272    int eventType = nextNoWhitespace(xpp);
4273    while (eventType != XmlPullParser.END_TAG) {
4274      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4275        res.getIdentifier().add(parseIdentifier(xpp));
4276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4277        res.setType(parseCodeableConcept(xpp));
4278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4279        res.getNote().add(parseAnnotation(xpp));
4280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4281        res.setStatusElement(parseEnumeration(xpp, Device.DeviceStatus.NULL, new Device.DeviceStatusEnumFactory()));
4282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
4283        res.setManufacturerElement(parseString(xpp));
4284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("model")) {
4285        res.setModelElement(parseString(xpp));
4286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4287        res.setVersionElement(parseString(xpp));
4288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
4289        res.setManufactureDateElement(parseDateTime(xpp));
4290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
4291        res.setExpiryElement(parseDateTime(xpp));
4292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4293        res.setUdiElement(parseString(xpp));
4294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
4295        res.setLotNumberElement(parseString(xpp));
4296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
4297        res.setOwner(parseReference(xpp));
4298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
4299        res.setLocation(parseReference(xpp));
4300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4301        res.setPatient(parseReference(xpp));
4302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4303        res.getContact().add(parseContactPoint(xpp));
4304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4305        res.setUrlElement(parseUri(xpp));
4306      } else if (!parseDomainResourceContent(eventType, xpp, res))
4307        unknownContent(xpp);
4308      eventType = nextNoWhitespace(xpp);
4309    }
4310    next(xpp);
4311    parseElementClose(res);
4312    return res;
4313  }
4314
4315  protected DeviceComponent parseDeviceComponent(XmlPullParser xpp)
4316      throws XmlPullParserException, IOException, FHIRFormatError {
4317    DeviceComponent res = new DeviceComponent();
4318    parseDomainResourceAttributes(xpp, res);
4319    next(xpp);
4320    int eventType = nextNoWhitespace(xpp);
4321    while (eventType != XmlPullParser.END_TAG) {
4322      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4323        res.setType(parseCodeableConcept(xpp));
4324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4325        res.setIdentifier(parseIdentifier(xpp));
4326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastSystemChange")) {
4327        res.setLastSystemChangeElement(parseInstant(xpp));
4328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
4329        res.setSource(parseReference(xpp));
4330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
4331        res.setParent(parseReference(xpp));
4332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
4333        res.getOperationalStatus().add(parseCodeableConcept(xpp));
4334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterGroup")) {
4335        res.setParameterGroup(parseCodeableConcept(xpp));
4336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPrinciple")) {
4337        res.setMeasurementPrincipleElement(parseEnumeration(xpp, DeviceComponent.MeasmntPrinciple.NULL,
4338            new DeviceComponent.MeasmntPrincipleEnumFactory()));
4339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionSpecification")) {
4340        res.getProductionSpecification()
4341            .add(parseDeviceComponentDeviceComponentProductionSpecificationComponent(xpp, res));
4342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("languageCode")) {
4343        res.setLanguageCode(parseCodeableConcept(xpp));
4344      } else if (!parseDomainResourceContent(eventType, xpp, res))
4345        unknownContent(xpp);
4346      eventType = nextNoWhitespace(xpp);
4347    }
4348    next(xpp);
4349    parseElementClose(res);
4350    return res;
4351  }
4352
4353  protected DeviceComponent.DeviceComponentProductionSpecificationComponent parseDeviceComponentDeviceComponentProductionSpecificationComponent(
4354      XmlPullParser xpp, DeviceComponent owner) throws XmlPullParserException, IOException, FHIRFormatError {
4355    DeviceComponent.DeviceComponentProductionSpecificationComponent res = new DeviceComponent.DeviceComponentProductionSpecificationComponent();
4356    parseBackboneAttributes(xpp, res);
4357    next(xpp);
4358    int eventType = nextNoWhitespace(xpp);
4359    while (eventType != XmlPullParser.END_TAG) {
4360      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specType")) {
4361        res.setSpecType(parseCodeableConcept(xpp));
4362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("componentId")) {
4363        res.setComponentId(parseIdentifier(xpp));
4364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionSpec")) {
4365        res.setProductionSpecElement(parseString(xpp));
4366      } else if (!parseBackboneContent(eventType, xpp, res))
4367        unknownContent(xpp);
4368      eventType = nextNoWhitespace(xpp);
4369    }
4370    next(xpp);
4371    parseElementClose(res);
4372    return res;
4373  }
4374
4375  protected DeviceMetric parseDeviceMetric(XmlPullParser xpp)
4376      throws XmlPullParserException, IOException, FHIRFormatError {
4377    DeviceMetric res = new DeviceMetric();
4378    parseDomainResourceAttributes(xpp, res);
4379    next(xpp);
4380    int eventType = nextNoWhitespace(xpp);
4381    while (eventType != XmlPullParser.END_TAG) {
4382      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4383        res.setType(parseCodeableConcept(xpp));
4384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4385        res.setIdentifier(parseIdentifier(xpp));
4386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
4387        res.setUnit(parseCodeableConcept(xpp));
4388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
4389        res.setSource(parseReference(xpp));
4390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
4391        res.setParent(parseReference(xpp));
4392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
4393        res.setOperationalStatusElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricOperationalStatus.NULL,
4394            new DeviceMetric.DeviceMetricOperationalStatusEnumFactory()));
4395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
4396        res.setColorElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricColor.NULL,
4397            new DeviceMetric.DeviceMetricColorEnumFactory()));
4398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4399        res.setCategoryElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCategory.NULL,
4400            new DeviceMetric.DeviceMetricCategoryEnumFactory()));
4401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPeriod")) {
4402        res.setMeasurementPeriod(parseTiming(xpp));
4403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("calibration")) {
4404        res.getCalibration().add(parseDeviceMetricDeviceMetricCalibrationComponent(xpp, res));
4405      } else if (!parseDomainResourceContent(eventType, xpp, res))
4406        unknownContent(xpp);
4407      eventType = nextNoWhitespace(xpp);
4408    }
4409    next(xpp);
4410    parseElementClose(res);
4411    return res;
4412  }
4413
4414  protected DeviceMetric.DeviceMetricCalibrationComponent parseDeviceMetricDeviceMetricCalibrationComponent(
4415      XmlPullParser xpp, DeviceMetric owner) throws XmlPullParserException, IOException, FHIRFormatError {
4416    DeviceMetric.DeviceMetricCalibrationComponent res = new DeviceMetric.DeviceMetricCalibrationComponent();
4417    parseBackboneAttributes(xpp, res);
4418    next(xpp);
4419    int eventType = nextNoWhitespace(xpp);
4420    while (eventType != XmlPullParser.END_TAG) {
4421      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4422        res.setTypeElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationType.NULL,
4423            new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory()));
4424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
4425        res.setStateElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationState.NULL,
4426            new DeviceMetric.DeviceMetricCalibrationStateEnumFactory()));
4427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
4428        res.setTimeElement(parseInstant(xpp));
4429      } else if (!parseBackboneContent(eventType, xpp, res))
4430        unknownContent(xpp);
4431      eventType = nextNoWhitespace(xpp);
4432    }
4433    next(xpp);
4434    parseElementClose(res);
4435    return res;
4436  }
4437
4438  protected DeviceUseRequest parseDeviceUseRequest(XmlPullParser xpp)
4439      throws XmlPullParserException, IOException, FHIRFormatError {
4440    DeviceUseRequest res = new DeviceUseRequest();
4441    parseDomainResourceAttributes(xpp, res);
4442    next(xpp);
4443    int eventType = nextNoWhitespace(xpp);
4444    while (eventType != XmlPullParser.END_TAG) {
4445      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bodySite")) {
4446        res.setBodySite(parseType("bodySite", xpp));
4447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4448        res.setStatusElement(parseEnumeration(xpp, DeviceUseRequest.DeviceUseRequestStatus.NULL,
4449            new DeviceUseRequest.DeviceUseRequestStatusEnumFactory()));
4450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
4451        res.setDevice(parseReference(xpp));
4452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4453        res.setEncounter(parseReference(xpp));
4454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4455        res.getIdentifier().add(parseIdentifier(xpp));
4456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
4457        res.getIndication().add(parseCodeableConcept(xpp));
4458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
4459        res.getNotes().add(parseString(xpp));
4460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prnReason")) {
4461        res.getPrnReason().add(parseCodeableConcept(xpp));
4462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedOn")) {
4463        res.setOrderedOnElement(parseDateTime(xpp));
4464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
4465        res.setRecordedOnElement(parseDateTime(xpp));
4466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4467        res.setSubject(parseReference(xpp));
4468      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
4469        res.setTiming(parseType("timing", xpp));
4470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
4471        res.setPriorityElement(parseEnumeration(xpp, DeviceUseRequest.DeviceUseRequestPriority.NULL,
4472            new DeviceUseRequest.DeviceUseRequestPriorityEnumFactory()));
4473      } else if (!parseDomainResourceContent(eventType, xpp, res))
4474        unknownContent(xpp);
4475      eventType = nextNoWhitespace(xpp);
4476    }
4477    next(xpp);
4478    parseElementClose(res);
4479    return res;
4480  }
4481
4482  protected DeviceUseStatement parseDeviceUseStatement(XmlPullParser xpp)
4483      throws XmlPullParserException, IOException, FHIRFormatError {
4484    DeviceUseStatement res = new DeviceUseStatement();
4485    parseDomainResourceAttributes(xpp, res);
4486    next(xpp);
4487    int eventType = nextNoWhitespace(xpp);
4488    while (eventType != XmlPullParser.END_TAG) {
4489      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bodySite")) {
4490        res.setBodySite(parseType("bodySite", xpp));
4491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenUsed")) {
4492        res.setWhenUsed(parsePeriod(xpp));
4493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
4494        res.setDevice(parseReference(xpp));
4495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4496        res.getIdentifier().add(parseIdentifier(xpp));
4497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
4498        res.getIndication().add(parseCodeableConcept(xpp));
4499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
4500        res.getNotes().add(parseString(xpp));
4501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
4502        res.setRecordedOnElement(parseDateTime(xpp));
4503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4504        res.setSubject(parseReference(xpp));
4505      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
4506        res.setTiming(parseType("timing", xpp));
4507      } else if (!parseDomainResourceContent(eventType, xpp, res))
4508        unknownContent(xpp);
4509      eventType = nextNoWhitespace(xpp);
4510    }
4511    next(xpp);
4512    parseElementClose(res);
4513    return res;
4514  }
4515
4516  protected DiagnosticOrder parseDiagnosticOrder(XmlPullParser xpp)
4517      throws XmlPullParserException, IOException, FHIRFormatError {
4518    DiagnosticOrder res = new DiagnosticOrder();
4519    parseDomainResourceAttributes(xpp, res);
4520    next(xpp);
4521    int eventType = nextNoWhitespace(xpp);
4522    while (eventType != XmlPullParser.END_TAG) {
4523      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4524        res.setSubject(parseReference(xpp));
4525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
4526        res.setOrderer(parseReference(xpp));
4527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4528        res.getIdentifier().add(parseIdentifier(xpp));
4529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4530        res.setEncounter(parseReference(xpp));
4531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4532        res.getReason().add(parseCodeableConcept(xpp));
4533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
4534        res.getSupportingInformation().add(parseReference(xpp));
4535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
4536        res.getSpecimen().add(parseReference(xpp));
4537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4538        res.setStatusElement(parseEnumeration(xpp, DiagnosticOrder.DiagnosticOrderStatus.NULL,
4539            new DiagnosticOrder.DiagnosticOrderStatusEnumFactory()));
4540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
4541        res.setPriorityElement(parseEnumeration(xpp, DiagnosticOrder.DiagnosticOrderPriority.NULL,
4542            new DiagnosticOrder.DiagnosticOrderPriorityEnumFactory()));
4543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
4544        res.getEvent().add(parseDiagnosticOrderDiagnosticOrderEventComponent(xpp, res));
4545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4546        res.getItem().add(parseDiagnosticOrderDiagnosticOrderItemComponent(xpp, res));
4547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4548        res.getNote().add(parseAnnotation(xpp));
4549      } else if (!parseDomainResourceContent(eventType, xpp, res))
4550        unknownContent(xpp);
4551      eventType = nextNoWhitespace(xpp);
4552    }
4553    next(xpp);
4554    parseElementClose(res);
4555    return res;
4556  }
4557
4558  protected DiagnosticOrder.DiagnosticOrderEventComponent parseDiagnosticOrderDiagnosticOrderEventComponent(
4559      XmlPullParser xpp, DiagnosticOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
4560    DiagnosticOrder.DiagnosticOrderEventComponent res = new DiagnosticOrder.DiagnosticOrderEventComponent();
4561    parseBackboneAttributes(xpp, res);
4562    next(xpp);
4563    int eventType = nextNoWhitespace(xpp);
4564    while (eventType != XmlPullParser.END_TAG) {
4565      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4566        res.setStatusElement(parseEnumeration(xpp, DiagnosticOrder.DiagnosticOrderStatus.NULL,
4567            new DiagnosticOrder.DiagnosticOrderStatusEnumFactory()));
4568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4569        res.setDescription(parseCodeableConcept(xpp));
4570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
4571        res.setDateTimeElement(parseDateTime(xpp));
4572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
4573        res.setActor(parseReference(xpp));
4574      } else if (!parseBackboneContent(eventType, xpp, res))
4575        unknownContent(xpp);
4576      eventType = nextNoWhitespace(xpp);
4577    }
4578    next(xpp);
4579    parseElementClose(res);
4580    return res;
4581  }
4582
4583  protected DiagnosticOrder.DiagnosticOrderItemComponent parseDiagnosticOrderDiagnosticOrderItemComponent(
4584      XmlPullParser xpp, DiagnosticOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
4585    DiagnosticOrder.DiagnosticOrderItemComponent res = new DiagnosticOrder.DiagnosticOrderItemComponent();
4586    parseBackboneAttributes(xpp, res);
4587    next(xpp);
4588    int eventType = nextNoWhitespace(xpp);
4589    while (eventType != XmlPullParser.END_TAG) {
4590      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4591        res.setCode(parseCodeableConcept(xpp));
4592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
4593        res.getSpecimen().add(parseReference(xpp));
4594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
4595        res.setBodySite(parseCodeableConcept(xpp));
4596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4597        res.setStatusElement(parseEnumeration(xpp, DiagnosticOrder.DiagnosticOrderStatus.NULL,
4598            new DiagnosticOrder.DiagnosticOrderStatusEnumFactory()));
4599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
4600        res.getEvent().add(parseDiagnosticOrderDiagnosticOrderEventComponent(xpp, owner));
4601      } else if (!parseBackboneContent(eventType, xpp, res))
4602        unknownContent(xpp);
4603      eventType = nextNoWhitespace(xpp);
4604    }
4605    next(xpp);
4606    parseElementClose(res);
4607    return res;
4608  }
4609
4610  protected DiagnosticReport parseDiagnosticReport(XmlPullParser xpp)
4611      throws XmlPullParserException, IOException, FHIRFormatError {
4612    DiagnosticReport res = new DiagnosticReport();
4613    parseDomainResourceAttributes(xpp, res);
4614    next(xpp);
4615    int eventType = nextNoWhitespace(xpp);
4616    while (eventType != XmlPullParser.END_TAG) {
4617      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4618        res.getIdentifier().add(parseIdentifier(xpp));
4619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4620        res.setStatusElement(parseEnumeration(xpp, DiagnosticReport.DiagnosticReportStatus.NULL,
4621            new DiagnosticReport.DiagnosticReportStatusEnumFactory()));
4622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4623        res.setCategory(parseCodeableConcept(xpp));
4624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4625        res.setCode(parseCodeableConcept(xpp));
4626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4627        res.setSubject(parseReference(xpp));
4628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4629        res.setEncounter(parseReference(xpp));
4630      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
4631        res.setEffective(parseType("effective", xpp));
4632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
4633        res.setIssuedElement(parseInstant(xpp));
4634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
4635        res.setPerformer(parseReference(xpp));
4636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4637        res.getRequest().add(parseReference(xpp));
4638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
4639        res.getSpecimen().add(parseReference(xpp));
4640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
4641        res.getResult().add(parseReference(xpp));
4642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
4643        res.getImagingStudy().add(parseReference(xpp));
4644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
4645        res.getImage().add(parseDiagnosticReportDiagnosticReportImageComponent(xpp, res));
4646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusion")) {
4647        res.setConclusionElement(parseString(xpp));
4648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codedDiagnosis")) {
4649        res.getCodedDiagnosis().add(parseCodeableConcept(xpp));
4650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentedForm")) {
4651        res.getPresentedForm().add(parseAttachment(xpp));
4652      } else if (!parseDomainResourceContent(eventType, xpp, res))
4653        unknownContent(xpp);
4654      eventType = nextNoWhitespace(xpp);
4655    }
4656    next(xpp);
4657    parseElementClose(res);
4658    return res;
4659  }
4660
4661  protected DiagnosticReport.DiagnosticReportImageComponent parseDiagnosticReportDiagnosticReportImageComponent(
4662      XmlPullParser xpp, DiagnosticReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
4663    DiagnosticReport.DiagnosticReportImageComponent res = new DiagnosticReport.DiagnosticReportImageComponent();
4664    parseBackboneAttributes(xpp, res);
4665    next(xpp);
4666    int eventType = nextNoWhitespace(xpp);
4667    while (eventType != XmlPullParser.END_TAG) {
4668      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
4669        res.setCommentElement(parseString(xpp));
4670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
4671        res.setLink(parseReference(xpp));
4672      } else if (!parseBackboneContent(eventType, xpp, res))
4673        unknownContent(xpp);
4674      eventType = nextNoWhitespace(xpp);
4675    }
4676    next(xpp);
4677    parseElementClose(res);
4678    return res;
4679  }
4680
4681  protected DocumentManifest parseDocumentManifest(XmlPullParser xpp)
4682      throws XmlPullParserException, IOException, FHIRFormatError {
4683    DocumentManifest res = new DocumentManifest();
4684    parseDomainResourceAttributes(xpp, res);
4685    next(xpp);
4686    int eventType = nextNoWhitespace(xpp);
4687    while (eventType != XmlPullParser.END_TAG) {
4688      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
4689        res.setMasterIdentifier(parseIdentifier(xpp));
4690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4691        res.getIdentifier().add(parseIdentifier(xpp));
4692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4693        res.setSubject(parseReference(xpp));
4694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
4695        res.getRecipient().add(parseReference(xpp));
4696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4697        res.setType(parseCodeableConcept(xpp));
4698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
4699        res.getAuthor().add(parseReference(xpp));
4700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4701        res.setCreatedElement(parseDateTime(xpp));
4702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
4703        res.setSourceElement(parseUri(xpp));
4704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4705        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL,
4706            new Enumerations.DocumentReferenceStatusEnumFactory()));
4707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4708        res.setDescriptionElement(parseString(xpp));
4709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
4710        res.getContent().add(parseDocumentManifestDocumentManifestContentComponent(xpp, res));
4711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
4712        res.getRelated().add(parseDocumentManifestDocumentManifestRelatedComponent(xpp, res));
4713      } else if (!parseDomainResourceContent(eventType, xpp, res))
4714        unknownContent(xpp);
4715      eventType = nextNoWhitespace(xpp);
4716    }
4717    next(xpp);
4718    parseElementClose(res);
4719    return res;
4720  }
4721
4722  protected DocumentManifest.DocumentManifestContentComponent parseDocumentManifestDocumentManifestContentComponent(
4723      XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
4724    DocumentManifest.DocumentManifestContentComponent res = new DocumentManifest.DocumentManifestContentComponent();
4725    parseBackboneAttributes(xpp, res);
4726    next(xpp);
4727    int eventType = nextNoWhitespace(xpp);
4728    while (eventType != XmlPullParser.END_TAG) {
4729      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "p")) {
4730        res.setP(parseType("p", xpp));
4731      } else if (!parseBackboneContent(eventType, xpp, res))
4732        unknownContent(xpp);
4733      eventType = nextNoWhitespace(xpp);
4734    }
4735    next(xpp);
4736    parseElementClose(res);
4737    return res;
4738  }
4739
4740  protected DocumentManifest.DocumentManifestRelatedComponent parseDocumentManifestDocumentManifestRelatedComponent(
4741      XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
4742    DocumentManifest.DocumentManifestRelatedComponent res = new DocumentManifest.DocumentManifestRelatedComponent();
4743    parseBackboneAttributes(xpp, res);
4744    next(xpp);
4745    int eventType = nextNoWhitespace(xpp);
4746    while (eventType != XmlPullParser.END_TAG) {
4747      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4748        res.setIdentifier(parseIdentifier(xpp));
4749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
4750        res.setRef(parseReference(xpp));
4751      } else if (!parseBackboneContent(eventType, xpp, res))
4752        unknownContent(xpp);
4753      eventType = nextNoWhitespace(xpp);
4754    }
4755    next(xpp);
4756    parseElementClose(res);
4757    return res;
4758  }
4759
4760  protected DocumentReference parseDocumentReference(XmlPullParser xpp)
4761      throws XmlPullParserException, IOException, FHIRFormatError {
4762    DocumentReference res = new DocumentReference();
4763    parseDomainResourceAttributes(xpp, res);
4764    next(xpp);
4765    int eventType = nextNoWhitespace(xpp);
4766    while (eventType != XmlPullParser.END_TAG) {
4767      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
4768        res.setMasterIdentifier(parseIdentifier(xpp));
4769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4770        res.getIdentifier().add(parseIdentifier(xpp));
4771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4772        res.setSubject(parseReference(xpp));
4773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4774        res.setType(parseCodeableConcept(xpp));
4775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
4776        res.setClass_(parseCodeableConcept(xpp));
4777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
4778        res.getAuthor().add(parseReference(xpp));
4779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
4780        res.setCustodian(parseReference(xpp));
4781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authenticator")) {
4782        res.setAuthenticator(parseReference(xpp));
4783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4784        res.setCreatedElement(parseDateTime(xpp));
4785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indexed")) {
4786        res.setIndexedElement(parseInstant(xpp));
4787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4788        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL,
4789            new Enumerations.DocumentReferenceStatusEnumFactory()));
4790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("docStatus")) {
4791        res.setDocStatus(parseCodeableConcept(xpp));
4792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
4793        res.getRelatesTo().add(parseDocumentReferenceDocumentReferenceRelatesToComponent(xpp, res));
4794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4795        res.setDescriptionElement(parseString(xpp));
4796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
4797        res.getSecurityLabel().add(parseCodeableConcept(xpp));
4798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
4799        res.getContent().add(parseDocumentReferenceDocumentReferenceContentComponent(xpp, res));
4800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4801        res.setContext(parseDocumentReferenceDocumentReferenceContextComponent(xpp, res));
4802      } else if (!parseDomainResourceContent(eventType, xpp, res))
4803        unknownContent(xpp);
4804      eventType = nextNoWhitespace(xpp);
4805    }
4806    next(xpp);
4807    parseElementClose(res);
4808    return res;
4809  }
4810
4811  protected DocumentReference.DocumentReferenceRelatesToComponent parseDocumentReferenceDocumentReferenceRelatesToComponent(
4812      XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
4813    DocumentReference.DocumentReferenceRelatesToComponent res = new DocumentReference.DocumentReferenceRelatesToComponent();
4814    parseBackboneAttributes(xpp, res);
4815    next(xpp);
4816    int eventType = nextNoWhitespace(xpp);
4817    while (eventType != XmlPullParser.END_TAG) {
4818      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4819        res.setCodeElement(parseEnumeration(xpp, DocumentReference.DocumentRelationshipType.NULL,
4820            new DocumentReference.DocumentRelationshipTypeEnumFactory()));
4821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
4822        res.setTarget(parseReference(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 DocumentReference.DocumentReferenceContentComponent parseDocumentReferenceDocumentReferenceContentComponent(
4833      XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
4834    DocumentReference.DocumentReferenceContentComponent res = new DocumentReference.DocumentReferenceContentComponent();
4835    parseBackboneAttributes(xpp, res);
4836    next(xpp);
4837    int eventType = nextNoWhitespace(xpp);
4838    while (eventType != XmlPullParser.END_TAG) {
4839      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
4840        res.setAttachment(parseAttachment(xpp));
4841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
4842        res.getFormat().add(parseCoding(xpp));
4843      } else if (!parseBackboneContent(eventType, xpp, res))
4844        unknownContent(xpp);
4845      eventType = nextNoWhitespace(xpp);
4846    }
4847    next(xpp);
4848    parseElementClose(res);
4849    return res;
4850  }
4851
4852  protected DocumentReference.DocumentReferenceContextComponent parseDocumentReferenceDocumentReferenceContextComponent(
4853      XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
4854    DocumentReference.DocumentReferenceContextComponent res = new DocumentReference.DocumentReferenceContextComponent();
4855    parseBackboneAttributes(xpp, res);
4856    next(xpp);
4857    int eventType = nextNoWhitespace(xpp);
4858    while (eventType != XmlPullParser.END_TAG) {
4859      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4860        res.setEncounter(parseReference(xpp));
4861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
4862        res.getEvent().add(parseCodeableConcept(xpp));
4863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4864        res.setPeriod(parsePeriod(xpp));
4865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facilityType")) {
4866        res.setFacilityType(parseCodeableConcept(xpp));
4867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practiceSetting")) {
4868        res.setPracticeSetting(parseCodeableConcept(xpp));
4869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourcePatientInfo")) {
4870        res.setSourcePatientInfo(parseReference(xpp));
4871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
4872        res.getRelated().add(parseDocumentReferenceDocumentReferenceContextRelatedComponent(xpp, owner));
4873      } else if (!parseBackboneContent(eventType, xpp, res))
4874        unknownContent(xpp);
4875      eventType = nextNoWhitespace(xpp);
4876    }
4877    next(xpp);
4878    parseElementClose(res);
4879    return res;
4880  }
4881
4882  protected DocumentReference.DocumentReferenceContextRelatedComponent parseDocumentReferenceDocumentReferenceContextRelatedComponent(
4883      XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
4884    DocumentReference.DocumentReferenceContextRelatedComponent res = new DocumentReference.DocumentReferenceContextRelatedComponent();
4885    parseBackboneAttributes(xpp, res);
4886    next(xpp);
4887    int eventType = nextNoWhitespace(xpp);
4888    while (eventType != XmlPullParser.END_TAG) {
4889      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4890        res.setIdentifier(parseIdentifier(xpp));
4891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
4892        res.setRef(parseReference(xpp));
4893      } else if (!parseBackboneContent(eventType, xpp, res))
4894        unknownContent(xpp);
4895      eventType = nextNoWhitespace(xpp);
4896    }
4897    next(xpp);
4898    parseElementClose(res);
4899    return res;
4900  }
4901
4902  protected EligibilityRequest parseEligibilityRequest(XmlPullParser xpp)
4903      throws XmlPullParserException, IOException, FHIRFormatError {
4904    EligibilityRequest res = new EligibilityRequest();
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("identifier")) {
4910        res.getIdentifier().add(parseIdentifier(xpp));
4911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
4912        res.setRuleset(parseCoding(xpp));
4913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
4914        res.setOriginalRuleset(parseCoding(xpp));
4915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4916        res.setCreatedElement(parseDateTime(xpp));
4917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
4918        res.setTarget(parseReference(xpp));
4919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
4920        res.setProvider(parseReference(xpp));
4921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
4922        res.setOrganization(parseReference(xpp));
4923      } else if (!parseDomainResourceContent(eventType, xpp, res))
4924        unknownContent(xpp);
4925      eventType = nextNoWhitespace(xpp);
4926    }
4927    next(xpp);
4928    parseElementClose(res);
4929    return res;
4930  }
4931
4932  protected EligibilityResponse parseEligibilityResponse(XmlPullParser xpp)
4933      throws XmlPullParserException, IOException, FHIRFormatError {
4934    EligibilityResponse res = new EligibilityResponse();
4935    parseDomainResourceAttributes(xpp, res);
4936    next(xpp);
4937    int eventType = nextNoWhitespace(xpp);
4938    while (eventType != XmlPullParser.END_TAG) {
4939      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4940        res.getIdentifier().add(parseIdentifier(xpp));
4941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4942        res.setRequest(parseReference(xpp));
4943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
4944        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL,
4945            new Enumerations.RemittanceOutcomeEnumFactory()));
4946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
4947        res.setDispositionElement(parseString(xpp));
4948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
4949        res.setRuleset(parseCoding(xpp));
4950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
4951        res.setOriginalRuleset(parseCoding(xpp));
4952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4953        res.setCreatedElement(parseDateTime(xpp));
4954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
4955        res.setOrganization(parseReference(xpp));
4956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
4957        res.setRequestProvider(parseReference(xpp));
4958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
4959        res.setRequestOrganization(parseReference(xpp));
4960      } else if (!parseDomainResourceContent(eventType, xpp, res))
4961        unknownContent(xpp);
4962      eventType = nextNoWhitespace(xpp);
4963    }
4964    next(xpp);
4965    parseElementClose(res);
4966    return res;
4967  }
4968
4969  protected Encounter parseEncounter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4970    Encounter res = new Encounter();
4971    parseDomainResourceAttributes(xpp, res);
4972    next(xpp);
4973    int eventType = nextNoWhitespace(xpp);
4974    while (eventType != XmlPullParser.END_TAG) {
4975      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4976        res.getIdentifier().add(parseIdentifier(xpp));
4977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4978        res.setStatusElement(
4979            parseEnumeration(xpp, Encounter.EncounterState.NULL, new Encounter.EncounterStateEnumFactory()));
4980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
4981        res.getStatusHistory().add(parseEncounterEncounterStatusHistoryComponent(xpp, res));
4982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
4983        res.setClass_Element(
4984            parseEnumeration(xpp, Encounter.EncounterClass.NULL, new Encounter.EncounterClassEnumFactory()));
4985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4986        res.getType().add(parseCodeableConcept(xpp));
4987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
4988        res.setPriority(parseCodeableConcept(xpp));
4989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4990        res.setPatient(parseReference(xpp));
4991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("episodeOfCare")) {
4992        res.getEpisodeOfCare().add(parseReference(xpp));
4993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomingReferral")) {
4994        res.getIncomingReferral().add(parseReference(xpp));
4995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
4996        res.getParticipant().add(parseEncounterEncounterParticipantComponent(xpp, res));
4997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
4998        res.setAppointment(parseReference(xpp));
4999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5000        res.setPeriod(parsePeriod(xpp));
5001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
5002        res.setLength(parseDuration(xpp));
5003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
5004        res.getReason().add(parseCodeableConcept(xpp));
5005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
5006        res.getIndication().add(parseReference(xpp));
5007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
5008        res.setHospitalization(parseEncounterEncounterHospitalizationComponent(xpp, res));
5009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
5010        res.getLocation().add(parseEncounterEncounterLocationComponent(xpp, res));
5011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvider")) {
5012        res.setServiceProvider(parseReference(xpp));
5013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
5014        res.setPartOf(parseReference(xpp));
5015      } else if (!parseDomainResourceContent(eventType, xpp, res))
5016        unknownContent(xpp);
5017      eventType = nextNoWhitespace(xpp);
5018    }
5019    next(xpp);
5020    parseElementClose(res);
5021    return res;
5022  }
5023
5024  protected Encounter.EncounterStatusHistoryComponent parseEncounterEncounterStatusHistoryComponent(XmlPullParser xpp,
5025      Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
5026    Encounter.EncounterStatusHistoryComponent res = new Encounter.EncounterStatusHistoryComponent();
5027    parseBackboneAttributes(xpp, res);
5028    next(xpp);
5029    int eventType = nextNoWhitespace(xpp);
5030    while (eventType != XmlPullParser.END_TAG) {
5031      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5032        res.setStatusElement(
5033            parseEnumeration(xpp, Encounter.EncounterState.NULL, new Encounter.EncounterStateEnumFactory()));
5034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5035        res.setPeriod(parsePeriod(xpp));
5036      } else if (!parseBackboneContent(eventType, xpp, res))
5037        unknownContent(xpp);
5038      eventType = nextNoWhitespace(xpp);
5039    }
5040    next(xpp);
5041    parseElementClose(res);
5042    return res;
5043  }
5044
5045  protected Encounter.EncounterParticipantComponent parseEncounterEncounterParticipantComponent(XmlPullParser xpp,
5046      Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
5047    Encounter.EncounterParticipantComponent res = new Encounter.EncounterParticipantComponent();
5048    parseBackboneAttributes(xpp, res);
5049    next(xpp);
5050    int eventType = nextNoWhitespace(xpp);
5051    while (eventType != XmlPullParser.END_TAG) {
5052      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5053        res.getType().add(parseCodeableConcept(xpp));
5054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5055        res.setPeriod(parsePeriod(xpp));
5056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
5057        res.setIndividual(parseReference(xpp));
5058      } else if (!parseBackboneContent(eventType, xpp, res))
5059        unknownContent(xpp);
5060      eventType = nextNoWhitespace(xpp);
5061    }
5062    next(xpp);
5063    parseElementClose(res);
5064    return res;
5065  }
5066
5067  protected Encounter.EncounterHospitalizationComponent parseEncounterEncounterHospitalizationComponent(
5068      XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
5069    Encounter.EncounterHospitalizationComponent res = new Encounter.EncounterHospitalizationComponent();
5070    parseBackboneAttributes(xpp, res);
5071    next(xpp);
5072    int eventType = nextNoWhitespace(xpp);
5073    while (eventType != XmlPullParser.END_TAG) {
5074      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAdmissionIdentifier")) {
5075        res.setPreAdmissionIdentifier(parseIdentifier(xpp));
5076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
5077        res.setOrigin(parseReference(xpp));
5078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admitSource")) {
5079        res.setAdmitSource(parseCodeableConcept(xpp));
5080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admittingDiagnosis")) {
5081        res.getAdmittingDiagnosis().add(parseReference(xpp));
5082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reAdmission")) {
5083        res.setReAdmission(parseCodeableConcept(xpp));
5084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dietPreference")) {
5085        res.getDietPreference().add(parseCodeableConcept(xpp));
5086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCourtesy")) {
5087        res.getSpecialCourtesy().add(parseCodeableConcept(xpp));
5088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialArrangement")) {
5089        res.getSpecialArrangement().add(parseCodeableConcept(xpp));
5090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
5091        res.setDestination(parseReference(xpp));
5092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDisposition")) {
5093        res.setDischargeDisposition(parseCodeableConcept(xpp));
5094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDiagnosis")) {
5095        res.getDischargeDiagnosis().add(parseReference(xpp));
5096      } else if (!parseBackboneContent(eventType, xpp, res))
5097        unknownContent(xpp);
5098      eventType = nextNoWhitespace(xpp);
5099    }
5100    next(xpp);
5101    parseElementClose(res);
5102    return res;
5103  }
5104
5105  protected Encounter.EncounterLocationComponent parseEncounterEncounterLocationComponent(XmlPullParser xpp,
5106      Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
5107    Encounter.EncounterLocationComponent res = new Encounter.EncounterLocationComponent();
5108    parseBackboneAttributes(xpp, res);
5109    next(xpp);
5110    int eventType = nextNoWhitespace(xpp);
5111    while (eventType != XmlPullParser.END_TAG) {
5112      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
5113        res.setLocation(parseReference(xpp));
5114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5115        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterLocationStatus.NULL,
5116            new Encounter.EncounterLocationStatusEnumFactory()));
5117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5118        res.setPeriod(parsePeriod(xpp));
5119      } else if (!parseBackboneContent(eventType, xpp, res))
5120        unknownContent(xpp);
5121      eventType = nextNoWhitespace(xpp);
5122    }
5123    next(xpp);
5124    parseElementClose(res);
5125    return res;
5126  }
5127
5128  protected EnrollmentRequest parseEnrollmentRequest(XmlPullParser xpp)
5129      throws XmlPullParserException, IOException, FHIRFormatError {
5130    EnrollmentRequest res = new EnrollmentRequest();
5131    parseDomainResourceAttributes(xpp, res);
5132    next(xpp);
5133    int eventType = nextNoWhitespace(xpp);
5134    while (eventType != XmlPullParser.END_TAG) {
5135      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5136        res.getIdentifier().add(parseIdentifier(xpp));
5137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
5138        res.setRuleset(parseCoding(xpp));
5139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
5140        res.setOriginalRuleset(parseCoding(xpp));
5141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
5142        res.setCreatedElement(parseDateTime(xpp));
5143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
5144        res.setTarget(parseReference(xpp));
5145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
5146        res.setProvider(parseReference(xpp));
5147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
5148        res.setOrganization(parseReference(xpp));
5149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5150        res.setSubject(parseReference(xpp));
5151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
5152        res.setCoverage(parseReference(xpp));
5153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
5154        res.setRelationship(parseCoding(xpp));
5155      } else if (!parseDomainResourceContent(eventType, xpp, res))
5156        unknownContent(xpp);
5157      eventType = nextNoWhitespace(xpp);
5158    }
5159    next(xpp);
5160    parseElementClose(res);
5161    return res;
5162  }
5163
5164  protected EnrollmentResponse parseEnrollmentResponse(XmlPullParser xpp)
5165      throws XmlPullParserException, IOException, FHIRFormatError {
5166    EnrollmentResponse res = new EnrollmentResponse();
5167    parseDomainResourceAttributes(xpp, res);
5168    next(xpp);
5169    int eventType = nextNoWhitespace(xpp);
5170    while (eventType != XmlPullParser.END_TAG) {
5171      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("request")) {
5174        res.setRequest(parseReference(xpp));
5175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
5176        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL,
5177            new Enumerations.RemittanceOutcomeEnumFactory()));
5178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
5179        res.setDispositionElement(parseString(xpp));
5180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
5181        res.setRuleset(parseCoding(xpp));
5182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
5183        res.setOriginalRuleset(parseCoding(xpp));
5184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
5185        res.setCreatedElement(parseDateTime(xpp));
5186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
5187        res.setOrganization(parseReference(xpp));
5188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
5189        res.setRequestProvider(parseReference(xpp));
5190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
5191        res.setRequestOrganization(parseReference(xpp));
5192      } else if (!parseDomainResourceContent(eventType, xpp, res))
5193        unknownContent(xpp);
5194      eventType = nextNoWhitespace(xpp);
5195    }
5196    next(xpp);
5197    parseElementClose(res);
5198    return res;
5199  }
5200
5201  protected EpisodeOfCare parseEpisodeOfCare(XmlPullParser xpp)
5202      throws XmlPullParserException, IOException, FHIRFormatError {
5203    EpisodeOfCare res = new EpisodeOfCare();
5204    parseDomainResourceAttributes(xpp, res);
5205    next(xpp);
5206    int eventType = nextNoWhitespace(xpp);
5207    while (eventType != XmlPullParser.END_TAG) {
5208      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5209        res.getIdentifier().add(parseIdentifier(xpp));
5210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5211        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL,
5212            new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
5213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
5214        res.getStatusHistory().add(parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(xpp, res));
5215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5216        res.getType().add(parseCodeableConcept(xpp));
5217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
5218        res.getCondition().add(parseReference(xpp));
5219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5220        res.setPatient(parseReference(xpp));
5221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
5222        res.setManagingOrganization(parseReference(xpp));
5223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5224        res.setPeriod(parsePeriod(xpp));
5225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralRequest")) {
5226        res.getReferralRequest().add(parseReference(xpp));
5227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careManager")) {
5228        res.setCareManager(parseReference(xpp));
5229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
5230        res.getCareTeam().add(parseEpisodeOfCareEpisodeOfCareCareTeamComponent(xpp, res));
5231      } else if (!parseDomainResourceContent(eventType, xpp, res))
5232        unknownContent(xpp);
5233      eventType = nextNoWhitespace(xpp);
5234    }
5235    next(xpp);
5236    parseElementClose(res);
5237    return res;
5238  }
5239
5240  protected EpisodeOfCare.EpisodeOfCareStatusHistoryComponent parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(
5241      XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
5242    EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res = new EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
5243    parseBackboneAttributes(xpp, res);
5244    next(xpp);
5245    int eventType = nextNoWhitespace(xpp);
5246    while (eventType != XmlPullParser.END_TAG) {
5247      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5248        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL,
5249            new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
5250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5251        res.setPeriod(parsePeriod(xpp));
5252      } else if (!parseBackboneContent(eventType, xpp, res))
5253        unknownContent(xpp);
5254      eventType = nextNoWhitespace(xpp);
5255    }
5256    next(xpp);
5257    parseElementClose(res);
5258    return res;
5259  }
5260
5261  protected EpisodeOfCare.EpisodeOfCareCareTeamComponent parseEpisodeOfCareEpisodeOfCareCareTeamComponent(
5262      XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
5263    EpisodeOfCare.EpisodeOfCareCareTeamComponent res = new EpisodeOfCare.EpisodeOfCareCareTeamComponent();
5264    parseBackboneAttributes(xpp, res);
5265    next(xpp);
5266    int eventType = nextNoWhitespace(xpp);
5267    while (eventType != XmlPullParser.END_TAG) {
5268      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5269        res.getRole().add(parseCodeableConcept(xpp));
5270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5271        res.setPeriod(parsePeriod(xpp));
5272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
5273        res.setMember(parseReference(xpp));
5274      } else if (!parseBackboneContent(eventType, xpp, res))
5275        unknownContent(xpp);
5276      eventType = nextNoWhitespace(xpp);
5277    }
5278    next(xpp);
5279    parseElementClose(res);
5280    return res;
5281  }
5282
5283  protected ExplanationOfBenefit parseExplanationOfBenefit(XmlPullParser xpp)
5284      throws XmlPullParserException, IOException, FHIRFormatError {
5285    ExplanationOfBenefit res = new ExplanationOfBenefit();
5286    parseDomainResourceAttributes(xpp, res);
5287    next(xpp);
5288    int eventType = nextNoWhitespace(xpp);
5289    while (eventType != XmlPullParser.END_TAG) {
5290      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5291        res.getIdentifier().add(parseIdentifier(xpp));
5292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
5293        res.setRequest(parseReference(xpp));
5294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
5295        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL,
5296            new Enumerations.RemittanceOutcomeEnumFactory()));
5297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
5298        res.setDispositionElement(parseString(xpp));
5299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
5300        res.setRuleset(parseCoding(xpp));
5301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
5302        res.setOriginalRuleset(parseCoding(xpp));
5303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
5304        res.setCreatedElement(parseDateTime(xpp));
5305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
5306        res.setOrganization(parseReference(xpp));
5307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
5308        res.setRequestProvider(parseReference(xpp));
5309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
5310        res.setRequestOrganization(parseReference(xpp));
5311      } else if (!parseDomainResourceContent(eventType, xpp, res))
5312        unknownContent(xpp);
5313      eventType = nextNoWhitespace(xpp);
5314    }
5315    next(xpp);
5316    parseElementClose(res);
5317    return res;
5318  }
5319
5320  protected FamilyMemberHistory parseFamilyMemberHistory(XmlPullParser xpp)
5321      throws XmlPullParserException, IOException, FHIRFormatError {
5322    FamilyMemberHistory res = new FamilyMemberHistory();
5323    parseDomainResourceAttributes(xpp, res);
5324    next(xpp);
5325    int eventType = nextNoWhitespace(xpp);
5326    while (eventType != XmlPullParser.END_TAG) {
5327      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5328        res.getIdentifier().add(parseIdentifier(xpp));
5329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5330        res.setPatient(parseReference(xpp));
5331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5332        res.setDateElement(parseDateTime(xpp));
5333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5334        res.setStatusElement(parseEnumeration(xpp, FamilyMemberHistory.FamilyHistoryStatus.NULL,
5335            new FamilyMemberHistory.FamilyHistoryStatusEnumFactory()));
5336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5337        res.setNameElement(parseString(xpp));
5338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
5339        res.setRelationship(parseCodeableConcept(xpp));
5340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
5341        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL,
5342            new Enumerations.AdministrativeGenderEnumFactory()));
5343      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "born")) {
5344        res.setBorn(parseType("born", xpp));
5345      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
5346        res.setAge(parseType("age", xpp));
5347      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
5348        res.setDeceased(parseType("deceased", xpp));
5349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5350        res.setNote(parseAnnotation(xpp));
5351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
5352        res.getCondition().add(parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(xpp, res));
5353      } else if (!parseDomainResourceContent(eventType, xpp, res))
5354        unknownContent(xpp);
5355      eventType = nextNoWhitespace(xpp);
5356    }
5357    next(xpp);
5358    parseElementClose(res);
5359    return res;
5360  }
5361
5362  protected FamilyMemberHistory.FamilyMemberHistoryConditionComponent parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(
5363      XmlPullParser xpp, FamilyMemberHistory owner) throws XmlPullParserException, IOException, FHIRFormatError {
5364    FamilyMemberHistory.FamilyMemberHistoryConditionComponent res = new FamilyMemberHistory.FamilyMemberHistoryConditionComponent();
5365    parseBackboneAttributes(xpp, res);
5366    next(xpp);
5367    int eventType = nextNoWhitespace(xpp);
5368    while (eventType != XmlPullParser.END_TAG) {
5369      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5370        res.setCode(parseCodeableConcept(xpp));
5371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
5372        res.setOutcome(parseCodeableConcept(xpp));
5373      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
5374        res.setOnset(parseType("onset", xpp));
5375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5376        res.setNote(parseAnnotation(xpp));
5377      } else if (!parseBackboneContent(eventType, xpp, res))
5378        unknownContent(xpp);
5379      eventType = nextNoWhitespace(xpp);
5380    }
5381    next(xpp);
5382    parseElementClose(res);
5383    return res;
5384  }
5385
5386  protected Flag parseFlag(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5387    Flag res = new Flag();
5388    parseDomainResourceAttributes(xpp, res);
5389    next(xpp);
5390    int eventType = nextNoWhitespace(xpp);
5391    while (eventType != XmlPullParser.END_TAG) {
5392      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5393        res.getIdentifier().add(parseIdentifier(xpp));
5394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5395        res.setCategory(parseCodeableConcept(xpp));
5396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5397        res.setStatusElement(parseEnumeration(xpp, Flag.FlagStatus.NULL, new Flag.FlagStatusEnumFactory()));
5398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5399        res.setPeriod(parsePeriod(xpp));
5400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5401        res.setSubject(parseReference(xpp));
5402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5403        res.setEncounter(parseReference(xpp));
5404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5405        res.setAuthor(parseReference(xpp));
5406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5407        res.setCode(parseCodeableConcept(xpp));
5408      } else if (!parseDomainResourceContent(eventType, xpp, res))
5409        unknownContent(xpp);
5410      eventType = nextNoWhitespace(xpp);
5411    }
5412    next(xpp);
5413    parseElementClose(res);
5414    return res;
5415  }
5416
5417  protected Goal parseGoal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5418    Goal res = new Goal();
5419    parseDomainResourceAttributes(xpp, res);
5420    next(xpp);
5421    int eventType = nextNoWhitespace(xpp);
5422    while (eventType != XmlPullParser.END_TAG) {
5423      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5424        res.getIdentifier().add(parseIdentifier(xpp));
5425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5426        res.setSubject(parseReference(xpp));
5427      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "start")) {
5428        res.setStart(parseType("start", xpp));
5429      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5430        res.setTarget(parseType("target", xpp));
5431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5432        res.getCategory().add(parseCodeableConcept(xpp));
5433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5434        res.setDescriptionElement(parseString(xpp));
5435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5436        res.setStatusElement(parseEnumeration(xpp, Goal.GoalStatus.NULL, new Goal.GoalStatusEnumFactory()));
5437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
5438        res.setStatusDateElement(parseDate(xpp));
5439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5440        res.setStatusReason(parseCodeableConcept(xpp));
5441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5442        res.setAuthor(parseReference(xpp));
5443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5444        res.setPriority(parseCodeableConcept(xpp));
5445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
5446        res.getAddresses().add(parseReference(xpp));
5447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5448        res.getNote().add(parseAnnotation(xpp));
5449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
5450        res.getOutcome().add(parseGoalGoalOutcomeComponent(xpp, res));
5451      } else if (!parseDomainResourceContent(eventType, xpp, res))
5452        unknownContent(xpp);
5453      eventType = nextNoWhitespace(xpp);
5454    }
5455    next(xpp);
5456    parseElementClose(res);
5457    return res;
5458  }
5459
5460  protected Goal.GoalOutcomeComponent parseGoalGoalOutcomeComponent(XmlPullParser xpp, Goal owner)
5461      throws XmlPullParserException, IOException, FHIRFormatError {
5462    Goal.GoalOutcomeComponent res = new Goal.GoalOutcomeComponent();
5463    parseBackboneAttributes(xpp, res);
5464    next(xpp);
5465    int eventType = nextNoWhitespace(xpp);
5466    while (eventType != XmlPullParser.END_TAG) {
5467      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "result")) {
5468        res.setResult(parseType("result", xpp));
5469      } else if (!parseBackboneContent(eventType, xpp, res))
5470        unknownContent(xpp);
5471      eventType = nextNoWhitespace(xpp);
5472    }
5473    next(xpp);
5474    parseElementClose(res);
5475    return res;
5476  }
5477
5478  protected Group parseGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5479    Group res = new Group();
5480    parseDomainResourceAttributes(xpp, res);
5481    next(xpp);
5482    int eventType = nextNoWhitespace(xpp);
5483    while (eventType != XmlPullParser.END_TAG) {
5484      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5485        res.getIdentifier().add(parseIdentifier(xpp));
5486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5487        res.setTypeElement(parseEnumeration(xpp, Group.GroupType.NULL, new Group.GroupTypeEnumFactory()));
5488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
5489        res.setActualElement(parseBoolean(xpp));
5490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5491        res.setCode(parseCodeableConcept(xpp));
5492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5493        res.setNameElement(parseString(xpp));
5494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5495        res.setQuantityElement(parseUnsignedInt(xpp));
5496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
5497        res.getCharacteristic().add(parseGroupGroupCharacteristicComponent(xpp, res));
5498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
5499        res.getMember().add(parseGroupGroupMemberComponent(xpp, res));
5500      } else if (!parseDomainResourceContent(eventType, xpp, res))
5501        unknownContent(xpp);
5502      eventType = nextNoWhitespace(xpp);
5503    }
5504    next(xpp);
5505    parseElementClose(res);
5506    return res;
5507  }
5508
5509  protected Group.GroupCharacteristicComponent parseGroupGroupCharacteristicComponent(XmlPullParser xpp, Group owner)
5510      throws XmlPullParserException, IOException, FHIRFormatError {
5511    Group.GroupCharacteristicComponent res = new Group.GroupCharacteristicComponent();
5512    parseBackboneAttributes(xpp, res);
5513    next(xpp);
5514    int eventType = nextNoWhitespace(xpp);
5515    while (eventType != XmlPullParser.END_TAG) {
5516      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5517        res.setCode(parseCodeableConcept(xpp));
5518      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
5519        res.setValue(parseType("value", xpp));
5520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
5521        res.setExcludeElement(parseBoolean(xpp));
5522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5523        res.setPeriod(parsePeriod(xpp));
5524      } else if (!parseBackboneContent(eventType, xpp, res))
5525        unknownContent(xpp);
5526      eventType = nextNoWhitespace(xpp);
5527    }
5528    next(xpp);
5529    parseElementClose(res);
5530    return res;
5531  }
5532
5533  protected Group.GroupMemberComponent parseGroupGroupMemberComponent(XmlPullParser xpp, Group owner)
5534      throws XmlPullParserException, IOException, FHIRFormatError {
5535    Group.GroupMemberComponent res = new Group.GroupMemberComponent();
5536    parseBackboneAttributes(xpp, res);
5537    next(xpp);
5538    int eventType = nextNoWhitespace(xpp);
5539    while (eventType != XmlPullParser.END_TAG) {
5540      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
5541        res.setEntity(parseReference(xpp));
5542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5543        res.setPeriod(parsePeriod(xpp));
5544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
5545        res.setInactiveElement(parseBoolean(xpp));
5546      } else if (!parseBackboneContent(eventType, xpp, res))
5547        unknownContent(xpp);
5548      eventType = nextNoWhitespace(xpp);
5549    }
5550    next(xpp);
5551    parseElementClose(res);
5552    return res;
5553  }
5554
5555  protected HealthcareService parseHealthcareService(XmlPullParser xpp)
5556      throws XmlPullParserException, IOException, FHIRFormatError {
5557    HealthcareService res = new HealthcareService();
5558    parseDomainResourceAttributes(xpp, res);
5559    next(xpp);
5560    int eventType = nextNoWhitespace(xpp);
5561    while (eventType != XmlPullParser.END_TAG) {
5562      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5563        res.getIdentifier().add(parseIdentifier(xpp));
5564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providedBy")) {
5565        res.setProvidedBy(parseReference(xpp));
5566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
5567        res.setServiceCategory(parseCodeableConcept(xpp));
5568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
5569        res.getServiceType().add(parseHealthcareServiceServiceTypeComponent(xpp, res));
5570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
5571        res.setLocation(parseReference(xpp));
5572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceName")) {
5573        res.setServiceNameElement(parseString(xpp));
5574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
5575        res.setCommentElement(parseString(xpp));
5576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extraDetails")) {
5577        res.setExtraDetailsElement(parseString(xpp));
5578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
5579        res.setPhoto(parseAttachment(xpp));
5580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
5581        res.getTelecom().add(parseContactPoint(xpp));
5582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
5583        res.getCoverageArea().add(parseReference(xpp));
5584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvisionCode")) {
5585        res.getServiceProvisionCode().add(parseCodeableConcept(xpp));
5586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibility")) {
5587        res.setEligibility(parseCodeableConcept(xpp));
5588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibilityNote")) {
5589        res.setEligibilityNoteElement(parseString(xpp));
5590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programName")) {
5591        res.getProgramName().add(parseString(xpp));
5592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
5593        res.getCharacteristic().add(parseCodeableConcept(xpp));
5594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralMethod")) {
5595        res.getReferralMethod().add(parseCodeableConcept(xpp));
5596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicKey")) {
5597        res.setPublicKeyElement(parseString(xpp));
5598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentRequired")) {
5599        res.setAppointmentRequiredElement(parseBoolean(xpp));
5600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
5601        res.getAvailableTime().add(parseHealthcareServiceHealthcareServiceAvailableTimeComponent(xpp, res));
5602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
5603        res.getNotAvailable().add(parseHealthcareServiceHealthcareServiceNotAvailableComponent(xpp, res));
5604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
5605        res.setAvailabilityExceptionsElement(parseString(xpp));
5606      } else if (!parseDomainResourceContent(eventType, xpp, res))
5607        unknownContent(xpp);
5608      eventType = nextNoWhitespace(xpp);
5609    }
5610    next(xpp);
5611    parseElementClose(res);
5612    return res;
5613  }
5614
5615  protected HealthcareService.ServiceTypeComponent parseHealthcareServiceServiceTypeComponent(XmlPullParser xpp,
5616      HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
5617    HealthcareService.ServiceTypeComponent res = new HealthcareService.ServiceTypeComponent();
5618    parseBackboneAttributes(xpp, res);
5619    next(xpp);
5620    int eventType = nextNoWhitespace(xpp);
5621    while (eventType != XmlPullParser.END_TAG) {
5622      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5623        res.setType(parseCodeableConcept(xpp));
5624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
5625        res.getSpecialty().add(parseCodeableConcept(xpp));
5626      } else if (!parseBackboneContent(eventType, xpp, res))
5627        unknownContent(xpp);
5628      eventType = nextNoWhitespace(xpp);
5629    }
5630    next(xpp);
5631    parseElementClose(res);
5632    return res;
5633  }
5634
5635  protected HealthcareService.HealthcareServiceAvailableTimeComponent parseHealthcareServiceHealthcareServiceAvailableTimeComponent(
5636      XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
5637    HealthcareService.HealthcareServiceAvailableTimeComponent res = new HealthcareService.HealthcareServiceAvailableTimeComponent();
5638    parseBackboneAttributes(xpp, res);
5639    next(xpp);
5640    int eventType = nextNoWhitespace(xpp);
5641    while (eventType != XmlPullParser.END_TAG) {
5642      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
5643        res.getDaysOfWeek().add(
5644            parseEnumeration(xpp, HealthcareService.DaysOfWeek.NULL, new HealthcareService.DaysOfWeekEnumFactory()));
5645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
5646        res.setAllDayElement(parseBoolean(xpp));
5647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
5648        res.setAvailableStartTimeElement(parseTime(xpp));
5649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
5650        res.setAvailableEndTimeElement(parseTime(xpp));
5651      } else if (!parseBackboneContent(eventType, xpp, res))
5652        unknownContent(xpp);
5653      eventType = nextNoWhitespace(xpp);
5654    }
5655    next(xpp);
5656    parseElementClose(res);
5657    return res;
5658  }
5659
5660  protected HealthcareService.HealthcareServiceNotAvailableComponent parseHealthcareServiceHealthcareServiceNotAvailableComponent(
5661      XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
5662    HealthcareService.HealthcareServiceNotAvailableComponent res = new HealthcareService.HealthcareServiceNotAvailableComponent();
5663    parseBackboneAttributes(xpp, res);
5664    next(xpp);
5665    int eventType = nextNoWhitespace(xpp);
5666    while (eventType != XmlPullParser.END_TAG) {
5667      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5668        res.setDescriptionElement(parseString(xpp));
5669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
5670        res.setDuring(parsePeriod(xpp));
5671      } else if (!parseBackboneContent(eventType, xpp, res))
5672        unknownContent(xpp);
5673      eventType = nextNoWhitespace(xpp);
5674    }
5675    next(xpp);
5676    parseElementClose(res);
5677    return res;
5678  }
5679
5680  protected ImagingObjectSelection parseImagingObjectSelection(XmlPullParser xpp)
5681      throws XmlPullParserException, IOException, FHIRFormatError {
5682    ImagingObjectSelection res = new ImagingObjectSelection();
5683    parseDomainResourceAttributes(xpp, res);
5684    next(xpp);
5685    int eventType = nextNoWhitespace(xpp);
5686    while (eventType != XmlPullParser.END_TAG) {
5687      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
5688        res.setUidElement(parseOid(xpp));
5689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5690        res.setPatient(parseReference(xpp));
5691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5692        res.setTitle(parseCodeableConcept(xpp));
5693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5694        res.setDescriptionElement(parseString(xpp));
5695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5696        res.setAuthor(parseReference(xpp));
5697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoringTime")) {
5698        res.setAuthoringTimeElement(parseDateTime(xpp));
5699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
5700        res.getStudy().add(parseImagingObjectSelectionStudyComponent(xpp, res));
5701      } else if (!parseDomainResourceContent(eventType, xpp, res))
5702        unknownContent(xpp);
5703      eventType = nextNoWhitespace(xpp);
5704    }
5705    next(xpp);
5706    parseElementClose(res);
5707    return res;
5708  }
5709
5710  protected ImagingObjectSelection.StudyComponent parseImagingObjectSelectionStudyComponent(XmlPullParser xpp,
5711      ImagingObjectSelection owner) throws XmlPullParserException, IOException, FHIRFormatError {
5712    ImagingObjectSelection.StudyComponent res = new ImagingObjectSelection.StudyComponent();
5713    parseBackboneAttributes(xpp, res);
5714    next(xpp);
5715    int eventType = nextNoWhitespace(xpp);
5716    while (eventType != XmlPullParser.END_TAG) {
5717      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
5718        res.setUidElement(parseOid(xpp));
5719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5720        res.setUrlElement(parseUri(xpp));
5721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
5722        res.setImagingStudy(parseReference(xpp));
5723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
5724        res.getSeries().add(parseImagingObjectSelectionSeriesComponent(xpp, owner));
5725      } else if (!parseBackboneContent(eventType, xpp, res))
5726        unknownContent(xpp);
5727      eventType = nextNoWhitespace(xpp);
5728    }
5729    next(xpp);
5730    parseElementClose(res);
5731    return res;
5732  }
5733
5734  protected ImagingObjectSelection.SeriesComponent parseImagingObjectSelectionSeriesComponent(XmlPullParser xpp,
5735      ImagingObjectSelection owner) throws XmlPullParserException, IOException, FHIRFormatError {
5736    ImagingObjectSelection.SeriesComponent res = new ImagingObjectSelection.SeriesComponent();
5737    parseBackboneAttributes(xpp, res);
5738    next(xpp);
5739    int eventType = nextNoWhitespace(xpp);
5740    while (eventType != XmlPullParser.END_TAG) {
5741      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
5742        res.setUidElement(parseOid(xpp));
5743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5744        res.setUrlElement(parseUri(xpp));
5745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
5746        res.getInstance().add(parseImagingObjectSelectionInstanceComponent(xpp, owner));
5747      } else if (!parseBackboneContent(eventType, xpp, res))
5748        unknownContent(xpp);
5749      eventType = nextNoWhitespace(xpp);
5750    }
5751    next(xpp);
5752    parseElementClose(res);
5753    return res;
5754  }
5755
5756  protected ImagingObjectSelection.InstanceComponent parseImagingObjectSelectionInstanceComponent(XmlPullParser xpp,
5757      ImagingObjectSelection owner) throws XmlPullParserException, IOException, FHIRFormatError {
5758    ImagingObjectSelection.InstanceComponent res = new ImagingObjectSelection.InstanceComponent();
5759    parseBackboneAttributes(xpp, res);
5760    next(xpp);
5761    int eventType = nextNoWhitespace(xpp);
5762    while (eventType != XmlPullParser.END_TAG) {
5763      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
5764        res.setSopClassElement(parseOid(xpp));
5765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
5766        res.setUidElement(parseOid(xpp));
5767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5768        res.setUrlElement(parseUri(xpp));
5769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
5770        res.getFrames().add(parseImagingObjectSelectionFramesComponent(xpp, owner));
5771      } else if (!parseBackboneContent(eventType, xpp, res))
5772        unknownContent(xpp);
5773      eventType = nextNoWhitespace(xpp);
5774    }
5775    next(xpp);
5776    parseElementClose(res);
5777    return res;
5778  }
5779
5780  protected ImagingObjectSelection.FramesComponent parseImagingObjectSelectionFramesComponent(XmlPullParser xpp,
5781      ImagingObjectSelection owner) throws XmlPullParserException, IOException, FHIRFormatError {
5782    ImagingObjectSelection.FramesComponent res = new ImagingObjectSelection.FramesComponent();
5783    parseBackboneAttributes(xpp, res);
5784    next(xpp);
5785    int eventType = nextNoWhitespace(xpp);
5786    while (eventType != XmlPullParser.END_TAG) {
5787      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frameNumbers")) {
5788        res.getFrameNumbers().add(parseUnsignedInt(xpp));
5789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5790        res.setUrlElement(parseUri(xpp));
5791      } else if (!parseBackboneContent(eventType, xpp, res))
5792        unknownContent(xpp);
5793      eventType = nextNoWhitespace(xpp);
5794    }
5795    next(xpp);
5796    parseElementClose(res);
5797    return res;
5798  }
5799
5800  protected ImagingStudy parseImagingStudy(XmlPullParser xpp)
5801      throws XmlPullParserException, IOException, FHIRFormatError {
5802    ImagingStudy res = new ImagingStudy();
5803    parseDomainResourceAttributes(xpp, res);
5804    next(xpp);
5805    int eventType = nextNoWhitespace(xpp);
5806    while (eventType != XmlPullParser.END_TAG) {
5807      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
5808        res.setStartedElement(parseDateTime(xpp));
5809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5810        res.setPatient(parseReference(xpp));
5811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
5812        res.setUidElement(parseOid(xpp));
5813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accession")) {
5814        res.setAccession(parseIdentifier(xpp));
5815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5816        res.getIdentifier().add(parseIdentifier(xpp));
5817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
5818        res.getOrder().add(parseReference(xpp));
5819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modalityList")) {
5820        res.getModalityList().add(parseCoding(xpp));
5821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referrer")) {
5822        res.setReferrer(parseReference(xpp));
5823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availability")) {
5824        res.setAvailabilityElement(parseEnumeration(xpp, ImagingStudy.InstanceAvailability.NULL,
5825            new ImagingStudy.InstanceAvailabilityEnumFactory()));
5826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5827        res.setUrlElement(parseUri(xpp));
5828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSeries")) {
5829        res.setNumberOfSeriesElement(parseUnsignedInt(xpp));
5830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
5831        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
5832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
5833        res.getProcedure().add(parseReference(xpp));
5834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpreter")) {
5835        res.setInterpreter(parseReference(xpp));
5836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5837        res.setDescriptionElement(parseString(xpp));
5838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
5839        res.getSeries().add(parseImagingStudyImagingStudySeriesComponent(xpp, res));
5840      } else if (!parseDomainResourceContent(eventType, xpp, res))
5841        unknownContent(xpp);
5842      eventType = nextNoWhitespace(xpp);
5843    }
5844    next(xpp);
5845    parseElementClose(res);
5846    return res;
5847  }
5848
5849  protected ImagingStudy.ImagingStudySeriesComponent parseImagingStudyImagingStudySeriesComponent(XmlPullParser xpp,
5850      ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
5851    ImagingStudy.ImagingStudySeriesComponent res = new ImagingStudy.ImagingStudySeriesComponent();
5852    parseBackboneAttributes(xpp, res);
5853    next(xpp);
5854    int eventType = nextNoWhitespace(xpp);
5855    while (eventType != XmlPullParser.END_TAG) {
5856      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
5857        res.setNumberElement(parseUnsignedInt(xpp));
5858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
5859        res.setModality(parseCoding(xpp));
5860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
5861        res.setUidElement(parseOid(xpp));
5862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5863        res.setDescriptionElement(parseString(xpp));
5864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
5865        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
5866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availability")) {
5867        res.setAvailabilityElement(parseEnumeration(xpp, ImagingStudy.InstanceAvailability.NULL,
5868            new ImagingStudy.InstanceAvailabilityEnumFactory()));
5869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5870        res.setUrlElement(parseUri(xpp));
5871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
5872        res.setBodySite(parseCoding(xpp));
5873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("laterality")) {
5874        res.setLaterality(parseCoding(xpp));
5875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
5876        res.setStartedElement(parseDateTime(xpp));
5877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
5878        res.getInstance().add(parseImagingStudyImagingStudySeriesInstanceComponent(xpp, owner));
5879      } else if (!parseBackboneContent(eventType, xpp, res))
5880        unknownContent(xpp);
5881      eventType = nextNoWhitespace(xpp);
5882    }
5883    next(xpp);
5884    parseElementClose(res);
5885    return res;
5886  }
5887
5888  protected ImagingStudy.ImagingStudySeriesInstanceComponent parseImagingStudyImagingStudySeriesInstanceComponent(
5889      XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
5890    ImagingStudy.ImagingStudySeriesInstanceComponent res = new ImagingStudy.ImagingStudySeriesInstanceComponent();
5891    parseBackboneAttributes(xpp, res);
5892    next(xpp);
5893    int eventType = nextNoWhitespace(xpp);
5894    while (eventType != XmlPullParser.END_TAG) {
5895      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
5896        res.setNumberElement(parseUnsignedInt(xpp));
5897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
5898        res.setUidElement(parseOid(xpp));
5899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
5900        res.setSopClassElement(parseOid(xpp));
5901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5902        res.setTypeElement(parseString(xpp));
5903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5904        res.setTitleElement(parseString(xpp));
5905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
5906        res.getContent().add(parseAttachment(xpp));
5907      } else if (!parseBackboneContent(eventType, xpp, res))
5908        unknownContent(xpp);
5909      eventType = nextNoWhitespace(xpp);
5910    }
5911    next(xpp);
5912    parseElementClose(res);
5913    return res;
5914  }
5915
5916  protected Immunization parseImmunization(XmlPullParser xpp)
5917      throws XmlPullParserException, IOException, FHIRFormatError {
5918    Immunization res = new Immunization();
5919    parseDomainResourceAttributes(xpp, res);
5920    next(xpp);
5921    int eventType = nextNoWhitespace(xpp);
5922    while (eventType != XmlPullParser.END_TAG) {
5923      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5924        res.getIdentifier().add(parseIdentifier(xpp));
5925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5926        res.setStatusElement(parseCode(xpp));
5927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5928        res.setDateElement(parseDateTime(xpp));
5929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
5930        res.setVaccineCode(parseCodeableConcept(xpp));
5931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5932        res.setPatient(parseReference(xpp));
5933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasNotGiven")) {
5934        res.setWasNotGivenElement(parseBoolean(xpp));
5935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
5936        res.setReportedElement(parseBoolean(xpp));
5937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
5938        res.setPerformer(parseReference(xpp));
5939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
5940        res.setRequester(parseReference(xpp));
5941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5942        res.setEncounter(parseReference(xpp));
5943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
5944        res.setManufacturer(parseReference(xpp));
5945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
5946        res.setLocation(parseReference(xpp));
5947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
5948        res.setLotNumberElement(parseString(xpp));
5949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
5950        res.setExpirationDateElement(parseDate(xpp));
5951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
5952        res.setSite(parseCodeableConcept(xpp));
5953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
5954        res.setRoute(parseCodeableConcept(xpp));
5955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseQuantity")) {
5956        res.setDoseQuantity(parseSimpleQuantity(xpp));
5957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5958        res.getNote().add(parseAnnotation(xpp));
5959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("explanation")) {
5960        res.setExplanation(parseImmunizationImmunizationExplanationComponent(xpp, res));
5961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
5962        res.getReaction().add(parseImmunizationImmunizationReactionComponent(xpp, res));
5963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccinationProtocol")) {
5964        res.getVaccinationProtocol().add(parseImmunizationImmunizationVaccinationProtocolComponent(xpp, res));
5965      } else if (!parseDomainResourceContent(eventType, xpp, res))
5966        unknownContent(xpp);
5967      eventType = nextNoWhitespace(xpp);
5968    }
5969    next(xpp);
5970    parseElementClose(res);
5971    return res;
5972  }
5973
5974  protected Immunization.ImmunizationExplanationComponent parseImmunizationImmunizationExplanationComponent(
5975      XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
5976    Immunization.ImmunizationExplanationComponent res = new Immunization.ImmunizationExplanationComponent();
5977    parseBackboneAttributes(xpp, res);
5978    next(xpp);
5979    int eventType = nextNoWhitespace(xpp);
5980    while (eventType != XmlPullParser.END_TAG) {
5981      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
5982        res.getReason().add(parseCodeableConcept(xpp));
5983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotGiven")) {
5984        res.getReasonNotGiven().add(parseCodeableConcept(xpp));
5985      } else if (!parseBackboneContent(eventType, xpp, res))
5986        unknownContent(xpp);
5987      eventType = nextNoWhitespace(xpp);
5988    }
5989    next(xpp);
5990    parseElementClose(res);
5991    return res;
5992  }
5993
5994  protected Immunization.ImmunizationReactionComponent parseImmunizationImmunizationReactionComponent(XmlPullParser xpp,
5995      Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
5996    Immunization.ImmunizationReactionComponent res = new Immunization.ImmunizationReactionComponent();
5997    parseBackboneAttributes(xpp, res);
5998    next(xpp);
5999    int eventType = nextNoWhitespace(xpp);
6000    while (eventType != XmlPullParser.END_TAG) {
6001      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6002        res.setDateElement(parseDateTime(xpp));
6003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6004        res.setDetail(parseReference(xpp));
6005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
6006        res.setReportedElement(parseBoolean(xpp));
6007      } else if (!parseBackboneContent(eventType, xpp, res))
6008        unknownContent(xpp);
6009      eventType = nextNoWhitespace(xpp);
6010    }
6011    next(xpp);
6012    parseElementClose(res);
6013    return res;
6014  }
6015
6016  protected Immunization.ImmunizationVaccinationProtocolComponent parseImmunizationImmunizationVaccinationProtocolComponent(
6017      XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
6018    Immunization.ImmunizationVaccinationProtocolComponent res = new Immunization.ImmunizationVaccinationProtocolComponent();
6019    parseBackboneAttributes(xpp, res);
6020    next(xpp);
6021    int eventType = nextNoWhitespace(xpp);
6022    while (eventType != XmlPullParser.END_TAG) {
6023      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseSequence")) {
6024        res.setDoseSequenceElement(parsePositiveInt(xpp));
6025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6026        res.setDescriptionElement(parseString(xpp));
6027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
6028        res.setAuthority(parseReference(xpp));
6029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
6030        res.setSeriesElement(parseString(xpp));
6031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriesDoses")) {
6032        res.setSeriesDosesElement(parsePositiveInt(xpp));
6033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
6034        res.getTargetDisease().add(parseCodeableConcept(xpp));
6035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatus")) {
6036        res.setDoseStatus(parseCodeableConcept(xpp));
6037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatusReason")) {
6038        res.setDoseStatusReason(parseCodeableConcept(xpp));
6039      } else if (!parseBackboneContent(eventType, xpp, res))
6040        unknownContent(xpp);
6041      eventType = nextNoWhitespace(xpp);
6042    }
6043    next(xpp);
6044    parseElementClose(res);
6045    return res;
6046  }
6047
6048  protected ImmunizationRecommendation parseImmunizationRecommendation(XmlPullParser xpp)
6049      throws XmlPullParserException, IOException, FHIRFormatError {
6050    ImmunizationRecommendation res = new ImmunizationRecommendation();
6051    parseDomainResourceAttributes(xpp, res);
6052    next(xpp);
6053    int eventType = nextNoWhitespace(xpp);
6054    while (eventType != XmlPullParser.END_TAG) {
6055      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6056        res.getIdentifier().add(parseIdentifier(xpp));
6057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6058        res.setPatient(parseReference(xpp));
6059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recommendation")) {
6060        res.getRecommendation()
6061            .add(parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(xpp, res));
6062      } else if (!parseDomainResourceContent(eventType, xpp, res))
6063        unknownContent(xpp);
6064      eventType = nextNoWhitespace(xpp);
6065    }
6066    next(xpp);
6067    parseElementClose(res);
6068    return res;
6069  }
6070
6071  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(
6072      XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
6073    ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent();
6074    parseBackboneAttributes(xpp, res);
6075    next(xpp);
6076    int eventType = nextNoWhitespace(xpp);
6077    while (eventType != XmlPullParser.END_TAG) {
6078      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6079        res.setDateElement(parseDateTime(xpp));
6080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
6081        res.setVaccineCode(parseCodeableConcept(xpp));
6082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseNumber")) {
6083        res.setDoseNumberElement(parsePositiveInt(xpp));
6084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastStatus")) {
6085        res.setForecastStatus(parseCodeableConcept(xpp));
6086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateCriterion")) {
6087        res.getDateCriterion().add(
6088            parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(xpp, owner));
6089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
6090        res.setProtocol(
6091            parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(xpp, owner));
6092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingImmunization")) {
6093        res.getSupportingImmunization().add(parseReference(xpp));
6094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingPatientInformation")) {
6095        res.getSupportingPatientInformation().add(parseReference(xpp));
6096      } else if (!parseBackboneContent(eventType, xpp, res))
6097        unknownContent(xpp);
6098      eventType = nextNoWhitespace(xpp);
6099    }
6100    next(xpp);
6101    parseElementClose(res);
6102    return res;
6103  }
6104
6105  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(
6106      XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
6107    ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent();
6108    parseBackboneAttributes(xpp, res);
6109    next(xpp);
6110    int eventType = nextNoWhitespace(xpp);
6111    while (eventType != XmlPullParser.END_TAG) {
6112      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6113        res.setCode(parseCodeableConcept(xpp));
6114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6115        res.setValueElement(parseDateTime(xpp));
6116      } else if (!parseBackboneContent(eventType, xpp, res))
6117        unknownContent(xpp);
6118      eventType = nextNoWhitespace(xpp);
6119    }
6120    next(xpp);
6121    parseElementClose(res);
6122    return res;
6123  }
6124
6125  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(
6126      XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
6127    ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent();
6128    parseBackboneAttributes(xpp, res);
6129    next(xpp);
6130    int eventType = nextNoWhitespace(xpp);
6131    while (eventType != XmlPullParser.END_TAG) {
6132      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseSequence")) {
6133        res.setDoseSequenceElement(parseInteger(xpp));
6134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6135        res.setDescriptionElement(parseString(xpp));
6136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
6137        res.setAuthority(parseReference(xpp));
6138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
6139        res.setSeriesElement(parseString(xpp));
6140      } else if (!parseBackboneContent(eventType, xpp, res))
6141        unknownContent(xpp);
6142      eventType = nextNoWhitespace(xpp);
6143    }
6144    next(xpp);
6145    parseElementClose(res);
6146    return res;
6147  }
6148
6149  protected ImplementationGuide parseImplementationGuide(XmlPullParser xpp)
6150      throws XmlPullParserException, IOException, FHIRFormatError {
6151    ImplementationGuide res = new ImplementationGuide();
6152    parseDomainResourceAttributes(xpp, res);
6153    next(xpp);
6154    int eventType = nextNoWhitespace(xpp);
6155    while (eventType != XmlPullParser.END_TAG) {
6156      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6157        res.setUrlElement(parseUri(xpp));
6158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6159        res.setVersionElement(parseString(xpp));
6160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6161        res.setNameElement(parseString(xpp));
6162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6163        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL,
6164            new Enumerations.ConformanceResourceStatusEnumFactory()));
6165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
6166        res.setExperimentalElement(parseBoolean(xpp));
6167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6168        res.setPublisherElement(parseString(xpp));
6169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6170        res.getContact().add(parseImplementationGuideImplementationGuideContactComponent(xpp, res));
6171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6172        res.setDateElement(parseDateTime(xpp));
6173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6174        res.setDescriptionElement(parseString(xpp));
6175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
6176        res.getUseContext().add(parseCodeableConcept(xpp));
6177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
6178        res.setCopyrightElement(parseString(xpp));
6179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
6180        res.setFhirVersionElement(parseId(xpp));
6181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependency")) {
6182        res.getDependency().add(parseImplementationGuideImplementationGuideDependencyComponent(xpp, res));
6183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
6184        res.getPackage().add(parseImplementationGuideImplementationGuidePackageComponent(xpp, res));
6185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("global")) {
6186        res.getGlobal().add(parseImplementationGuideImplementationGuideGlobalComponent(xpp, res));
6187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binary")) {
6188        res.getBinary().add(parseUri(xpp));
6189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
6190        res.setPage(parseImplementationGuideImplementationGuidePageComponent(xpp, res));
6191      } else if (!parseDomainResourceContent(eventType, xpp, res))
6192        unknownContent(xpp);
6193      eventType = nextNoWhitespace(xpp);
6194    }
6195    next(xpp);
6196    parseElementClose(res);
6197    return res;
6198  }
6199
6200  protected ImplementationGuide.ImplementationGuideContactComponent parseImplementationGuideImplementationGuideContactComponent(
6201      XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
6202    ImplementationGuide.ImplementationGuideContactComponent res = new ImplementationGuide.ImplementationGuideContactComponent();
6203    parseBackboneAttributes(xpp, res);
6204    next(xpp);
6205    int eventType = nextNoWhitespace(xpp);
6206    while (eventType != XmlPullParser.END_TAG) {
6207      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6208        res.setNameElement(parseString(xpp));
6209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
6210        res.getTelecom().add(parseContactPoint(xpp));
6211      } else if (!parseBackboneContent(eventType, xpp, res))
6212        unknownContent(xpp);
6213      eventType = nextNoWhitespace(xpp);
6214    }
6215    next(xpp);
6216    parseElementClose(res);
6217    return res;
6218  }
6219
6220  protected ImplementationGuide.ImplementationGuideDependencyComponent parseImplementationGuideImplementationGuideDependencyComponent(
6221      XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
6222    ImplementationGuide.ImplementationGuideDependencyComponent res = new ImplementationGuide.ImplementationGuideDependencyComponent();
6223    parseBackboneAttributes(xpp, res);
6224    next(xpp);
6225    int eventType = nextNoWhitespace(xpp);
6226    while (eventType != XmlPullParser.END_TAG) {
6227      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6228        res.setTypeElement(parseEnumeration(xpp, ImplementationGuide.GuideDependencyType.NULL,
6229            new ImplementationGuide.GuideDependencyTypeEnumFactory()));
6230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
6231        res.setUriElement(parseUri(xpp));
6232      } else if (!parseBackboneContent(eventType, xpp, res))
6233        unknownContent(xpp);
6234      eventType = nextNoWhitespace(xpp);
6235    }
6236    next(xpp);
6237    parseElementClose(res);
6238    return res;
6239  }
6240
6241  protected ImplementationGuide.ImplementationGuidePackageComponent parseImplementationGuideImplementationGuidePackageComponent(
6242      XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
6243    ImplementationGuide.ImplementationGuidePackageComponent res = new ImplementationGuide.ImplementationGuidePackageComponent();
6244    parseBackboneAttributes(xpp, res);
6245    next(xpp);
6246    int eventType = nextNoWhitespace(xpp);
6247    while (eventType != XmlPullParser.END_TAG) {
6248      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6249        res.setNameElement(parseString(xpp));
6250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6251        res.setDescriptionElement(parseString(xpp));
6252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
6253        res.getResource().add(parseImplementationGuideImplementationGuidePackageResourceComponent(xpp, owner));
6254      } else if (!parseBackboneContent(eventType, xpp, res))
6255        unknownContent(xpp);
6256      eventType = nextNoWhitespace(xpp);
6257    }
6258    next(xpp);
6259    parseElementClose(res);
6260    return res;
6261  }
6262
6263  protected ImplementationGuide.ImplementationGuidePackageResourceComponent parseImplementationGuideImplementationGuidePackageResourceComponent(
6264      XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
6265    ImplementationGuide.ImplementationGuidePackageResourceComponent res = new ImplementationGuide.ImplementationGuidePackageResourceComponent();
6266    parseBackboneAttributes(xpp, res);
6267    next(xpp);
6268    int eventType = nextNoWhitespace(xpp);
6269    while (eventType != XmlPullParser.END_TAG) {
6270      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
6271        res.setPurposeElement(parseEnumeration(xpp, ImplementationGuide.GuideResourcePurpose.NULL,
6272            new ImplementationGuide.GuideResourcePurposeEnumFactory()));
6273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6274        res.setNameElement(parseString(xpp));
6275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6276        res.setDescriptionElement(parseString(xpp));
6277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("acronym")) {
6278        res.setAcronymElement(parseString(xpp));
6279      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
6280        res.setSource(parseType("source", xpp));
6281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exampleFor")) {
6282        res.setExampleFor(parseReference(xpp));
6283      } else if (!parseBackboneContent(eventType, xpp, res))
6284        unknownContent(xpp);
6285      eventType = nextNoWhitespace(xpp);
6286    }
6287    next(xpp);
6288    parseElementClose(res);
6289    return res;
6290  }
6291
6292  protected ImplementationGuide.ImplementationGuideGlobalComponent parseImplementationGuideImplementationGuideGlobalComponent(
6293      XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
6294    ImplementationGuide.ImplementationGuideGlobalComponent res = new ImplementationGuide.ImplementationGuideGlobalComponent();
6295    parseBackboneAttributes(xpp, res);
6296    next(xpp);
6297    int eventType = nextNoWhitespace(xpp);
6298    while (eventType != XmlPullParser.END_TAG) {
6299      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6300        res.setTypeElement(parseCode(xpp));
6301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
6302        res.setProfile(parseReference(xpp));
6303      } else if (!parseBackboneContent(eventType, xpp, res))
6304        unknownContent(xpp);
6305      eventType = nextNoWhitespace(xpp);
6306    }
6307    next(xpp);
6308    parseElementClose(res);
6309    return res;
6310  }
6311
6312  protected ImplementationGuide.ImplementationGuidePageComponent parseImplementationGuideImplementationGuidePageComponent(
6313      XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
6314    ImplementationGuide.ImplementationGuidePageComponent res = new ImplementationGuide.ImplementationGuidePageComponent();
6315    parseBackboneAttributes(xpp, res);
6316    next(xpp);
6317    int eventType = nextNoWhitespace(xpp);
6318    while (eventType != XmlPullParser.END_TAG) {
6319      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6320        res.setSourceElement(parseUri(xpp));
6321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6322        res.setNameElement(parseString(xpp));
6323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
6324        res.setKindElement(parseEnumeration(xpp, ImplementationGuide.GuidePageKind.NULL,
6325            new ImplementationGuide.GuidePageKindEnumFactory()));
6326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6327        res.getType().add(parseCode(xpp));
6328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
6329        res.getPackage().add(parseString(xpp));
6330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
6331        res.setFormatElement(parseCode(xpp));
6332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
6333        res.getPage().add(parseImplementationGuideImplementationGuidePageComponent(xpp, owner));
6334      } else if (!parseBackboneContent(eventType, xpp, res))
6335        unknownContent(xpp);
6336      eventType = nextNoWhitespace(xpp);
6337    }
6338    next(xpp);
6339    parseElementClose(res);
6340    return res;
6341  }
6342
6343  protected List_ parseList_(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6344    List_ res = new List_();
6345    parseDomainResourceAttributes(xpp, res);
6346    next(xpp);
6347    int eventType = nextNoWhitespace(xpp);
6348    while (eventType != XmlPullParser.END_TAG) {
6349      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6350        res.getIdentifier().add(parseIdentifier(xpp));
6351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6352        res.setTitleElement(parseString(xpp));
6353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6354        res.setCode(parseCodeableConcept(xpp));
6355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6356        res.setSubject(parseReference(xpp));
6357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6358        res.setSource(parseReference(xpp));
6359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6360        res.setEncounter(parseReference(xpp));
6361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6362        res.setStatusElement(parseEnumeration(xpp, List_.ListStatus.NULL, new List_.ListStatusEnumFactory()));
6363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6364        res.setDateElement(parseDateTime(xpp));
6365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
6366        res.setOrderedBy(parseCodeableConcept(xpp));
6367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
6368        res.setModeElement(parseEnumeration(xpp, List_.ListMode.NULL, new List_.ListModeEnumFactory()));
6369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6370        res.setNoteElement(parseString(xpp));
6371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
6372        res.getEntry().add(parseList_ListEntryComponent(xpp, res));
6373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
6374        res.setEmptyReason(parseCodeableConcept(xpp));
6375      } else if (!parseDomainResourceContent(eventType, xpp, res))
6376        unknownContent(xpp);
6377      eventType = nextNoWhitespace(xpp);
6378    }
6379    next(xpp);
6380    parseElementClose(res);
6381    return res;
6382  }
6383
6384  protected List_.ListEntryComponent parseList_ListEntryComponent(XmlPullParser xpp, List_ owner)
6385      throws XmlPullParserException, IOException, FHIRFormatError {
6386    List_.ListEntryComponent res = new List_.ListEntryComponent();
6387    parseBackboneAttributes(xpp, res);
6388    next(xpp);
6389    int eventType = nextNoWhitespace(xpp);
6390    while (eventType != XmlPullParser.END_TAG) {
6391      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("flag")) {
6392        res.setFlag(parseCodeableConcept(xpp));
6393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deleted")) {
6394        res.setDeletedElement(parseBoolean(xpp));
6395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6396        res.setDateElement(parseDateTime(xpp));
6397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
6398        res.setItem(parseReference(xpp));
6399      } else if (!parseBackboneContent(eventType, xpp, res))
6400        unknownContent(xpp);
6401      eventType = nextNoWhitespace(xpp);
6402    }
6403    next(xpp);
6404    parseElementClose(res);
6405    return res;
6406  }
6407
6408  protected Location parseLocation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6409    Location res = new Location();
6410    parseDomainResourceAttributes(xpp, res);
6411    next(xpp);
6412    int eventType = nextNoWhitespace(xpp);
6413    while (eventType != XmlPullParser.END_TAG) {
6414      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6415        res.getIdentifier().add(parseIdentifier(xpp));
6416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6417        res.setStatusElement(
6418            parseEnumeration(xpp, Location.LocationStatus.NULL, new Location.LocationStatusEnumFactory()));
6419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6420        res.setNameElement(parseString(xpp));
6421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6422        res.setDescriptionElement(parseString(xpp));
6423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
6424        res.setModeElement(parseEnumeration(xpp, Location.LocationMode.NULL, new Location.LocationModeEnumFactory()));
6425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6426        res.setType(parseCodeableConcept(xpp));
6427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
6428        res.getTelecom().add(parseContactPoint(xpp));
6429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
6430        res.setAddress(parseAddress(xpp));
6431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
6432        res.setPhysicalType(parseCodeableConcept(xpp));
6433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("position")) {
6434        res.setPosition(parseLocationLocationPositionComponent(xpp, res));
6435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
6436        res.setManagingOrganization(parseReference(xpp));
6437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
6438        res.setPartOf(parseReference(xpp));
6439      } else if (!parseDomainResourceContent(eventType, xpp, res))
6440        unknownContent(xpp);
6441      eventType = nextNoWhitespace(xpp);
6442    }
6443    next(xpp);
6444    parseElementClose(res);
6445    return res;
6446  }
6447
6448  protected Location.LocationPositionComponent parseLocationLocationPositionComponent(XmlPullParser xpp, Location owner)
6449      throws XmlPullParserException, IOException, FHIRFormatError {
6450    Location.LocationPositionComponent res = new Location.LocationPositionComponent();
6451    parseBackboneAttributes(xpp, res);
6452    next(xpp);
6453    int eventType = nextNoWhitespace(xpp);
6454    while (eventType != XmlPullParser.END_TAG) {
6455      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("longitude")) {
6456        res.setLongitudeElement(parseDecimal(xpp));
6457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("latitude")) {
6458        res.setLatitudeElement(parseDecimal(xpp));
6459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altitude")) {
6460        res.setAltitudeElement(parseDecimal(xpp));
6461      } else if (!parseBackboneContent(eventType, xpp, res))
6462        unknownContent(xpp);
6463      eventType = nextNoWhitespace(xpp);
6464    }
6465    next(xpp);
6466    parseElementClose(res);
6467    return res;
6468  }
6469
6470  protected Media parseMedia(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6471    Media res = new Media();
6472    parseDomainResourceAttributes(xpp, res);
6473    next(xpp);
6474    int eventType = nextNoWhitespace(xpp);
6475    while (eventType != XmlPullParser.END_TAG) {
6476      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6477        res.setTypeElement(parseEnumeration(xpp, Media.DigitalMediaType.NULL, new Media.DigitalMediaTypeEnumFactory()));
6478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
6479        res.setSubtype(parseCodeableConcept(xpp));
6480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6481        res.getIdentifier().add(parseIdentifier(xpp));
6482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6483        res.setSubject(parseReference(xpp));
6484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
6485        res.setOperator(parseReference(xpp));
6486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("view")) {
6487        res.setView(parseCodeableConcept(xpp));
6488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
6489        res.setDeviceNameElement(parseString(xpp));
6490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
6491        res.setHeightElement(parsePositiveInt(xpp));
6492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
6493        res.setWidthElement(parsePositiveInt(xpp));
6494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
6495        res.setFramesElement(parsePositiveInt(xpp));
6496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
6497        res.setDurationElement(parseUnsignedInt(xpp));
6498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
6499        res.setContent(parseAttachment(xpp));
6500      } else if (!parseDomainResourceContent(eventType, xpp, res))
6501        unknownContent(xpp);
6502      eventType = nextNoWhitespace(xpp);
6503    }
6504    next(xpp);
6505    parseElementClose(res);
6506    return res;
6507  }
6508
6509  protected Medication parseMedication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6510    Medication res = new Medication();
6511    parseDomainResourceAttributes(xpp, res);
6512    next(xpp);
6513    int eventType = nextNoWhitespace(xpp);
6514    while (eventType != XmlPullParser.END_TAG) {
6515      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6516        res.setCode(parseCodeableConcept(xpp));
6517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isBrand")) {
6518        res.setIsBrandElement(parseBoolean(xpp));
6519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
6520        res.setManufacturer(parseReference(xpp));
6521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
6522        res.setProduct(parseMedicationMedicationProductComponent(xpp, res));
6523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
6524        res.setPackage(parseMedicationMedicationPackageComponent(xpp, res));
6525      } else if (!parseDomainResourceContent(eventType, xpp, res))
6526        unknownContent(xpp);
6527      eventType = nextNoWhitespace(xpp);
6528    }
6529    next(xpp);
6530    parseElementClose(res);
6531    return res;
6532  }
6533
6534  protected Medication.MedicationProductComponent parseMedicationMedicationProductComponent(XmlPullParser xpp,
6535      Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
6536    Medication.MedicationProductComponent res = new Medication.MedicationProductComponent();
6537    parseBackboneAttributes(xpp, res);
6538    next(xpp);
6539    int eventType = nextNoWhitespace(xpp);
6540    while (eventType != XmlPullParser.END_TAG) {
6541      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
6542        res.setForm(parseCodeableConcept(xpp));
6543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
6544        res.getIngredient().add(parseMedicationMedicationProductIngredientComponent(xpp, owner));
6545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batch")) {
6546        res.getBatch().add(parseMedicationMedicationProductBatchComponent(xpp, owner));
6547      } else if (!parseBackboneContent(eventType, xpp, res))
6548        unknownContent(xpp);
6549      eventType = nextNoWhitespace(xpp);
6550    }
6551    next(xpp);
6552    parseElementClose(res);
6553    return res;
6554  }
6555
6556  protected Medication.MedicationProductIngredientComponent parseMedicationMedicationProductIngredientComponent(
6557      XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
6558    Medication.MedicationProductIngredientComponent res = new Medication.MedicationProductIngredientComponent();
6559    parseBackboneAttributes(xpp, res);
6560    next(xpp);
6561    int eventType = nextNoWhitespace(xpp);
6562    while (eventType != XmlPullParser.END_TAG) {
6563      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
6564        res.setItem(parseReference(xpp));
6565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
6566        res.setAmount(parseRatio(xpp));
6567      } else if (!parseBackboneContent(eventType, xpp, res))
6568        unknownContent(xpp);
6569      eventType = nextNoWhitespace(xpp);
6570    }
6571    next(xpp);
6572    parseElementClose(res);
6573    return res;
6574  }
6575
6576  protected Medication.MedicationProductBatchComponent parseMedicationMedicationProductBatchComponent(XmlPullParser xpp,
6577      Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
6578    Medication.MedicationProductBatchComponent res = new Medication.MedicationProductBatchComponent();
6579    parseBackboneAttributes(xpp, res);
6580    next(xpp);
6581    int eventType = nextNoWhitespace(xpp);
6582    while (eventType != XmlPullParser.END_TAG) {
6583      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
6584        res.setLotNumberElement(parseString(xpp));
6585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
6586        res.setExpirationDateElement(parseDateTime(xpp));
6587      } else if (!parseBackboneContent(eventType, xpp, res))
6588        unknownContent(xpp);
6589      eventType = nextNoWhitespace(xpp);
6590    }
6591    next(xpp);
6592    parseElementClose(res);
6593    return res;
6594  }
6595
6596  protected Medication.MedicationPackageComponent parseMedicationMedicationPackageComponent(XmlPullParser xpp,
6597      Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
6598    Medication.MedicationPackageComponent res = new Medication.MedicationPackageComponent();
6599    parseBackboneAttributes(xpp, res);
6600    next(xpp);
6601    int eventType = nextNoWhitespace(xpp);
6602    while (eventType != XmlPullParser.END_TAG) {
6603      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
6604        res.setContainer(parseCodeableConcept(xpp));
6605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
6606        res.getContent().add(parseMedicationMedicationPackageContentComponent(xpp, owner));
6607      } else if (!parseBackboneContent(eventType, xpp, res))
6608        unknownContent(xpp);
6609      eventType = nextNoWhitespace(xpp);
6610    }
6611    next(xpp);
6612    parseElementClose(res);
6613    return res;
6614  }
6615
6616  protected Medication.MedicationPackageContentComponent parseMedicationMedicationPackageContentComponent(
6617      XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
6618    Medication.MedicationPackageContentComponent res = new Medication.MedicationPackageContentComponent();
6619    parseBackboneAttributes(xpp, res);
6620    next(xpp);
6621    int eventType = nextNoWhitespace(xpp);
6622    while (eventType != XmlPullParser.END_TAG) {
6623      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
6624        res.setItem(parseReference(xpp));
6625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
6626        res.setAmount(parseSimpleQuantity(xpp));
6627      } else if (!parseBackboneContent(eventType, xpp, res))
6628        unknownContent(xpp);
6629      eventType = nextNoWhitespace(xpp);
6630    }
6631    next(xpp);
6632    parseElementClose(res);
6633    return res;
6634  }
6635
6636  protected MedicationAdministration parseMedicationAdministration(XmlPullParser xpp)
6637      throws XmlPullParserException, IOException, FHIRFormatError {
6638    MedicationAdministration res = new MedicationAdministration();
6639    parseDomainResourceAttributes(xpp, res);
6640    next(xpp);
6641    int eventType = nextNoWhitespace(xpp);
6642    while (eventType != XmlPullParser.END_TAG) {
6643      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6644        res.getIdentifier().add(parseIdentifier(xpp));
6645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6646        res.setStatusElement(parseEnumeration(xpp, MedicationAdministration.MedicationAdministrationStatus.NULL,
6647            new MedicationAdministration.MedicationAdministrationStatusEnumFactory()));
6648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6649        res.setPatient(parseReference(xpp));
6650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
6651        res.setPractitioner(parseReference(xpp));
6652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6653        res.setEncounter(parseReference(xpp));
6654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
6655        res.setPrescription(parseReference(xpp));
6656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasNotGiven")) {
6657        res.setWasNotGivenElement(parseBoolean(xpp));
6658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotGiven")) {
6659        res.getReasonNotGiven().add(parseCodeableConcept(xpp));
6660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonGiven")) {
6661        res.getReasonGiven().add(parseCodeableConcept(xpp));
6662      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effectiveTime")) {
6663        res.setEffectiveTime(parseType("effectiveTime", xpp));
6664      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
6665        res.setMedication(parseType("medication", xpp));
6666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
6667        res.getDevice().add(parseReference(xpp));
6668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6669        res.setNoteElement(parseString(xpp));
6670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
6671        res.setDosage(parseMedicationAdministrationMedicationAdministrationDosageComponent(xpp, res));
6672      } else if (!parseDomainResourceContent(eventType, xpp, res))
6673        unknownContent(xpp);
6674      eventType = nextNoWhitespace(xpp);
6675    }
6676    next(xpp);
6677    parseElementClose(res);
6678    return res;
6679  }
6680
6681  protected MedicationAdministration.MedicationAdministrationDosageComponent parseMedicationAdministrationMedicationAdministrationDosageComponent(
6682      XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
6683    MedicationAdministration.MedicationAdministrationDosageComponent res = new MedicationAdministration.MedicationAdministrationDosageComponent();
6684    parseBackboneAttributes(xpp, res);
6685    next(xpp);
6686    int eventType = nextNoWhitespace(xpp);
6687    while (eventType != XmlPullParser.END_TAG) {
6688      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6689        res.setTextElement(parseString(xpp));
6690      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "site")) {
6691        res.setSite(parseType("site", xpp));
6692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
6693        res.setRoute(parseCodeableConcept(xpp));
6694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
6695        res.setMethod(parseCodeableConcept(xpp));
6696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6697        res.setQuantity(parseSimpleQuantity(xpp));
6698      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
6699        res.setRate(parseType("rate", xpp));
6700      } else if (!parseBackboneContent(eventType, xpp, res))
6701        unknownContent(xpp);
6702      eventType = nextNoWhitespace(xpp);
6703    }
6704    next(xpp);
6705    parseElementClose(res);
6706    return res;
6707  }
6708
6709  protected MedicationDispense parseMedicationDispense(XmlPullParser xpp)
6710      throws XmlPullParserException, IOException, FHIRFormatError {
6711    MedicationDispense res = new MedicationDispense();
6712    parseDomainResourceAttributes(xpp, res);
6713    next(xpp);
6714    int eventType = nextNoWhitespace(xpp);
6715    while (eventType != XmlPullParser.END_TAG) {
6716      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6717        res.setIdentifier(parseIdentifier(xpp));
6718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6719        res.setStatusElement(parseEnumeration(xpp, MedicationDispense.MedicationDispenseStatus.NULL,
6720            new MedicationDispense.MedicationDispenseStatusEnumFactory()));
6721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6722        res.setPatient(parseReference(xpp));
6723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenser")) {
6724        res.setDispenser(parseReference(xpp));
6725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizingPrescription")) {
6726        res.getAuthorizingPrescription().add(parseReference(xpp));
6727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6728        res.setType(parseCodeableConcept(xpp));
6729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6730        res.setQuantity(parseSimpleQuantity(xpp));
6731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysSupply")) {
6732        res.setDaysSupply(parseSimpleQuantity(xpp));
6733      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
6734        res.setMedication(parseType("medication", xpp));
6735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
6736        res.setWhenPreparedElement(parseDateTime(xpp));
6737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
6738        res.setWhenHandedOverElement(parseDateTime(xpp));
6739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
6740        res.setDestination(parseReference(xpp));
6741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
6742        res.getReceiver().add(parseReference(xpp));
6743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6744        res.setNoteElement(parseString(xpp));
6745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
6746        res.getDosageInstruction().add(parseMedicationDispenseMedicationDispenseDosageInstructionComponent(xpp, res));
6747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
6748        res.setSubstitution(parseMedicationDispenseMedicationDispenseSubstitutionComponent(xpp, res));
6749      } else if (!parseDomainResourceContent(eventType, xpp, res))
6750        unknownContent(xpp);
6751      eventType = nextNoWhitespace(xpp);
6752    }
6753    next(xpp);
6754    parseElementClose(res);
6755    return res;
6756  }
6757
6758  protected MedicationDispense.MedicationDispenseDosageInstructionComponent parseMedicationDispenseMedicationDispenseDosageInstructionComponent(
6759      XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
6760    MedicationDispense.MedicationDispenseDosageInstructionComponent res = new MedicationDispense.MedicationDispenseDosageInstructionComponent();
6761    parseBackboneAttributes(xpp, res);
6762    next(xpp);
6763    int eventType = nextNoWhitespace(xpp);
6764    while (eventType != XmlPullParser.END_TAG) {
6765      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6766        res.setTextElement(parseString(xpp));
6767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstructions")) {
6768        res.setAdditionalInstructions(parseCodeableConcept(xpp));
6769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
6770        res.setTiming(parseTiming(xpp));
6771      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
6772        res.setAsNeeded(parseType("asNeeded", xpp));
6773      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "site")) {
6774        res.setSite(parseType("site", xpp));
6775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
6776        res.setRoute(parseCodeableConcept(xpp));
6777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
6778        res.setMethod(parseCodeableConcept(xpp));
6779      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
6780        res.setDose(parseType("dose", xpp));
6781      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
6782        res.setRate(parseType("rate", xpp));
6783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
6784        res.setMaxDosePerPeriod(parseRatio(xpp));
6785      } else if (!parseBackboneContent(eventType, xpp, res))
6786        unknownContent(xpp);
6787      eventType = nextNoWhitespace(xpp);
6788    }
6789    next(xpp);
6790    parseElementClose(res);
6791    return res;
6792  }
6793
6794  protected MedicationDispense.MedicationDispenseSubstitutionComponent parseMedicationDispenseMedicationDispenseSubstitutionComponent(
6795      XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
6796    MedicationDispense.MedicationDispenseSubstitutionComponent res = new MedicationDispense.MedicationDispenseSubstitutionComponent();
6797    parseBackboneAttributes(xpp, res);
6798    next(xpp);
6799    int eventType = nextNoWhitespace(xpp);
6800    while (eventType != XmlPullParser.END_TAG) {
6801      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6802        res.setType(parseCodeableConcept(xpp));
6803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
6804        res.getReason().add(parseCodeableConcept(xpp));
6805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibleParty")) {
6806        res.getResponsibleParty().add(parseReference(xpp));
6807      } else if (!parseBackboneContent(eventType, xpp, res))
6808        unknownContent(xpp);
6809      eventType = nextNoWhitespace(xpp);
6810    }
6811    next(xpp);
6812    parseElementClose(res);
6813    return res;
6814  }
6815
6816  protected MedicationOrder parseMedicationOrder(XmlPullParser xpp)
6817      throws XmlPullParserException, IOException, FHIRFormatError {
6818    MedicationOrder res = new MedicationOrder();
6819    parseDomainResourceAttributes(xpp, res);
6820    next(xpp);
6821    int eventType = nextNoWhitespace(xpp);
6822    while (eventType != XmlPullParser.END_TAG) {
6823      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6824        res.getIdentifier().add(parseIdentifier(xpp));
6825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
6826        res.setDateWrittenElement(parseDateTime(xpp));
6827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6828        res.setStatusElement(parseEnumeration(xpp, MedicationOrder.MedicationOrderStatus.NULL,
6829            new MedicationOrder.MedicationOrderStatusEnumFactory()));
6830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateEnded")) {
6831        res.setDateEndedElement(parseDateTime(xpp));
6832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonEnded")) {
6833        res.setReasonEnded(parseCodeableConcept(xpp));
6834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6835        res.setPatient(parseReference(xpp));
6836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
6837        res.setPrescriber(parseReference(xpp));
6838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6839        res.setEncounter(parseReference(xpp));
6840      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
6841        res.setReason(parseType("reason", xpp));
6842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6843        res.setNoteElement(parseString(xpp));
6844      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
6845        res.setMedication(parseType("medication", xpp));
6846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
6847        res.getDosageInstruction().add(parseMedicationOrderMedicationOrderDosageInstructionComponent(xpp, res));
6848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseRequest")) {
6849        res.setDispenseRequest(parseMedicationOrderMedicationOrderDispenseRequestComponent(xpp, res));
6850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
6851        res.setSubstitution(parseMedicationOrderMedicationOrderSubstitutionComponent(xpp, res));
6852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorPrescription")) {
6853        res.setPriorPrescription(parseReference(xpp));
6854      } else if (!parseDomainResourceContent(eventType, xpp, res))
6855        unknownContent(xpp);
6856      eventType = nextNoWhitespace(xpp);
6857    }
6858    next(xpp);
6859    parseElementClose(res);
6860    return res;
6861  }
6862
6863  protected MedicationOrder.MedicationOrderDosageInstructionComponent parseMedicationOrderMedicationOrderDosageInstructionComponent(
6864      XmlPullParser xpp, MedicationOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
6865    MedicationOrder.MedicationOrderDosageInstructionComponent res = new MedicationOrder.MedicationOrderDosageInstructionComponent();
6866    parseBackboneAttributes(xpp, res);
6867    next(xpp);
6868    int eventType = nextNoWhitespace(xpp);
6869    while (eventType != XmlPullParser.END_TAG) {
6870      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6871        res.setTextElement(parseString(xpp));
6872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstructions")) {
6873        res.setAdditionalInstructions(parseCodeableConcept(xpp));
6874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
6875        res.setTiming(parseTiming(xpp));
6876      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
6877        res.setAsNeeded(parseType("asNeeded", xpp));
6878      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "site")) {
6879        res.setSite(parseType("site", xpp));
6880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
6881        res.setRoute(parseCodeableConcept(xpp));
6882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
6883        res.setMethod(parseCodeableConcept(xpp));
6884      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
6885        res.setDose(parseType("dose", xpp));
6886      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
6887        res.setRate(parseType("rate", xpp));
6888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
6889        res.setMaxDosePerPeriod(parseRatio(xpp));
6890      } else if (!parseBackboneContent(eventType, xpp, res))
6891        unknownContent(xpp);
6892      eventType = nextNoWhitespace(xpp);
6893    }
6894    next(xpp);
6895    parseElementClose(res);
6896    return res;
6897  }
6898
6899  protected MedicationOrder.MedicationOrderDispenseRequestComponent parseMedicationOrderMedicationOrderDispenseRequestComponent(
6900      XmlPullParser xpp, MedicationOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
6901    MedicationOrder.MedicationOrderDispenseRequestComponent res = new MedicationOrder.MedicationOrderDispenseRequestComponent();
6902    parseBackboneAttributes(xpp, res);
6903    next(xpp);
6904    int eventType = nextNoWhitespace(xpp);
6905    while (eventType != XmlPullParser.END_TAG) {
6906      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
6907        res.setMedication(parseType("medication", xpp));
6908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
6909        res.setValidityPeriod(parsePeriod(xpp));
6910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfRepeatsAllowed")) {
6911        res.setNumberOfRepeatsAllowedElement(parsePositiveInt(xpp));
6912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6913        res.setQuantity(parseSimpleQuantity(xpp));
6914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expectedSupplyDuration")) {
6915        res.setExpectedSupplyDuration(parseDuration(xpp));
6916      } else if (!parseBackboneContent(eventType, xpp, res))
6917        unknownContent(xpp);
6918      eventType = nextNoWhitespace(xpp);
6919    }
6920    next(xpp);
6921    parseElementClose(res);
6922    return res;
6923  }
6924
6925  protected MedicationOrder.MedicationOrderSubstitutionComponent parseMedicationOrderMedicationOrderSubstitutionComponent(
6926      XmlPullParser xpp, MedicationOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
6927    MedicationOrder.MedicationOrderSubstitutionComponent res = new MedicationOrder.MedicationOrderSubstitutionComponent();
6928    parseBackboneAttributes(xpp, res);
6929    next(xpp);
6930    int eventType = nextNoWhitespace(xpp);
6931    while (eventType != XmlPullParser.END_TAG) {
6932      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6933        res.setType(parseCodeableConcept(xpp));
6934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
6935        res.setReason(parseCodeableConcept(xpp));
6936      } else if (!parseBackboneContent(eventType, xpp, res))
6937        unknownContent(xpp);
6938      eventType = nextNoWhitespace(xpp);
6939    }
6940    next(xpp);
6941    parseElementClose(res);
6942    return res;
6943  }
6944
6945  protected MedicationStatement parseMedicationStatement(XmlPullParser xpp)
6946      throws XmlPullParserException, IOException, FHIRFormatError {
6947    MedicationStatement res = new MedicationStatement();
6948    parseDomainResourceAttributes(xpp, res);
6949    next(xpp);
6950    int eventType = nextNoWhitespace(xpp);
6951    while (eventType != XmlPullParser.END_TAG) {
6952      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6953        res.getIdentifier().add(parseIdentifier(xpp));
6954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6955        res.setPatient(parseReference(xpp));
6956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
6957        res.setInformationSource(parseReference(xpp));
6958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAsserted")) {
6959        res.setDateAssertedElement(parseDateTime(xpp));
6960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6961        res.setStatusElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementStatus.NULL,
6962            new MedicationStatement.MedicationStatementStatusEnumFactory()));
6963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasNotTaken")) {
6964        res.setWasNotTakenElement(parseBoolean(xpp));
6965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotTaken")) {
6966        res.getReasonNotTaken().add(parseCodeableConcept(xpp));
6967      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reasonForUse")) {
6968        res.setReasonForUse(parseType("reasonForUse", xpp));
6969      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
6970        res.setEffective(parseType("effective", xpp));
6971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6972        res.setNoteElement(parseString(xpp));
6973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
6974        res.getSupportingInformation().add(parseReference(xpp));
6975      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
6976        res.setMedication(parseType("medication", xpp));
6977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
6978        res.getDosage().add(parseMedicationStatementMedicationStatementDosageComponent(xpp, res));
6979      } else if (!parseDomainResourceContent(eventType, xpp, res))
6980        unknownContent(xpp);
6981      eventType = nextNoWhitespace(xpp);
6982    }
6983    next(xpp);
6984    parseElementClose(res);
6985    return res;
6986  }
6987
6988  protected MedicationStatement.MedicationStatementDosageComponent parseMedicationStatementMedicationStatementDosageComponent(
6989      XmlPullParser xpp, MedicationStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
6990    MedicationStatement.MedicationStatementDosageComponent res = new MedicationStatement.MedicationStatementDosageComponent();
6991    parseBackboneAttributes(xpp, res);
6992    next(xpp);
6993    int eventType = nextNoWhitespace(xpp);
6994    while (eventType != XmlPullParser.END_TAG) {
6995      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6996        res.setTextElement(parseString(xpp));
6997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
6998        res.setTiming(parseTiming(xpp));
6999      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
7000        res.setAsNeeded(parseType("asNeeded", xpp));
7001      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "site")) {
7002        res.setSite(parseType("site", xpp));
7003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
7004        res.setRoute(parseCodeableConcept(xpp));
7005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
7006        res.setMethod(parseCodeableConcept(xpp));
7007      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "quantity")) {
7008        res.setQuantity(parseType("quantity", xpp));
7009      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
7010        res.setRate(parseType("rate", xpp));
7011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
7012        res.setMaxDosePerPeriod(parseRatio(xpp));
7013      } else if (!parseBackboneContent(eventType, xpp, res))
7014        unknownContent(xpp);
7015      eventType = nextNoWhitespace(xpp);
7016    }
7017    next(xpp);
7018    parseElementClose(res);
7019    return res;
7020  }
7021
7022  protected MessageHeader parseMessageHeader(XmlPullParser xpp)
7023      throws XmlPullParserException, IOException, FHIRFormatError {
7024    MessageHeader res = new MessageHeader();
7025    parseDomainResourceAttributes(xpp, res);
7026    next(xpp);
7027    int eventType = nextNoWhitespace(xpp);
7028    while (eventType != XmlPullParser.END_TAG) {
7029      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
7030        res.setTimestampElement(parseInstant(xpp));
7031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
7032        res.setEvent(parseCoding(xpp));
7033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
7034        res.setResponse(parseMessageHeaderMessageHeaderResponseComponent(xpp, res));
7035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
7036        res.setSource(parseMessageHeaderMessageSourceComponent(xpp, res));
7037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
7038        res.getDestination().add(parseMessageHeaderMessageDestinationComponent(xpp, res));
7039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
7040        res.setEnterer(parseReference(xpp));
7041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7042        res.setAuthor(parseReference(xpp));
7043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
7044        res.setReceiver(parseReference(xpp));
7045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
7046        res.setResponsible(parseReference(xpp));
7047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
7048        res.setReason(parseCodeableConcept(xpp));
7049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
7050        res.getData().add(parseReference(xpp));
7051      } else if (!parseDomainResourceContent(eventType, xpp, res))
7052        unknownContent(xpp);
7053      eventType = nextNoWhitespace(xpp);
7054    }
7055    next(xpp);
7056    parseElementClose(res);
7057    return res;
7058  }
7059
7060  protected MessageHeader.MessageHeaderResponseComponent parseMessageHeaderMessageHeaderResponseComponent(
7061      XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
7062    MessageHeader.MessageHeaderResponseComponent res = new MessageHeader.MessageHeaderResponseComponent();
7063    parseBackboneAttributes(xpp, res);
7064    next(xpp);
7065    int eventType = nextNoWhitespace(xpp);
7066    while (eventType != XmlPullParser.END_TAG) {
7067      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7068        res.setIdentifierElement(parseId(xpp));
7069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7070        res.setCodeElement(
7071            parseEnumeration(xpp, MessageHeader.ResponseType.NULL, new MessageHeader.ResponseTypeEnumFactory()));
7072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
7073        res.setDetails(parseReference(xpp));
7074      } else if (!parseBackboneContent(eventType, xpp, res))
7075        unknownContent(xpp);
7076      eventType = nextNoWhitespace(xpp);
7077    }
7078    next(xpp);
7079    parseElementClose(res);
7080    return res;
7081  }
7082
7083  protected MessageHeader.MessageSourceComponent parseMessageHeaderMessageSourceComponent(XmlPullParser xpp,
7084      MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
7085    MessageHeader.MessageSourceComponent res = new MessageHeader.MessageSourceComponent();
7086    parseBackboneAttributes(xpp, res);
7087    next(xpp);
7088    int eventType = nextNoWhitespace(xpp);
7089    while (eventType != XmlPullParser.END_TAG) {
7090      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7091        res.setNameElement(parseString(xpp));
7092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
7093        res.setSoftwareElement(parseString(xpp));
7094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7095        res.setVersionElement(parseString(xpp));
7096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7097        res.setContact(parseContactPoint(xpp));
7098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
7099        res.setEndpointElement(parseUri(xpp));
7100      } else if (!parseBackboneContent(eventType, xpp, res))
7101        unknownContent(xpp);
7102      eventType = nextNoWhitespace(xpp);
7103    }
7104    next(xpp);
7105    parseElementClose(res);
7106    return res;
7107  }
7108
7109  protected MessageHeader.MessageDestinationComponent parseMessageHeaderMessageDestinationComponent(XmlPullParser xpp,
7110      MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
7111    MessageHeader.MessageDestinationComponent res = new MessageHeader.MessageDestinationComponent();
7112    parseBackboneAttributes(xpp, res);
7113    next(xpp);
7114    int eventType = nextNoWhitespace(xpp);
7115    while (eventType != XmlPullParser.END_TAG) {
7116      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7117        res.setNameElement(parseString(xpp));
7118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
7119        res.setTarget(parseReference(xpp));
7120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
7121        res.setEndpointElement(parseUri(xpp));
7122      } else if (!parseBackboneContent(eventType, xpp, res))
7123        unknownContent(xpp);
7124      eventType = nextNoWhitespace(xpp);
7125    }
7126    next(xpp);
7127    parseElementClose(res);
7128    return res;
7129  }
7130
7131  protected NamingSystem parseNamingSystem(XmlPullParser xpp)
7132      throws XmlPullParserException, IOException, FHIRFormatError {
7133    NamingSystem res = new NamingSystem();
7134    parseDomainResourceAttributes(xpp, res);
7135    next(xpp);
7136    int eventType = nextNoWhitespace(xpp);
7137    while (eventType != XmlPullParser.END_TAG) {
7138      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7139        res.setNameElement(parseString(xpp));
7140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7141        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL,
7142            new Enumerations.ConformanceResourceStatusEnumFactory()));
7143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
7144        res.setKindElement(
7145            parseEnumeration(xpp, NamingSystem.NamingSystemType.NULL, new NamingSystem.NamingSystemTypeEnumFactory()));
7146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
7147        res.setPublisherElement(parseString(xpp));
7148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7149        res.getContact().add(parseNamingSystemNamingSystemContactComponent(xpp, res));
7150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
7151        res.setResponsibleElement(parseString(xpp));
7152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7153        res.setDateElement(parseDateTime(xpp));
7154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7155        res.setType(parseCodeableConcept(xpp));
7156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7157        res.setDescriptionElement(parseString(xpp));
7158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
7159        res.getUseContext().add(parseCodeableConcept(xpp));
7160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
7161        res.setUsageElement(parseString(xpp));
7162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uniqueId")) {
7163        res.getUniqueId().add(parseNamingSystemNamingSystemUniqueIdComponent(xpp, res));
7164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replacedBy")) {
7165        res.setReplacedBy(parseReference(xpp));
7166      } else if (!parseDomainResourceContent(eventType, xpp, res))
7167        unknownContent(xpp);
7168      eventType = nextNoWhitespace(xpp);
7169    }
7170    next(xpp);
7171    parseElementClose(res);
7172    return res;
7173  }
7174
7175  protected NamingSystem.NamingSystemContactComponent parseNamingSystemNamingSystemContactComponent(XmlPullParser xpp,
7176      NamingSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
7177    NamingSystem.NamingSystemContactComponent res = new NamingSystem.NamingSystemContactComponent();
7178    parseBackboneAttributes(xpp, res);
7179    next(xpp);
7180    int eventType = nextNoWhitespace(xpp);
7181    while (eventType != XmlPullParser.END_TAG) {
7182      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7183        res.setNameElement(parseString(xpp));
7184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
7185        res.getTelecom().add(parseContactPoint(xpp));
7186      } else if (!parseBackboneContent(eventType, xpp, res))
7187        unknownContent(xpp);
7188      eventType = nextNoWhitespace(xpp);
7189    }
7190    next(xpp);
7191    parseElementClose(res);
7192    return res;
7193  }
7194
7195  protected NamingSystem.NamingSystemUniqueIdComponent parseNamingSystemNamingSystemUniqueIdComponent(XmlPullParser xpp,
7196      NamingSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
7197    NamingSystem.NamingSystemUniqueIdComponent res = new NamingSystem.NamingSystemUniqueIdComponent();
7198    parseBackboneAttributes(xpp, res);
7199    next(xpp);
7200    int eventType = nextNoWhitespace(xpp);
7201    while (eventType != XmlPullParser.END_TAG) {
7202      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7203        res.setTypeElement(parseEnumeration(xpp, NamingSystem.NamingSystemIdentifierType.NULL,
7204            new NamingSystem.NamingSystemIdentifierTypeEnumFactory()));
7205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7206        res.setValueElement(parseString(xpp));
7207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
7208        res.setPreferredElement(parseBoolean(xpp));
7209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7210        res.setPeriod(parsePeriod(xpp));
7211      } else if (!parseBackboneContent(eventType, xpp, res))
7212        unknownContent(xpp);
7213      eventType = nextNoWhitespace(xpp);
7214    }
7215    next(xpp);
7216    parseElementClose(res);
7217    return res;
7218  }
7219
7220  protected NutritionOrder parseNutritionOrder(XmlPullParser xpp)
7221      throws XmlPullParserException, IOException, FHIRFormatError {
7222    NutritionOrder res = new NutritionOrder();
7223    parseDomainResourceAttributes(xpp, res);
7224    next(xpp);
7225    int eventType = nextNoWhitespace(xpp);
7226    while (eventType != XmlPullParser.END_TAG) {
7227      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7228        res.setPatient(parseReference(xpp));
7229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
7230        res.setOrderer(parseReference(xpp));
7231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7232        res.getIdentifier().add(parseIdentifier(xpp));
7233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7234        res.setEncounter(parseReference(xpp));
7235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
7236        res.setDateTimeElement(parseDateTime(xpp));
7237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7238        res.setStatusElement(parseEnumeration(xpp, NutritionOrder.NutritionOrderStatus.NULL,
7239            new NutritionOrder.NutritionOrderStatusEnumFactory()));
7240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergyIntolerance")) {
7241        res.getAllergyIntolerance().add(parseReference(xpp));
7242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodPreferenceModifier")) {
7243        res.getFoodPreferenceModifier().add(parseCodeableConcept(xpp));
7244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeFoodModifier")) {
7245        res.getExcludeFoodModifier().add(parseCodeableConcept(xpp));
7246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oralDiet")) {
7247        res.setOralDiet(parseNutritionOrderNutritionOrderOralDietComponent(xpp, res));
7248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplement")) {
7249        res.getSupplement().add(parseNutritionOrderNutritionOrderSupplementComponent(xpp, res));
7250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteralFormula")) {
7251        res.setEnteralFormula(parseNutritionOrderNutritionOrderEnteralFormulaComponent(xpp, res));
7252      } else if (!parseDomainResourceContent(eventType, xpp, res))
7253        unknownContent(xpp);
7254      eventType = nextNoWhitespace(xpp);
7255    }
7256    next(xpp);
7257    parseElementClose(res);
7258    return res;
7259  }
7260
7261  protected NutritionOrder.NutritionOrderOralDietComponent parseNutritionOrderNutritionOrderOralDietComponent(
7262      XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
7263    NutritionOrder.NutritionOrderOralDietComponent res = new NutritionOrder.NutritionOrderOralDietComponent();
7264    parseBackboneAttributes(xpp, res);
7265    next(xpp);
7266    int eventType = nextNoWhitespace(xpp);
7267    while (eventType != XmlPullParser.END_TAG) {
7268      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7269        res.getType().add(parseCodeableConcept(xpp));
7270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
7271        res.getSchedule().add(parseTiming(xpp));
7272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
7273        res.getNutrient().add(parseNutritionOrderNutritionOrderOralDietNutrientComponent(xpp, owner));
7274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("texture")) {
7275        res.getTexture().add(parseNutritionOrderNutritionOrderOralDietTextureComponent(xpp, owner));
7276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fluidConsistencyType")) {
7277        res.getFluidConsistencyType().add(parseCodeableConcept(xpp));
7278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
7279        res.setInstructionElement(parseString(xpp));
7280      } else if (!parseBackboneContent(eventType, xpp, res))
7281        unknownContent(xpp);
7282      eventType = nextNoWhitespace(xpp);
7283    }
7284    next(xpp);
7285    parseElementClose(res);
7286    return res;
7287  }
7288
7289  protected NutritionOrder.NutritionOrderOralDietNutrientComponent parseNutritionOrderNutritionOrderOralDietNutrientComponent(
7290      XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
7291    NutritionOrder.NutritionOrderOralDietNutrientComponent res = new NutritionOrder.NutritionOrderOralDietNutrientComponent();
7292    parseBackboneAttributes(xpp, res);
7293    next(xpp);
7294    int eventType = nextNoWhitespace(xpp);
7295    while (eventType != XmlPullParser.END_TAG) {
7296      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
7297        res.setModifier(parseCodeableConcept(xpp));
7298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
7299        res.setAmount(parseSimpleQuantity(xpp));
7300      } else if (!parseBackboneContent(eventType, xpp, res))
7301        unknownContent(xpp);
7302      eventType = nextNoWhitespace(xpp);
7303    }
7304    next(xpp);
7305    parseElementClose(res);
7306    return res;
7307  }
7308
7309  protected NutritionOrder.NutritionOrderOralDietTextureComponent parseNutritionOrderNutritionOrderOralDietTextureComponent(
7310      XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
7311    NutritionOrder.NutritionOrderOralDietTextureComponent res = new NutritionOrder.NutritionOrderOralDietTextureComponent();
7312    parseBackboneAttributes(xpp, res);
7313    next(xpp);
7314    int eventType = nextNoWhitespace(xpp);
7315    while (eventType != XmlPullParser.END_TAG) {
7316      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
7317        res.setModifier(parseCodeableConcept(xpp));
7318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodType")) {
7319        res.setFoodType(parseCodeableConcept(xpp));
7320      } else if (!parseBackboneContent(eventType, xpp, res))
7321        unknownContent(xpp);
7322      eventType = nextNoWhitespace(xpp);
7323    }
7324    next(xpp);
7325    parseElementClose(res);
7326    return res;
7327  }
7328
7329  protected NutritionOrder.NutritionOrderSupplementComponent parseNutritionOrderNutritionOrderSupplementComponent(
7330      XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
7331    NutritionOrder.NutritionOrderSupplementComponent res = new NutritionOrder.NutritionOrderSupplementComponent();
7332    parseBackboneAttributes(xpp, res);
7333    next(xpp);
7334    int eventType = nextNoWhitespace(xpp);
7335    while (eventType != XmlPullParser.END_TAG) {
7336      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7337        res.setType(parseCodeableConcept(xpp));
7338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
7339        res.setProductNameElement(parseString(xpp));
7340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
7341        res.getSchedule().add(parseTiming(xpp));
7342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7343        res.setQuantity(parseSimpleQuantity(xpp));
7344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
7345        res.setInstructionElement(parseString(xpp));
7346      } else if (!parseBackboneContent(eventType, xpp, res))
7347        unknownContent(xpp);
7348      eventType = nextNoWhitespace(xpp);
7349    }
7350    next(xpp);
7351    parseElementClose(res);
7352    return res;
7353  }
7354
7355  protected NutritionOrder.NutritionOrderEnteralFormulaComponent parseNutritionOrderNutritionOrderEnteralFormulaComponent(
7356      XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
7357    NutritionOrder.NutritionOrderEnteralFormulaComponent res = new NutritionOrder.NutritionOrderEnteralFormulaComponent();
7358    parseBackboneAttributes(xpp, res);
7359    next(xpp);
7360    int eventType = nextNoWhitespace(xpp);
7361    while (eventType != XmlPullParser.END_TAG) {
7362      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaType")) {
7363        res.setBaseFormulaType(parseCodeableConcept(xpp));
7364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaProductName")) {
7365        res.setBaseFormulaProductNameElement(parseString(xpp));
7366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveType")) {
7367        res.setAdditiveType(parseCodeableConcept(xpp));
7368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveProductName")) {
7369        res.setAdditiveProductNameElement(parseString(xpp));
7370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caloricDensity")) {
7371        res.setCaloricDensity(parseSimpleQuantity(xpp));
7372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeofAdministration")) {
7373        res.setRouteofAdministration(parseCodeableConcept(xpp));
7374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administration")) {
7375        res.getAdministration().add(parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(xpp, owner));
7376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxVolumeToDeliver")) {
7377        res.setMaxVolumeToDeliver(parseSimpleQuantity(xpp));
7378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationInstruction")) {
7379        res.setAdministrationInstructionElement(parseString(xpp));
7380      } else if (!parseBackboneContent(eventType, xpp, res))
7381        unknownContent(xpp);
7382      eventType = nextNoWhitespace(xpp);
7383    }
7384    next(xpp);
7385    parseElementClose(res);
7386    return res;
7387  }
7388
7389  protected NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(
7390      XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
7391    NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res = new NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent();
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("schedule")) {
7397        res.setSchedule(parseTiming(xpp));
7398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7399        res.setQuantity(parseSimpleQuantity(xpp));
7400      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
7401        res.setRate(parseType("rate", xpp));
7402      } else if (!parseBackboneContent(eventType, xpp, res))
7403        unknownContent(xpp);
7404      eventType = nextNoWhitespace(xpp);
7405    }
7406    next(xpp);
7407    parseElementClose(res);
7408    return res;
7409  }
7410
7411  protected Observation parseObservation(XmlPullParser xpp)
7412      throws XmlPullParserException, IOException, FHIRFormatError {
7413    Observation res = new Observation();
7414    parseDomainResourceAttributes(xpp, res);
7415    next(xpp);
7416    int eventType = nextNoWhitespace(xpp);
7417    while (eventType != XmlPullParser.END_TAG) {
7418      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7419        res.getIdentifier().add(parseIdentifier(xpp));
7420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7421        res.setStatusElement(
7422            parseEnumeration(xpp, Observation.ObservationStatus.NULL, new Observation.ObservationStatusEnumFactory()));
7423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7424        res.setCategory(parseCodeableConcept(xpp));
7425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7426        res.setCode(parseCodeableConcept(xpp));
7427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7428        res.setSubject(parseReference(xpp));
7429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7430        res.setEncounter(parseReference(xpp));
7431      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
7432        res.setEffective(parseType("effective", xpp));
7433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
7434        res.setIssuedElement(parseInstant(xpp));
7435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
7436        res.getPerformer().add(parseReference(xpp));
7437      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
7438        res.setValue(parseType("value", xpp));
7439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
7440        res.setDataAbsentReason(parseCodeableConcept(xpp));
7441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
7442        res.setInterpretation(parseCodeableConcept(xpp));
7443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comments")) {
7444        res.setCommentsElement(parseString(xpp));
7445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
7446        res.setBodySite(parseCodeableConcept(xpp));
7447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
7448        res.setMethod(parseCodeableConcept(xpp));
7449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
7450        res.setSpecimen(parseReference(xpp));
7451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
7452        res.setDevice(parseReference(xpp));
7453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
7454        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, res));
7455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
7456        res.getRelated().add(parseObservationObservationRelatedComponent(xpp, res));
7457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
7458        res.getComponent().add(parseObservationObservationComponentComponent(xpp, res));
7459      } else if (!parseDomainResourceContent(eventType, xpp, res))
7460        unknownContent(xpp);
7461      eventType = nextNoWhitespace(xpp);
7462    }
7463    next(xpp);
7464    parseElementClose(res);
7465    return res;
7466  }
7467
7468  protected Observation.ObservationReferenceRangeComponent parseObservationObservationReferenceRangeComponent(
7469      XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
7470    Observation.ObservationReferenceRangeComponent res = new Observation.ObservationReferenceRangeComponent();
7471    parseBackboneAttributes(xpp, res);
7472    next(xpp);
7473    int eventType = nextNoWhitespace(xpp);
7474    while (eventType != XmlPullParser.END_TAG) {
7475      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
7476        res.setLow(parseSimpleQuantity(xpp));
7477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
7478        res.setHigh(parseSimpleQuantity(xpp));
7479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
7480        res.setMeaning(parseCodeableConcept(xpp));
7481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
7482        res.setAge(parseRange(xpp));
7483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
7484        res.setTextElement(parseString(xpp));
7485      } else if (!parseBackboneContent(eventType, xpp, res))
7486        unknownContent(xpp);
7487      eventType = nextNoWhitespace(xpp);
7488    }
7489    next(xpp);
7490    parseElementClose(res);
7491    return res;
7492  }
7493
7494  protected Observation.ObservationRelatedComponent parseObservationObservationRelatedComponent(XmlPullParser xpp,
7495      Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
7496    Observation.ObservationRelatedComponent res = new Observation.ObservationRelatedComponent();
7497    parseBackboneAttributes(xpp, res);
7498    next(xpp);
7499    int eventType = nextNoWhitespace(xpp);
7500    while (eventType != XmlPullParser.END_TAG) {
7501      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7502        res.setTypeElement(parseEnumeration(xpp, Observation.ObservationRelationshipType.NULL,
7503            new Observation.ObservationRelationshipTypeEnumFactory()));
7504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
7505        res.setTarget(parseReference(xpp));
7506      } else if (!parseBackboneContent(eventType, xpp, res))
7507        unknownContent(xpp);
7508      eventType = nextNoWhitespace(xpp);
7509    }
7510    next(xpp);
7511    parseElementClose(res);
7512    return res;
7513  }
7514
7515  protected Observation.ObservationComponentComponent parseObservationObservationComponentComponent(XmlPullParser xpp,
7516      Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
7517    Observation.ObservationComponentComponent res = new Observation.ObservationComponentComponent();
7518    parseBackboneAttributes(xpp, res);
7519    next(xpp);
7520    int eventType = nextNoWhitespace(xpp);
7521    while (eventType != XmlPullParser.END_TAG) {
7522      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7523        res.setCode(parseCodeableConcept(xpp));
7524      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
7525        res.setValue(parseType("value", xpp));
7526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
7527        res.setDataAbsentReason(parseCodeableConcept(xpp));
7528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
7529        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, owner));
7530      } else if (!parseBackboneContent(eventType, xpp, res))
7531        unknownContent(xpp);
7532      eventType = nextNoWhitespace(xpp);
7533    }
7534    next(xpp);
7535    parseElementClose(res);
7536    return res;
7537  }
7538
7539  protected OperationDefinition parseOperationDefinition(XmlPullParser xpp)
7540      throws XmlPullParserException, IOException, FHIRFormatError {
7541    OperationDefinition res = new OperationDefinition();
7542    parseDomainResourceAttributes(xpp, res);
7543    next(xpp);
7544    int eventType = nextNoWhitespace(xpp);
7545    while (eventType != XmlPullParser.END_TAG) {
7546      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7547        res.setUrlElement(parseUri(xpp));
7548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7549        res.setVersionElement(parseString(xpp));
7550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7551        res.setNameElement(parseString(xpp));
7552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7553        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL,
7554            new Enumerations.ConformanceResourceStatusEnumFactory()));
7555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
7556        res.setKindElement(parseEnumeration(xpp, OperationDefinition.OperationKind.NULL,
7557            new OperationDefinition.OperationKindEnumFactory()));
7558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
7559        res.setExperimentalElement(parseBoolean(xpp));
7560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
7561        res.setPublisherElement(parseString(xpp));
7562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7563        res.getContact().add(parseOperationDefinitionOperationDefinitionContactComponent(xpp, res));
7564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7565        res.setDateElement(parseDateTime(xpp));
7566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7567        res.setDescriptionElement(parseString(xpp));
7568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
7569        res.setRequirementsElement(parseString(xpp));
7570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("idempotent")) {
7571        res.setIdempotentElement(parseBoolean(xpp));
7572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7573        res.setCodeElement(parseCode(xpp));
7574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
7575        res.setNotesElement(parseString(xpp));
7576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
7577        res.setBase(parseReference(xpp));
7578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
7579        res.setSystemElement(parseBoolean(xpp));
7580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7581        res.getType().add(parseCode(xpp));
7582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
7583        res.setInstanceElement(parseBoolean(xpp));
7584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
7585        res.getParameter().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, res));
7586      } else if (!parseDomainResourceContent(eventType, xpp, res))
7587        unknownContent(xpp);
7588      eventType = nextNoWhitespace(xpp);
7589    }
7590    next(xpp);
7591    parseElementClose(res);
7592    return res;
7593  }
7594
7595  protected OperationDefinition.OperationDefinitionContactComponent parseOperationDefinitionOperationDefinitionContactComponent(
7596      XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
7597    OperationDefinition.OperationDefinitionContactComponent res = new OperationDefinition.OperationDefinitionContactComponent();
7598    parseBackboneAttributes(xpp, res);
7599    next(xpp);
7600    int eventType = nextNoWhitespace(xpp);
7601    while (eventType != XmlPullParser.END_TAG) {
7602      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7603        res.setNameElement(parseString(xpp));
7604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
7605        res.getTelecom().add(parseContactPoint(xpp));
7606      } else if (!parseBackboneContent(eventType, xpp, res))
7607        unknownContent(xpp);
7608      eventType = nextNoWhitespace(xpp);
7609    }
7610    next(xpp);
7611    parseElementClose(res);
7612    return res;
7613  }
7614
7615  protected OperationDefinition.OperationDefinitionParameterComponent parseOperationDefinitionOperationDefinitionParameterComponent(
7616      XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
7617    OperationDefinition.OperationDefinitionParameterComponent res = new OperationDefinition.OperationDefinitionParameterComponent();
7618    parseBackboneAttributes(xpp, res);
7619    next(xpp);
7620    int eventType = nextNoWhitespace(xpp);
7621    while (eventType != XmlPullParser.END_TAG) {
7622      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7623        res.setNameElement(parseCode(xpp));
7624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
7625        res.setUseElement(parseEnumeration(xpp, OperationDefinition.OperationParameterUse.NULL,
7626            new OperationDefinition.OperationParameterUseEnumFactory()));
7627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
7628        res.setMinElement(parseInteger(xpp));
7629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
7630        res.setMaxElement(parseString(xpp));
7631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
7632        res.setDocumentationElement(parseString(xpp));
7633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7634        res.setTypeElement(parseCode(xpp));
7635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
7636        res.setProfile(parseReference(xpp));
7637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
7638        res.setBinding(parseOperationDefinitionOperationDefinitionParameterBindingComponent(xpp, owner));
7639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
7640        res.getPart().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, owner));
7641      } else if (!parseBackboneContent(eventType, xpp, res))
7642        unknownContent(xpp);
7643      eventType = nextNoWhitespace(xpp);
7644    }
7645    next(xpp);
7646    parseElementClose(res);
7647    return res;
7648  }
7649
7650  protected OperationDefinition.OperationDefinitionParameterBindingComponent parseOperationDefinitionOperationDefinitionParameterBindingComponent(
7651      XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
7652    OperationDefinition.OperationDefinitionParameterBindingComponent res = new OperationDefinition.OperationDefinitionParameterBindingComponent();
7653    parseBackboneAttributes(xpp, res);
7654    next(xpp);
7655    int eventType = nextNoWhitespace(xpp);
7656    while (eventType != XmlPullParser.END_TAG) {
7657      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
7658        res.setStrengthElement(
7659            parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
7660      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
7661        res.setValueSet(parseType("valueSet", xpp));
7662      } else if (!parseBackboneContent(eventType, xpp, res))
7663        unknownContent(xpp);
7664      eventType = nextNoWhitespace(xpp);
7665    }
7666    next(xpp);
7667    parseElementClose(res);
7668    return res;
7669  }
7670
7671  protected OperationOutcome parseOperationOutcome(XmlPullParser xpp)
7672      throws XmlPullParserException, IOException, FHIRFormatError {
7673    OperationOutcome res = new OperationOutcome();
7674    parseDomainResourceAttributes(xpp, res);
7675    next(xpp);
7676    int eventType = nextNoWhitespace(xpp);
7677    while (eventType != XmlPullParser.END_TAG) {
7678      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
7679        res.getIssue().add(parseOperationOutcomeOperationOutcomeIssueComponent(xpp, res));
7680      } else if (!parseDomainResourceContent(eventType, xpp, res))
7681        unknownContent(xpp);
7682      eventType = nextNoWhitespace(xpp);
7683    }
7684    next(xpp);
7685    parseElementClose(res);
7686    return res;
7687  }
7688
7689  protected OperationOutcome.OperationOutcomeIssueComponent parseOperationOutcomeOperationOutcomeIssueComponent(
7690      XmlPullParser xpp, OperationOutcome owner) throws XmlPullParserException, IOException, FHIRFormatError {
7691    OperationOutcome.OperationOutcomeIssueComponent res = new OperationOutcome.OperationOutcomeIssueComponent();
7692    parseBackboneAttributes(xpp, res);
7693    next(xpp);
7694    int eventType = nextNoWhitespace(xpp);
7695    while (eventType != XmlPullParser.END_TAG) {
7696      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
7697        res.setSeverityElement(parseEnumeration(xpp, OperationOutcome.IssueSeverity.NULL,
7698            new OperationOutcome.IssueSeverityEnumFactory()));
7699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7700        res.setCodeElement(
7701            parseEnumeration(xpp, OperationOutcome.IssueType.NULL, new OperationOutcome.IssueTypeEnumFactory()));
7702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
7703        res.setDetails(parseCodeableConcept(xpp));
7704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnostics")) {
7705        res.setDiagnosticsElement(parseString(xpp));
7706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7707        res.getLocation().add(parseString(xpp));
7708      } else if (!parseBackboneContent(eventType, xpp, res))
7709        unknownContent(xpp);
7710      eventType = nextNoWhitespace(xpp);
7711    }
7712    next(xpp);
7713    parseElementClose(res);
7714    return res;
7715  }
7716
7717  protected Order parseOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7718    Order res = new Order();
7719    parseDomainResourceAttributes(xpp, res);
7720    next(xpp);
7721    int eventType = nextNoWhitespace(xpp);
7722    while (eventType != XmlPullParser.END_TAG) {
7723      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7724        res.getIdentifier().add(parseIdentifier(xpp));
7725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7726        res.setDateElement(parseDateTime(xpp));
7727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7728        res.setSubject(parseReference(xpp));
7729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
7730        res.setSource(parseReference(xpp));
7731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
7732        res.setTarget(parseReference(xpp));
7733      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
7734        res.setReason(parseType("reason", xpp));
7735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
7736        res.setWhen(parseOrderOrderWhenComponent(xpp, res));
7737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7738        res.getDetail().add(parseReference(xpp));
7739      } else if (!parseDomainResourceContent(eventType, xpp, res))
7740        unknownContent(xpp);
7741      eventType = nextNoWhitespace(xpp);
7742    }
7743    next(xpp);
7744    parseElementClose(res);
7745    return res;
7746  }
7747
7748  protected Order.OrderWhenComponent parseOrderOrderWhenComponent(XmlPullParser xpp, Order owner)
7749      throws XmlPullParserException, IOException, FHIRFormatError {
7750    Order.OrderWhenComponent res = new Order.OrderWhenComponent();
7751    parseBackboneAttributes(xpp, res);
7752    next(xpp);
7753    int eventType = nextNoWhitespace(xpp);
7754    while (eventType != XmlPullParser.END_TAG) {
7755      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7756        res.setCode(parseCodeableConcept(xpp));
7757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
7758        res.setSchedule(parseTiming(xpp));
7759      } else if (!parseBackboneContent(eventType, xpp, res))
7760        unknownContent(xpp);
7761      eventType = nextNoWhitespace(xpp);
7762    }
7763    next(xpp);
7764    parseElementClose(res);
7765    return res;
7766  }
7767
7768  protected OrderResponse parseOrderResponse(XmlPullParser xpp)
7769      throws XmlPullParserException, IOException, FHIRFormatError {
7770    OrderResponse res = new OrderResponse();
7771    parseDomainResourceAttributes(xpp, res);
7772    next(xpp);
7773    int eventType = nextNoWhitespace(xpp);
7774    while (eventType != XmlPullParser.END_TAG) {
7775      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7776        res.getIdentifier().add(parseIdentifier(xpp));
7777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7778        res.setRequest(parseReference(xpp));
7779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7780        res.setDateElement(parseDateTime(xpp));
7781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
7782        res.setWho(parseReference(xpp));
7783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderStatus")) {
7784        res.setOrderStatusElement(
7785            parseEnumeration(xpp, OrderResponse.OrderStatus.NULL, new OrderResponse.OrderStatusEnumFactory()));
7786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7787        res.setDescriptionElement(parseString(xpp));
7788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fulfillment")) {
7789        res.getFulfillment().add(parseReference(xpp));
7790      } else if (!parseDomainResourceContent(eventType, xpp, res))
7791        unknownContent(xpp);
7792      eventType = nextNoWhitespace(xpp);
7793    }
7794    next(xpp);
7795    parseElementClose(res);
7796    return res;
7797  }
7798
7799  protected Organization parseOrganization(XmlPullParser xpp)
7800      throws XmlPullParserException, IOException, FHIRFormatError {
7801    Organization res = new Organization();
7802    parseDomainResourceAttributes(xpp, res);
7803    next(xpp);
7804    int eventType = nextNoWhitespace(xpp);
7805    while (eventType != XmlPullParser.END_TAG) {
7806      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7807        res.getIdentifier().add(parseIdentifier(xpp));
7808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
7809        res.setActiveElement(parseBoolean(xpp));
7810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7811        res.setType(parseCodeableConcept(xpp));
7812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7813        res.setNameElement(parseString(xpp));
7814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
7815        res.getTelecom().add(parseContactPoint(xpp));
7816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
7817        res.getAddress().add(parseAddress(xpp));
7818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
7819        res.setPartOf(parseReference(xpp));
7820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7821        res.getContact().add(parseOrganizationOrganizationContactComponent(xpp, res));
7822      } else if (!parseDomainResourceContent(eventType, xpp, res))
7823        unknownContent(xpp);
7824      eventType = nextNoWhitespace(xpp);
7825    }
7826    next(xpp);
7827    parseElementClose(res);
7828    return res;
7829  }
7830
7831  protected Organization.OrganizationContactComponent parseOrganizationOrganizationContactComponent(XmlPullParser xpp,
7832      Organization owner) throws XmlPullParserException, IOException, FHIRFormatError {
7833    Organization.OrganizationContactComponent res = new Organization.OrganizationContactComponent();
7834    parseBackboneAttributes(xpp, res);
7835    next(xpp);
7836    int eventType = nextNoWhitespace(xpp);
7837    while (eventType != XmlPullParser.END_TAG) {
7838      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
7839        res.setPurpose(parseCodeableConcept(xpp));
7840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7841        res.setName(parseHumanName(xpp));
7842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
7843        res.getTelecom().add(parseContactPoint(xpp));
7844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
7845        res.setAddress(parseAddress(xpp));
7846      } else if (!parseBackboneContent(eventType, xpp, res))
7847        unknownContent(xpp);
7848      eventType = nextNoWhitespace(xpp);
7849    }
7850    next(xpp);
7851    parseElementClose(res);
7852    return res;
7853  }
7854
7855  protected Patient parsePatient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7856    Patient res = new Patient();
7857    parseDomainResourceAttributes(xpp, res);
7858    next(xpp);
7859    int eventType = nextNoWhitespace(xpp);
7860    while (eventType != XmlPullParser.END_TAG) {
7861      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7862        res.getIdentifier().add(parseIdentifier(xpp));
7863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
7864        res.setActiveElement(parseBoolean(xpp));
7865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7866        res.getName().add(parseHumanName(xpp));
7867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
7868        res.getTelecom().add(parseContactPoint(xpp));
7869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
7870        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL,
7871            new Enumerations.AdministrativeGenderEnumFactory()));
7872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
7873        res.setBirthDateElement(parseDate(xpp));
7874      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
7875        res.setDeceased(parseType("deceased", xpp));
7876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
7877        res.getAddress().add(parseAddress(xpp));
7878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maritalStatus")) {
7879        res.setMaritalStatus(parseCodeableConcept(xpp));
7880      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "multipleBirth")) {
7881        res.setMultipleBirth(parseType("multipleBirth", xpp));
7882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
7883        res.getPhoto().add(parseAttachment(xpp));
7884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7885        res.getContact().add(parsePatientContactComponent(xpp, res));
7886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("animal")) {
7887        res.setAnimal(parsePatientAnimalComponent(xpp, res));
7888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
7889        res.getCommunication().add(parsePatientPatientCommunicationComponent(xpp, res));
7890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careProvider")) {
7891        res.getCareProvider().add(parseReference(xpp));
7892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
7893        res.setManagingOrganization(parseReference(xpp));
7894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
7895        res.getLink().add(parsePatientPatientLinkComponent(xpp, res));
7896      } else if (!parseDomainResourceContent(eventType, xpp, res))
7897        unknownContent(xpp);
7898      eventType = nextNoWhitespace(xpp);
7899    }
7900    next(xpp);
7901    parseElementClose(res);
7902    return res;
7903  }
7904
7905  protected Patient.ContactComponent parsePatientContactComponent(XmlPullParser xpp, Patient owner)
7906      throws XmlPullParserException, IOException, FHIRFormatError {
7907    Patient.ContactComponent res = new Patient.ContactComponent();
7908    parseBackboneAttributes(xpp, res);
7909    next(xpp);
7910    int eventType = nextNoWhitespace(xpp);
7911    while (eventType != XmlPullParser.END_TAG) {
7912      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
7913        res.getRelationship().add(parseCodeableConcept(xpp));
7914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7915        res.setName(parseHumanName(xpp));
7916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
7917        res.getTelecom().add(parseContactPoint(xpp));
7918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
7919        res.setAddress(parseAddress(xpp));
7920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
7921        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL,
7922            new Enumerations.AdministrativeGenderEnumFactory()));
7923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
7924        res.setOrganization(parseReference(xpp));
7925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7926        res.setPeriod(parsePeriod(xpp));
7927      } else if (!parseBackboneContent(eventType, xpp, res))
7928        unknownContent(xpp);
7929      eventType = nextNoWhitespace(xpp);
7930    }
7931    next(xpp);
7932    parseElementClose(res);
7933    return res;
7934  }
7935
7936  protected Patient.AnimalComponent parsePatientAnimalComponent(XmlPullParser xpp, Patient owner)
7937      throws XmlPullParserException, IOException, FHIRFormatError {
7938    Patient.AnimalComponent res = new Patient.AnimalComponent();
7939    parseBackboneAttributes(xpp, res);
7940    next(xpp);
7941    int eventType = nextNoWhitespace(xpp);
7942    while (eventType != XmlPullParser.END_TAG) {
7943      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
7944        res.setSpecies(parseCodeableConcept(xpp));
7945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("breed")) {
7946        res.setBreed(parseCodeableConcept(xpp));
7947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genderStatus")) {
7948        res.setGenderStatus(parseCodeableConcept(xpp));
7949      } else if (!parseBackboneContent(eventType, xpp, res))
7950        unknownContent(xpp);
7951      eventType = nextNoWhitespace(xpp);
7952    }
7953    next(xpp);
7954    parseElementClose(res);
7955    return res;
7956  }
7957
7958  protected Patient.PatientCommunicationComponent parsePatientPatientCommunicationComponent(XmlPullParser xpp,
7959      Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
7960    Patient.PatientCommunicationComponent res = new Patient.PatientCommunicationComponent();
7961    parseBackboneAttributes(xpp, res);
7962    next(xpp);
7963    int eventType = nextNoWhitespace(xpp);
7964    while (eventType != XmlPullParser.END_TAG) {
7965      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
7966        res.setLanguage(parseCodeableConcept(xpp));
7967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
7968        res.setPreferredElement(parseBoolean(xpp));
7969      } else if (!parseBackboneContent(eventType, xpp, res))
7970        unknownContent(xpp);
7971      eventType = nextNoWhitespace(xpp);
7972    }
7973    next(xpp);
7974    parseElementClose(res);
7975    return res;
7976  }
7977
7978  protected Patient.PatientLinkComponent parsePatientPatientLinkComponent(XmlPullParser xpp, Patient owner)
7979      throws XmlPullParserException, IOException, FHIRFormatError {
7980    Patient.PatientLinkComponent res = new Patient.PatientLinkComponent();
7981    parseBackboneAttributes(xpp, res);
7982    next(xpp);
7983    int eventType = nextNoWhitespace(xpp);
7984    while (eventType != XmlPullParser.END_TAG) {
7985      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
7986        res.setOther(parseReference(xpp));
7987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7988        res.setTypeElement(parseEnumeration(xpp, Patient.LinkType.NULL, new Patient.LinkTypeEnumFactory()));
7989      } else if (!parseBackboneContent(eventType, xpp, res))
7990        unknownContent(xpp);
7991      eventType = nextNoWhitespace(xpp);
7992    }
7993    next(xpp);
7994    parseElementClose(res);
7995    return res;
7996  }
7997
7998  protected PaymentNotice parsePaymentNotice(XmlPullParser xpp)
7999      throws XmlPullParserException, IOException, FHIRFormatError {
8000    PaymentNotice res = new PaymentNotice();
8001    parseDomainResourceAttributes(xpp, res);
8002    next(xpp);
8003    int eventType = nextNoWhitespace(xpp);
8004    while (eventType != XmlPullParser.END_TAG) {
8005      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8006        res.getIdentifier().add(parseIdentifier(xpp));
8007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
8008        res.setRuleset(parseCoding(xpp));
8009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
8010        res.setOriginalRuleset(parseCoding(xpp));
8011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8012        res.setCreatedElement(parseDateTime(xpp));
8013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8014        res.setTarget(parseReference(xpp));
8015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8016        res.setProvider(parseReference(xpp));
8017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
8018        res.setOrganization(parseReference(xpp));
8019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
8020        res.setRequest(parseReference(xpp));
8021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
8022        res.setResponse(parseReference(xpp));
8023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentStatus")) {
8024        res.setPaymentStatus(parseCoding(xpp));
8025      } else if (!parseDomainResourceContent(eventType, xpp, res))
8026        unknownContent(xpp);
8027      eventType = nextNoWhitespace(xpp);
8028    }
8029    next(xpp);
8030    parseElementClose(res);
8031    return res;
8032  }
8033
8034  protected PaymentReconciliation parsePaymentReconciliation(XmlPullParser xpp)
8035      throws XmlPullParserException, IOException, FHIRFormatError {
8036    PaymentReconciliation res = new PaymentReconciliation();
8037    parseDomainResourceAttributes(xpp, res);
8038    next(xpp);
8039    int eventType = nextNoWhitespace(xpp);
8040    while (eventType != XmlPullParser.END_TAG) {
8041      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8042        res.getIdentifier().add(parseIdentifier(xpp));
8043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
8044        res.setRequest(parseReference(xpp));
8045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8046        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL,
8047            new Enumerations.RemittanceOutcomeEnumFactory()));
8048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
8049        res.setDispositionElement(parseString(xpp));
8050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
8051        res.setRuleset(parseCoding(xpp));
8052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
8053        res.setOriginalRuleset(parseCoding(xpp));
8054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8055        res.setCreatedElement(parseDateTime(xpp));
8056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8057        res.setPeriod(parsePeriod(xpp));
8058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
8059        res.setOrganization(parseReference(xpp));
8060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
8061        res.setRequestProvider(parseReference(xpp));
8062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
8063        res.setRequestOrganization(parseReference(xpp));
8064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
8065        res.getDetail().add(parsePaymentReconciliationDetailsComponent(xpp, res));
8066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
8067        res.setForm(parseCoding(xpp));
8068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
8069        res.setTotal(parseMoney(xpp));
8070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8071        res.getNote().add(parsePaymentReconciliationNotesComponent(xpp, res));
8072      } else if (!parseDomainResourceContent(eventType, xpp, res))
8073        unknownContent(xpp);
8074      eventType = nextNoWhitespace(xpp);
8075    }
8076    next(xpp);
8077    parseElementClose(res);
8078    return res;
8079  }
8080
8081  protected PaymentReconciliation.DetailsComponent parsePaymentReconciliationDetailsComponent(XmlPullParser xpp,
8082      PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
8083    PaymentReconciliation.DetailsComponent res = new PaymentReconciliation.DetailsComponent();
8084    parseBackboneAttributes(xpp, res);
8085    next(xpp);
8086    int eventType = nextNoWhitespace(xpp);
8087    while (eventType != XmlPullParser.END_TAG) {
8088      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8089        res.setType(parseCoding(xpp));
8090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
8091        res.setRequest(parseReference(xpp));
8092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responce")) {
8093        res.setResponce(parseReference(xpp));
8094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("submitter")) {
8095        res.setSubmitter(parseReference(xpp));
8096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
8097        res.setPayee(parseReference(xpp));
8098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8099        res.setDateElement(parseDate(xpp));
8100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
8101        res.setAmount(parseMoney(xpp));
8102      } else if (!parseBackboneContent(eventType, xpp, res))
8103        unknownContent(xpp);
8104      eventType = nextNoWhitespace(xpp);
8105    }
8106    next(xpp);
8107    parseElementClose(res);
8108    return res;
8109  }
8110
8111  protected PaymentReconciliation.NotesComponent parsePaymentReconciliationNotesComponent(XmlPullParser xpp,
8112      PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
8113    PaymentReconciliation.NotesComponent res = new PaymentReconciliation.NotesComponent();
8114    parseBackboneAttributes(xpp, res);
8115    next(xpp);
8116    int eventType = nextNoWhitespace(xpp);
8117    while (eventType != XmlPullParser.END_TAG) {
8118      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8119        res.setType(parseCoding(xpp));
8120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8121        res.setTextElement(parseString(xpp));
8122      } else if (!parseBackboneContent(eventType, xpp, res))
8123        unknownContent(xpp);
8124      eventType = nextNoWhitespace(xpp);
8125    }
8126    next(xpp);
8127    parseElementClose(res);
8128    return res;
8129  }
8130
8131  protected Person parsePerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8132    Person res = new Person();
8133    parseDomainResourceAttributes(xpp, res);
8134    next(xpp);
8135    int eventType = nextNoWhitespace(xpp);
8136    while (eventType != XmlPullParser.END_TAG) {
8137      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8138        res.getIdentifier().add(parseIdentifier(xpp));
8139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8140        res.getName().add(parseHumanName(xpp));
8141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
8142        res.getTelecom().add(parseContactPoint(xpp));
8143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
8144        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL,
8145            new Enumerations.AdministrativeGenderEnumFactory()));
8146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
8147        res.setBirthDateElement(parseDate(xpp));
8148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
8149        res.getAddress().add(parseAddress(xpp));
8150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
8151        res.setPhoto(parseAttachment(xpp));
8152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
8153        res.setManagingOrganization(parseReference(xpp));
8154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
8155        res.setActiveElement(parseBoolean(xpp));
8156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
8157        res.getLink().add(parsePersonPersonLinkComponent(xpp, res));
8158      } else if (!parseDomainResourceContent(eventType, xpp, res))
8159        unknownContent(xpp);
8160      eventType = nextNoWhitespace(xpp);
8161    }
8162    next(xpp);
8163    parseElementClose(res);
8164    return res;
8165  }
8166
8167  protected Person.PersonLinkComponent parsePersonPersonLinkComponent(XmlPullParser xpp, Person owner)
8168      throws XmlPullParserException, IOException, FHIRFormatError {
8169    Person.PersonLinkComponent res = new Person.PersonLinkComponent();
8170    parseBackboneAttributes(xpp, res);
8171    next(xpp);
8172    int eventType = nextNoWhitespace(xpp);
8173    while (eventType != XmlPullParser.END_TAG) {
8174      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8175        res.setTarget(parseReference(xpp));
8176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assurance")) {
8177        res.setAssuranceElement(
8178            parseEnumeration(xpp, Person.IdentityAssuranceLevel.NULL, new Person.IdentityAssuranceLevelEnumFactory()));
8179      } else if (!parseBackboneContent(eventType, xpp, res))
8180        unknownContent(xpp);
8181      eventType = nextNoWhitespace(xpp);
8182    }
8183    next(xpp);
8184    parseElementClose(res);
8185    return res;
8186  }
8187
8188  protected Practitioner parsePractitioner(XmlPullParser xpp)
8189      throws XmlPullParserException, IOException, FHIRFormatError {
8190    Practitioner res = new Practitioner();
8191    parseDomainResourceAttributes(xpp, res);
8192    next(xpp);
8193    int eventType = nextNoWhitespace(xpp);
8194    while (eventType != XmlPullParser.END_TAG) {
8195      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8196        res.getIdentifier().add(parseIdentifier(xpp));
8197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
8198        res.setActiveElement(parseBoolean(xpp));
8199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8200        res.setName(parseHumanName(xpp));
8201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
8202        res.getTelecom().add(parseContactPoint(xpp));
8203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
8204        res.getAddress().add(parseAddress(xpp));
8205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
8206        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL,
8207            new Enumerations.AdministrativeGenderEnumFactory()));
8208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
8209        res.setBirthDateElement(parseDate(xpp));
8210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
8211        res.getPhoto().add(parseAttachment(xpp));
8212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitionerRole")) {
8213        res.getPractitionerRole().add(parsePractitionerPractitionerPractitionerRoleComponent(xpp, res));
8214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
8215        res.getQualification().add(parsePractitionerPractitionerQualificationComponent(xpp, res));
8216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
8217        res.getCommunication().add(parseCodeableConcept(xpp));
8218      } else if (!parseDomainResourceContent(eventType, xpp, res))
8219        unknownContent(xpp);
8220      eventType = nextNoWhitespace(xpp);
8221    }
8222    next(xpp);
8223    parseElementClose(res);
8224    return res;
8225  }
8226
8227  protected Practitioner.PractitionerPractitionerRoleComponent parsePractitionerPractitionerPractitionerRoleComponent(
8228      XmlPullParser xpp, Practitioner owner) throws XmlPullParserException, IOException, FHIRFormatError {
8229    Practitioner.PractitionerPractitionerRoleComponent res = new Practitioner.PractitionerPractitionerRoleComponent();
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("managingOrganization")) {
8235        res.setManagingOrganization(parseReference(xpp));
8236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8237        res.setRole(parseCodeableConcept(xpp));
8238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
8239        res.getSpecialty().add(parseCodeableConcept(xpp));
8240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8241        res.setPeriod(parsePeriod(xpp));
8242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
8243        res.getLocation().add(parseReference(xpp));
8244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
8245        res.getHealthcareService().add(parseReference(xpp));
8246      } else if (!parseBackboneContent(eventType, xpp, res))
8247        unknownContent(xpp);
8248      eventType = nextNoWhitespace(xpp);
8249    }
8250    next(xpp);
8251    parseElementClose(res);
8252    return res;
8253  }
8254
8255  protected Practitioner.PractitionerQualificationComponent parsePractitionerPractitionerQualificationComponent(
8256      XmlPullParser xpp, Practitioner owner) throws XmlPullParserException, IOException, FHIRFormatError {
8257    Practitioner.PractitionerQualificationComponent res = new Practitioner.PractitionerQualificationComponent();
8258    parseBackboneAttributes(xpp, res);
8259    next(xpp);
8260    int eventType = nextNoWhitespace(xpp);
8261    while (eventType != XmlPullParser.END_TAG) {
8262      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8263        res.getIdentifier().add(parseIdentifier(xpp));
8264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8265        res.setCode(parseCodeableConcept(xpp));
8266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8267        res.setPeriod(parsePeriod(xpp));
8268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
8269        res.setIssuer(parseReference(xpp));
8270      } else if (!parseBackboneContent(eventType, xpp, res))
8271        unknownContent(xpp);
8272      eventType = nextNoWhitespace(xpp);
8273    }
8274    next(xpp);
8275    parseElementClose(res);
8276    return res;
8277  }
8278
8279  protected Procedure parseProcedure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8280    Procedure res = new Procedure();
8281    parseDomainResourceAttributes(xpp, res);
8282    next(xpp);
8283    int eventType = nextNoWhitespace(xpp);
8284    while (eventType != XmlPullParser.END_TAG) {
8285      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8286        res.getIdentifier().add(parseIdentifier(xpp));
8287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8288        res.setSubject(parseReference(xpp));
8289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8290        res.setStatusElement(
8291            parseEnumeration(xpp, Procedure.ProcedureStatus.NULL, new Procedure.ProcedureStatusEnumFactory()));
8292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8293        res.setCategory(parseCodeableConcept(xpp));
8294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8295        res.setCode(parseCodeableConcept(xpp));
8296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notPerformed")) {
8297        res.setNotPerformedElement(parseBoolean(xpp));
8298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotPerformed")) {
8299        res.getReasonNotPerformed().add(parseCodeableConcept(xpp));
8300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
8301        res.getBodySite().add(parseCodeableConcept(xpp));
8302      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
8303        res.setReason(parseType("reason", xpp));
8304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
8305        res.getPerformer().add(parseProcedureProcedurePerformerComponent(xpp, res));
8306      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "performed")) {
8307        res.setPerformed(parseType("performed", xpp));
8308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8309        res.setEncounter(parseReference(xpp));
8310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
8311        res.setLocation(parseReference(xpp));
8312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8313        res.setOutcome(parseCodeableConcept(xpp));
8314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("report")) {
8315        res.getReport().add(parseReference(xpp));
8316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complication")) {
8317        res.getComplication().add(parseCodeableConcept(xpp));
8318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("followUp")) {
8319        res.getFollowUp().add(parseCodeableConcept(xpp));
8320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
8321        res.setRequest(parseReference(xpp));
8322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
8323        res.getNotes().add(parseAnnotation(xpp));
8324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focalDevice")) {
8325        res.getFocalDevice().add(parseProcedureProcedureFocalDeviceComponent(xpp, res));
8326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("used")) {
8327        res.getUsed().add(parseReference(xpp));
8328      } else if (!parseDomainResourceContent(eventType, xpp, res))
8329        unknownContent(xpp);
8330      eventType = nextNoWhitespace(xpp);
8331    }
8332    next(xpp);
8333    parseElementClose(res);
8334    return res;
8335  }
8336
8337  protected Procedure.ProcedurePerformerComponent parseProcedureProcedurePerformerComponent(XmlPullParser xpp,
8338      Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
8339    Procedure.ProcedurePerformerComponent res = new Procedure.ProcedurePerformerComponent();
8340    parseBackboneAttributes(xpp, res);
8341    next(xpp);
8342    int eventType = nextNoWhitespace(xpp);
8343    while (eventType != XmlPullParser.END_TAG) {
8344      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
8345        res.setActor(parseReference(xpp));
8346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8347        res.setRole(parseCodeableConcept(xpp));
8348      } else if (!parseBackboneContent(eventType, xpp, res))
8349        unknownContent(xpp);
8350      eventType = nextNoWhitespace(xpp);
8351    }
8352    next(xpp);
8353    parseElementClose(res);
8354    return res;
8355  }
8356
8357  protected Procedure.ProcedureFocalDeviceComponent parseProcedureProcedureFocalDeviceComponent(XmlPullParser xpp,
8358      Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
8359    Procedure.ProcedureFocalDeviceComponent res = new Procedure.ProcedureFocalDeviceComponent();
8360    parseBackboneAttributes(xpp, res);
8361    next(xpp);
8362    int eventType = nextNoWhitespace(xpp);
8363    while (eventType != XmlPullParser.END_TAG) {
8364      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
8365        res.setAction(parseCodeableConcept(xpp));
8366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulated")) {
8367        res.setManipulated(parseReference(xpp));
8368      } else if (!parseBackboneContent(eventType, xpp, res))
8369        unknownContent(xpp);
8370      eventType = nextNoWhitespace(xpp);
8371    }
8372    next(xpp);
8373    parseElementClose(res);
8374    return res;
8375  }
8376
8377  protected ProcedureRequest parseProcedureRequest(XmlPullParser xpp)
8378      throws XmlPullParserException, IOException, FHIRFormatError {
8379    ProcedureRequest res = new ProcedureRequest();
8380    parseDomainResourceAttributes(xpp, res);
8381    next(xpp);
8382    int eventType = nextNoWhitespace(xpp);
8383    while (eventType != XmlPullParser.END_TAG) {
8384      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8385        res.getIdentifier().add(parseIdentifier(xpp));
8386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8387        res.setSubject(parseReference(xpp));
8388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8389        res.setCode(parseCodeableConcept(xpp));
8390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
8391        res.getBodySite().add(parseCodeableConcept(xpp));
8392      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
8393        res.setReason(parseType("reason", xpp));
8394      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
8395        res.setScheduled(parseType("scheduled", xpp));
8396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8397        res.setEncounter(parseReference(xpp));
8398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
8399        res.setPerformer(parseReference(xpp));
8400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8401        res.setStatusElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestStatus.NULL,
8402            new ProcedureRequest.ProcedureRequestStatusEnumFactory()));
8403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
8404        res.getNotes().add(parseAnnotation(xpp));
8405      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
8406        res.setAsNeeded(parseType("asNeeded", xpp));
8407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedOn")) {
8408        res.setOrderedOnElement(parseDateTime(xpp));
8409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
8410        res.setOrderer(parseReference(xpp));
8411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8412        res.setPriorityElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestPriority.NULL,
8413            new ProcedureRequest.ProcedureRequestPriorityEnumFactory()));
8414      } else if (!parseDomainResourceContent(eventType, xpp, res))
8415        unknownContent(xpp);
8416      eventType = nextNoWhitespace(xpp);
8417    }
8418    next(xpp);
8419    parseElementClose(res);
8420    return res;
8421  }
8422
8423  protected ProcessRequest parseProcessRequest(XmlPullParser xpp)
8424      throws XmlPullParserException, IOException, FHIRFormatError {
8425    ProcessRequest res = new ProcessRequest();
8426    parseDomainResourceAttributes(xpp, res);
8427    next(xpp);
8428    int eventType = nextNoWhitespace(xpp);
8429    while (eventType != XmlPullParser.END_TAG) {
8430      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
8431        res.setActionElement(
8432            parseEnumeration(xpp, ProcessRequest.ActionList.NULL, new ProcessRequest.ActionListEnumFactory()));
8433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8434        res.getIdentifier().add(parseIdentifier(xpp));
8435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
8436        res.setRuleset(parseCoding(xpp));
8437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
8438        res.setOriginalRuleset(parseCoding(xpp));
8439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8440        res.setCreatedElement(parseDateTime(xpp));
8441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8442        res.setTarget(parseReference(xpp));
8443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8444        res.setProvider(parseReference(xpp));
8445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
8446        res.setOrganization(parseReference(xpp));
8447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
8448        res.setRequest(parseReference(xpp));
8449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
8450        res.setResponse(parseReference(xpp));
8451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nullify")) {
8452        res.setNullifyElement(parseBoolean(xpp));
8453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
8454        res.setReferenceElement(parseString(xpp));
8455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
8456        res.getItem().add(parseProcessRequestItemsComponent(xpp, res));
8457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
8458        res.getInclude().add(parseString(xpp));
8459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
8460        res.getExclude().add(parseString(xpp));
8461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8462        res.setPeriod(parsePeriod(xpp));
8463      } else if (!parseDomainResourceContent(eventType, xpp, res))
8464        unknownContent(xpp);
8465      eventType = nextNoWhitespace(xpp);
8466    }
8467    next(xpp);
8468    parseElementClose(res);
8469    return res;
8470  }
8471
8472  protected ProcessRequest.ItemsComponent parseProcessRequestItemsComponent(XmlPullParser xpp, ProcessRequest owner)
8473      throws XmlPullParserException, IOException, FHIRFormatError {
8474    ProcessRequest.ItemsComponent res = new ProcessRequest.ItemsComponent();
8475    parseBackboneAttributes(xpp, res);
8476    next(xpp);
8477    int eventType = nextNoWhitespace(xpp);
8478    while (eventType != XmlPullParser.END_TAG) {
8479      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
8480        res.setSequenceLinkIdElement(parseInteger(xpp));
8481      } else if (!parseBackboneContent(eventType, xpp, res))
8482        unknownContent(xpp);
8483      eventType = nextNoWhitespace(xpp);
8484    }
8485    next(xpp);
8486    parseElementClose(res);
8487    return res;
8488  }
8489
8490  protected ProcessResponse parseProcessResponse(XmlPullParser xpp)
8491      throws XmlPullParserException, IOException, FHIRFormatError {
8492    ProcessResponse res = new ProcessResponse();
8493    parseDomainResourceAttributes(xpp, res);
8494    next(xpp);
8495    int eventType = nextNoWhitespace(xpp);
8496    while (eventType != XmlPullParser.END_TAG) {
8497      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8498        res.getIdentifier().add(parseIdentifier(xpp));
8499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
8500        res.setRequest(parseReference(xpp));
8501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8502        res.setOutcome(parseCoding(xpp));
8503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
8504        res.setDispositionElement(parseString(xpp));
8505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
8506        res.setRuleset(parseCoding(xpp));
8507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalRuleset")) {
8508        res.setOriginalRuleset(parseCoding(xpp));
8509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8510        res.setCreatedElement(parseDateTime(xpp));
8511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
8512        res.setOrganization(parseReference(xpp));
8513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
8514        res.setRequestProvider(parseReference(xpp));
8515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
8516        res.setRequestOrganization(parseReference(xpp));
8517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
8518        res.setForm(parseCoding(xpp));
8519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
8520        res.getNotes().add(parseProcessResponseProcessResponseNotesComponent(xpp, res));
8521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
8522        res.getError().add(parseCoding(xpp));
8523      } else if (!parseDomainResourceContent(eventType, xpp, res))
8524        unknownContent(xpp);
8525      eventType = nextNoWhitespace(xpp);
8526    }
8527    next(xpp);
8528    parseElementClose(res);
8529    return res;
8530  }
8531
8532  protected ProcessResponse.ProcessResponseNotesComponent parseProcessResponseProcessResponseNotesComponent(
8533      XmlPullParser xpp, ProcessResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
8534    ProcessResponse.ProcessResponseNotesComponent res = new ProcessResponse.ProcessResponseNotesComponent();
8535    parseBackboneAttributes(xpp, res);
8536    next(xpp);
8537    int eventType = nextNoWhitespace(xpp);
8538    while (eventType != XmlPullParser.END_TAG) {
8539      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8540        res.setType(parseCoding(xpp));
8541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8542        res.setTextElement(parseString(xpp));
8543      } else if (!parseBackboneContent(eventType, xpp, res))
8544        unknownContent(xpp);
8545      eventType = nextNoWhitespace(xpp);
8546    }
8547    next(xpp);
8548    parseElementClose(res);
8549    return res;
8550  }
8551
8552  protected Provenance parseProvenance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8553    Provenance res = new Provenance();
8554    parseDomainResourceAttributes(xpp, res);
8555    next(xpp);
8556    int eventType = nextNoWhitespace(xpp);
8557    while (eventType != XmlPullParser.END_TAG) {
8558      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8559        res.getTarget().add(parseReference(xpp));
8560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8561        res.setPeriod(parsePeriod(xpp));
8562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
8563        res.setRecordedElement(parseInstant(xpp));
8564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
8565        res.getReason().add(parseCodeableConcept(xpp));
8566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
8567        res.setActivity(parseCodeableConcept(xpp));
8568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
8569        res.setLocation(parseReference(xpp));
8570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
8571        res.getPolicy().add(parseUri(xpp));
8572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
8573        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, res));
8574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
8575        res.getEntity().add(parseProvenanceProvenanceEntityComponent(xpp, res));
8576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
8577        res.getSignature().add(parseSignature(xpp));
8578      } else if (!parseDomainResourceContent(eventType, xpp, res))
8579        unknownContent(xpp);
8580      eventType = nextNoWhitespace(xpp);
8581    }
8582    next(xpp);
8583    parseElementClose(res);
8584    return res;
8585  }
8586
8587  protected Provenance.ProvenanceAgentComponent parseProvenanceProvenanceAgentComponent(XmlPullParser xpp,
8588      Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
8589    Provenance.ProvenanceAgentComponent res = new Provenance.ProvenanceAgentComponent();
8590    parseBackboneAttributes(xpp, res);
8591    next(xpp);
8592    int eventType = nextNoWhitespace(xpp);
8593    while (eventType != XmlPullParser.END_TAG) {
8594      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8595        res.setRole(parseCoding(xpp));
8596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
8597        res.setActor(parseReference(xpp));
8598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userId")) {
8599        res.setUserId(parseIdentifier(xpp));
8600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAgent")) {
8601        res.getRelatedAgent().add(parseProvenanceProvenanceAgentRelatedAgentComponent(xpp, owner));
8602      } else if (!parseBackboneContent(eventType, xpp, res))
8603        unknownContent(xpp);
8604      eventType = nextNoWhitespace(xpp);
8605    }
8606    next(xpp);
8607    parseElementClose(res);
8608    return res;
8609  }
8610
8611  protected Provenance.ProvenanceAgentRelatedAgentComponent parseProvenanceProvenanceAgentRelatedAgentComponent(
8612      XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
8613    Provenance.ProvenanceAgentRelatedAgentComponent res = new Provenance.ProvenanceAgentRelatedAgentComponent();
8614    parseBackboneAttributes(xpp, res);
8615    next(xpp);
8616    int eventType = nextNoWhitespace(xpp);
8617    while (eventType != XmlPullParser.END_TAG) {
8618      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8619        res.setType(parseCodeableConcept(xpp));
8620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8621        res.setTargetElement(parseUri(xpp));
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 Provenance.ProvenanceEntityComponent parseProvenanceProvenanceEntityComponent(XmlPullParser xpp,
8632      Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
8633    Provenance.ProvenanceEntityComponent res = new Provenance.ProvenanceEntityComponent();
8634    parseBackboneAttributes(xpp, res);
8635    next(xpp);
8636    int eventType = nextNoWhitespace(xpp);
8637    while (eventType != XmlPullParser.END_TAG) {
8638      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8639        res.setRoleElement(parseEnumeration(xpp, Provenance.ProvenanceEntityRole.NULL,
8640            new Provenance.ProvenanceEntityRoleEnumFactory()));
8641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8642        res.setType(parseCoding(xpp));
8643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
8644        res.setReferenceElement(parseUri(xpp));
8645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
8646        res.setDisplayElement(parseString(xpp));
8647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
8648        res.setAgent(parseProvenanceProvenanceAgentComponent(xpp, owner));
8649      } else if (!parseBackboneContent(eventType, xpp, res))
8650        unknownContent(xpp);
8651      eventType = nextNoWhitespace(xpp);
8652    }
8653    next(xpp);
8654    parseElementClose(res);
8655    return res;
8656  }
8657
8658  protected Questionnaire parseQuestionnaire(XmlPullParser xpp)
8659      throws XmlPullParserException, IOException, FHIRFormatError {
8660    Questionnaire res = new Questionnaire();
8661    parseDomainResourceAttributes(xpp, res);
8662    next(xpp);
8663    int eventType = nextNoWhitespace(xpp);
8664    while (eventType != XmlPullParser.END_TAG) {
8665      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8666        res.getIdentifier().add(parseIdentifier(xpp));
8667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8668        res.setVersionElement(parseString(xpp));
8669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8670        res.setStatusElement(parseEnumeration(xpp, Questionnaire.QuestionnaireStatus.NULL,
8671            new Questionnaire.QuestionnaireStatusEnumFactory()));
8672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8673        res.setDateElement(parseDateTime(xpp));
8674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8675        res.setPublisherElement(parseString(xpp));
8676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
8677        res.getTelecom().add(parseContactPoint(xpp));
8678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectType")) {
8679        res.getSubjectType().add(parseCode(xpp));
8680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8681        res.setGroup(parseQuestionnaireGroupComponent(xpp, res));
8682      } else if (!parseDomainResourceContent(eventType, xpp, res))
8683        unknownContent(xpp);
8684      eventType = nextNoWhitespace(xpp);
8685    }
8686    next(xpp);
8687    parseElementClose(res);
8688    return res;
8689  }
8690
8691  protected Questionnaire.GroupComponent parseQuestionnaireGroupComponent(XmlPullParser xpp, Questionnaire owner)
8692      throws XmlPullParserException, IOException, FHIRFormatError {
8693    Questionnaire.GroupComponent res = new Questionnaire.GroupComponent();
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("linkId")) {
8699        res.setLinkIdElement(parseString(xpp));
8700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
8701        res.setTitleElement(parseString(xpp));
8702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
8703        res.getConcept().add(parseCoding(xpp));
8704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8705        res.setTextElement(parseString(xpp));
8706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
8707        res.setRequiredElement(parseBoolean(xpp));
8708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
8709        res.setRepeatsElement(parseBoolean(xpp));
8710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8711        res.getGroup().add(parseQuestionnaireGroupComponent(xpp, owner));
8712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
8713        res.getQuestion().add(parseQuestionnaireQuestionComponent(xpp, owner));
8714      } else if (!parseBackboneContent(eventType, xpp, res))
8715        unknownContent(xpp);
8716      eventType = nextNoWhitespace(xpp);
8717    }
8718    next(xpp);
8719    parseElementClose(res);
8720    return res;
8721  }
8722
8723  protected Questionnaire.QuestionComponent parseQuestionnaireQuestionComponent(XmlPullParser xpp, Questionnaire owner)
8724      throws XmlPullParserException, IOException, FHIRFormatError {
8725    Questionnaire.QuestionComponent res = new Questionnaire.QuestionComponent();
8726    parseBackboneAttributes(xpp, res);
8727    next(xpp);
8728    int eventType = nextNoWhitespace(xpp);
8729    while (eventType != XmlPullParser.END_TAG) {
8730      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
8731        res.setLinkIdElement(parseString(xpp));
8732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
8733        res.getConcept().add(parseCoding(xpp));
8734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8735        res.setTextElement(parseString(xpp));
8736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8737        res.setTypeElement(
8738            parseEnumeration(xpp, Questionnaire.AnswerFormat.NULL, new Questionnaire.AnswerFormatEnumFactory()));
8739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
8740        res.setRequiredElement(parseBoolean(xpp));
8741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
8742        res.setRepeatsElement(parseBoolean(xpp));
8743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("options")) {
8744        res.setOptions(parseReference(xpp));
8745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("option")) {
8746        res.getOption().add(parseCoding(xpp));
8747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8748        res.getGroup().add(parseQuestionnaireGroupComponent(xpp, owner));
8749      } else if (!parseBackboneContent(eventType, xpp, res))
8750        unknownContent(xpp);
8751      eventType = nextNoWhitespace(xpp);
8752    }
8753    next(xpp);
8754    parseElementClose(res);
8755    return res;
8756  }
8757
8758  protected QuestionnaireResponse parseQuestionnaireResponse(XmlPullParser xpp)
8759      throws XmlPullParserException, IOException, FHIRFormatError {
8760    QuestionnaireResponse res = new QuestionnaireResponse();
8761    parseDomainResourceAttributes(xpp, res);
8762    next(xpp);
8763    int eventType = nextNoWhitespace(xpp);
8764    while (eventType != XmlPullParser.END_TAG) {
8765      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8766        res.setIdentifier(parseIdentifier(xpp));
8767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("questionnaire")) {
8768        res.setQuestionnaire(parseReference(xpp));
8769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8770        res.setStatusElement(parseEnumeration(xpp, QuestionnaireResponse.QuestionnaireResponseStatus.NULL,
8771            new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory()));
8772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8773        res.setSubject(parseReference(xpp));
8774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8775        res.setAuthor(parseReference(xpp));
8776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authored")) {
8777        res.setAuthoredElement(parseDateTime(xpp));
8778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8779        res.setSource(parseReference(xpp));
8780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8781        res.setEncounter(parseReference(xpp));
8782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8783        res.setGroup(parseQuestionnaireResponseGroupComponent(xpp, res));
8784      } else if (!parseDomainResourceContent(eventType, xpp, res))
8785        unknownContent(xpp);
8786      eventType = nextNoWhitespace(xpp);
8787    }
8788    next(xpp);
8789    parseElementClose(res);
8790    return res;
8791  }
8792
8793  protected QuestionnaireResponse.GroupComponent parseQuestionnaireResponseGroupComponent(XmlPullParser xpp,
8794      QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
8795    QuestionnaireResponse.GroupComponent res = new QuestionnaireResponse.GroupComponent();
8796    parseBackboneAttributes(xpp, res);
8797    next(xpp);
8798    int eventType = nextNoWhitespace(xpp);
8799    while (eventType != XmlPullParser.END_TAG) {
8800      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
8801        res.setLinkIdElement(parseString(xpp));
8802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
8803        res.setTitleElement(parseString(xpp));
8804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8805        res.setTextElement(parseString(xpp));
8806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8807        res.setSubject(parseReference(xpp));
8808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8809        res.getGroup().add(parseQuestionnaireResponseGroupComponent(xpp, owner));
8810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
8811        res.getQuestion().add(parseQuestionnaireResponseQuestionComponent(xpp, owner));
8812      } else if (!parseBackboneContent(eventType, xpp, res))
8813        unknownContent(xpp);
8814      eventType = nextNoWhitespace(xpp);
8815    }
8816    next(xpp);
8817    parseElementClose(res);
8818    return res;
8819  }
8820
8821  protected QuestionnaireResponse.QuestionComponent parseQuestionnaireResponseQuestionComponent(XmlPullParser xpp,
8822      QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
8823    QuestionnaireResponse.QuestionComponent res = new QuestionnaireResponse.QuestionComponent();
8824    parseBackboneAttributes(xpp, res);
8825    next(xpp);
8826    int eventType = nextNoWhitespace(xpp);
8827    while (eventType != XmlPullParser.END_TAG) {
8828      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
8829        res.setLinkIdElement(parseString(xpp));
8830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8831        res.setTextElement(parseString(xpp));
8832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
8833        res.getAnswer().add(parseQuestionnaireResponseQuestionAnswerComponent(xpp, owner));
8834      } else if (!parseBackboneContent(eventType, xpp, res))
8835        unknownContent(xpp);
8836      eventType = nextNoWhitespace(xpp);
8837    }
8838    next(xpp);
8839    parseElementClose(res);
8840    return res;
8841  }
8842
8843  protected QuestionnaireResponse.QuestionAnswerComponent parseQuestionnaireResponseQuestionAnswerComponent(
8844      XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
8845    QuestionnaireResponse.QuestionAnswerComponent res = new QuestionnaireResponse.QuestionAnswerComponent();
8846    parseBackboneAttributes(xpp, res);
8847    next(xpp);
8848    int eventType = nextNoWhitespace(xpp);
8849    while (eventType != XmlPullParser.END_TAG) {
8850      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
8851        res.setValue(parseType("value", xpp));
8852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8853        res.getGroup().add(parseQuestionnaireResponseGroupComponent(xpp, owner));
8854      } else if (!parseBackboneContent(eventType, xpp, res))
8855        unknownContent(xpp);
8856      eventType = nextNoWhitespace(xpp);
8857    }
8858    next(xpp);
8859    parseElementClose(res);
8860    return res;
8861  }
8862
8863  protected ReferralRequest parseReferralRequest(XmlPullParser xpp)
8864      throws XmlPullParserException, IOException, FHIRFormatError {
8865    ReferralRequest res = new ReferralRequest();
8866    parseDomainResourceAttributes(xpp, res);
8867    next(xpp);
8868    int eventType = nextNoWhitespace(xpp);
8869    while (eventType != XmlPullParser.END_TAG) {
8870      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8871        res.setStatusElement(parseEnumeration(xpp, ReferralRequest.ReferralStatus.NULL,
8872            new ReferralRequest.ReferralStatusEnumFactory()));
8873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8874        res.getIdentifier().add(parseIdentifier(xpp));
8875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8876        res.setDateElement(parseDateTime(xpp));
8877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8878        res.setType(parseCodeableConcept(xpp));
8879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
8880        res.setSpecialty(parseCodeableConcept(xpp));
8881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8882        res.setPriority(parseCodeableConcept(xpp));
8883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8884        res.setPatient(parseReference(xpp));
8885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
8886        res.setRequester(parseReference(xpp));
8887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
8888        res.getRecipient().add(parseReference(xpp));
8889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8890        res.setEncounter(parseReference(xpp));
8891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateSent")) {
8892        res.setDateSentElement(parseDateTime(xpp));
8893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
8894        res.setReason(parseCodeableConcept(xpp));
8895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8896        res.setDescriptionElement(parseString(xpp));
8897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceRequested")) {
8898        res.getServiceRequested().add(parseCodeableConcept(xpp));
8899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
8900        res.getSupportingInformation().add(parseReference(xpp));
8901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fulfillmentTime")) {
8902        res.setFulfillmentTime(parsePeriod(xpp));
8903      } else if (!parseDomainResourceContent(eventType, xpp, res))
8904        unknownContent(xpp);
8905      eventType = nextNoWhitespace(xpp);
8906    }
8907    next(xpp);
8908    parseElementClose(res);
8909    return res;
8910  }
8911
8912  protected RelatedPerson parseRelatedPerson(XmlPullParser xpp)
8913      throws XmlPullParserException, IOException, FHIRFormatError {
8914    RelatedPerson res = new RelatedPerson();
8915    parseDomainResourceAttributes(xpp, res);
8916    next(xpp);
8917    int eventType = nextNoWhitespace(xpp);
8918    while (eventType != XmlPullParser.END_TAG) {
8919      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8920        res.getIdentifier().add(parseIdentifier(xpp));
8921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8922        res.setPatient(parseReference(xpp));
8923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
8924        res.setRelationship(parseCodeableConcept(xpp));
8925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8926        res.setName(parseHumanName(xpp));
8927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
8928        res.getTelecom().add(parseContactPoint(xpp));
8929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
8930        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL,
8931            new Enumerations.AdministrativeGenderEnumFactory()));
8932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
8933        res.setBirthDateElement(parseDate(xpp));
8934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
8935        res.getAddress().add(parseAddress(xpp));
8936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
8937        res.getPhoto().add(parseAttachment(xpp));
8938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8939        res.setPeriod(parsePeriod(xpp));
8940      } else if (!parseDomainResourceContent(eventType, xpp, res))
8941        unknownContent(xpp);
8942      eventType = nextNoWhitespace(xpp);
8943    }
8944    next(xpp);
8945    parseElementClose(res);
8946    return res;
8947  }
8948
8949  protected RiskAssessment parseRiskAssessment(XmlPullParser xpp)
8950      throws XmlPullParserException, IOException, FHIRFormatError {
8951    RiskAssessment res = new RiskAssessment();
8952    parseDomainResourceAttributes(xpp, res);
8953    next(xpp);
8954    int eventType = nextNoWhitespace(xpp);
8955    while (eventType != XmlPullParser.END_TAG) {
8956      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8957        res.setSubject(parseReference(xpp));
8958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8959        res.setDateElement(parseDateTime(xpp));
8960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
8961        res.setCondition(parseReference(xpp));
8962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8963        res.setEncounter(parseReference(xpp));
8964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
8965        res.setPerformer(parseReference(xpp));
8966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8967        res.setIdentifier(parseIdentifier(xpp));
8968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
8969        res.setMethod(parseCodeableConcept(xpp));
8970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
8971        res.getBasis().add(parseReference(xpp));
8972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prediction")) {
8973        res.getPrediction().add(parseRiskAssessmentRiskAssessmentPredictionComponent(xpp, res));
8974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
8975        res.setMitigationElement(parseString(xpp));
8976      } else if (!parseDomainResourceContent(eventType, xpp, res))
8977        unknownContent(xpp);
8978      eventType = nextNoWhitespace(xpp);
8979    }
8980    next(xpp);
8981    parseElementClose(res);
8982    return res;
8983  }
8984
8985  protected RiskAssessment.RiskAssessmentPredictionComponent parseRiskAssessmentRiskAssessmentPredictionComponent(
8986      XmlPullParser xpp, RiskAssessment owner) throws XmlPullParserException, IOException, FHIRFormatError {
8987    RiskAssessment.RiskAssessmentPredictionComponent res = new RiskAssessment.RiskAssessmentPredictionComponent();
8988    parseBackboneAttributes(xpp, res);
8989    next(xpp);
8990    int eventType = nextNoWhitespace(xpp);
8991    while (eventType != XmlPullParser.END_TAG) {
8992      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8993        res.setOutcome(parseCodeableConcept(xpp));
8994      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "probability")) {
8995        res.setProbability(parseType("probability", xpp));
8996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativeRisk")) {
8997        res.setRelativeRiskElement(parseDecimal(xpp));
8998      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
8999        res.setWhen(parseType("when", xpp));
9000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
9001        res.setRationaleElement(parseString(xpp));
9002      } else if (!parseBackboneContent(eventType, xpp, res))
9003        unknownContent(xpp);
9004      eventType = nextNoWhitespace(xpp);
9005    }
9006    next(xpp);
9007    parseElementClose(res);
9008    return res;
9009  }
9010
9011  protected Schedule parseSchedule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9012    Schedule res = new Schedule();
9013    parseDomainResourceAttributes(xpp, res);
9014    next(xpp);
9015    int eventType = nextNoWhitespace(xpp);
9016    while (eventType != XmlPullParser.END_TAG) {
9017      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9018        res.getIdentifier().add(parseIdentifier(xpp));
9019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9020        res.getType().add(parseCodeableConcept(xpp));
9021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
9022        res.setActor(parseReference(xpp));
9023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planningHorizon")) {
9024        res.setPlanningHorizon(parsePeriod(xpp));
9025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
9026        res.setCommentElement(parseString(xpp));
9027      } else if (!parseDomainResourceContent(eventType, xpp, res))
9028        unknownContent(xpp);
9029      eventType = nextNoWhitespace(xpp);
9030    }
9031    next(xpp);
9032    parseElementClose(res);
9033    return res;
9034  }
9035
9036  protected SearchParameter parseSearchParameter(XmlPullParser xpp)
9037      throws XmlPullParserException, IOException, FHIRFormatError {
9038    SearchParameter res = new SearchParameter();
9039    parseDomainResourceAttributes(xpp, res);
9040    next(xpp);
9041    int eventType = nextNoWhitespace(xpp);
9042    while (eventType != XmlPullParser.END_TAG) {
9043      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9044        res.setUrlElement(parseUri(xpp));
9045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9046        res.setNameElement(parseString(xpp));
9047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9048        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL,
9049            new Enumerations.ConformanceResourceStatusEnumFactory()));
9050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9051        res.setExperimentalElement(parseBoolean(xpp));
9052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9053        res.setPublisherElement(parseString(xpp));
9054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9055        res.getContact().add(parseSearchParameterSearchParameterContactComponent(xpp, res));
9056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9057        res.setDateElement(parseDateTime(xpp));
9058      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
9059        res.setRequirementsElement(parseString(xpp));
9060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9061        res.setCodeElement(parseCode(xpp));
9062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
9063        res.setBaseElement(parseCode(xpp));
9064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9065        res.setTypeElement(
9066            parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
9067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9068        res.setDescriptionElement(parseString(xpp));
9069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
9070        res.setXpathElement(parseString(xpp));
9071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpathUsage")) {
9072        res.setXpathUsageElement(parseEnumeration(xpp, SearchParameter.XPathUsageType.NULL,
9073            new SearchParameter.XPathUsageTypeEnumFactory()));
9074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
9075        res.getTarget().add(parseCode(xpp));
9076      } else if (!parseDomainResourceContent(eventType, xpp, res))
9077        unknownContent(xpp);
9078      eventType = nextNoWhitespace(xpp);
9079    }
9080    next(xpp);
9081    parseElementClose(res);
9082    return res;
9083  }
9084
9085  protected SearchParameter.SearchParameterContactComponent parseSearchParameterSearchParameterContactComponent(
9086      XmlPullParser xpp, SearchParameter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9087    SearchParameter.SearchParameterContactComponent res = new SearchParameter.SearchParameterContactComponent();
9088    parseBackboneAttributes(xpp, res);
9089    next(xpp);
9090    int eventType = nextNoWhitespace(xpp);
9091    while (eventType != XmlPullParser.END_TAG) {
9092      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9093        res.setNameElement(parseString(xpp));
9094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
9095        res.getTelecom().add(parseContactPoint(xpp));
9096      } else if (!parseBackboneContent(eventType, xpp, res))
9097        unknownContent(xpp);
9098      eventType = nextNoWhitespace(xpp);
9099    }
9100    next(xpp);
9101    parseElementClose(res);
9102    return res;
9103  }
9104
9105  protected Slot parseSlot(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9106    Slot res = new Slot();
9107    parseDomainResourceAttributes(xpp, res);
9108    next(xpp);
9109    int eventType = nextNoWhitespace(xpp);
9110    while (eventType != XmlPullParser.END_TAG) {
9111      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9112        res.getIdentifier().add(parseIdentifier(xpp));
9113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9114        res.setType(parseCodeableConcept(xpp));
9115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
9116        res.setSchedule(parseReference(xpp));
9117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("freeBusyType")) {
9118        res.setFreeBusyTypeElement(parseEnumeration(xpp, Slot.SlotStatus.NULL, new Slot.SlotStatusEnumFactory()));
9119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
9120        res.setStartElement(parseInstant(xpp));
9121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
9122        res.setEndElement(parseInstant(xpp));
9123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overbooked")) {
9124        res.setOverbookedElement(parseBoolean(xpp));
9125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
9126        res.setCommentElement(parseString(xpp));
9127      } else if (!parseDomainResourceContent(eventType, xpp, res))
9128        unknownContent(xpp);
9129      eventType = nextNoWhitespace(xpp);
9130    }
9131    next(xpp);
9132    parseElementClose(res);
9133    return res;
9134  }
9135
9136  protected Specimen parseSpecimen(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9137    Specimen res = new Specimen();
9138    parseDomainResourceAttributes(xpp, res);
9139    next(xpp);
9140    int eventType = nextNoWhitespace(xpp);
9141    while (eventType != XmlPullParser.END_TAG) {
9142      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9143        res.getIdentifier().add(parseIdentifier(xpp));
9144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9145        res.setStatusElement(
9146            parseEnumeration(xpp, Specimen.SpecimenStatus.NULL, new Specimen.SpecimenStatusEnumFactory()));
9147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9148        res.setType(parseCodeableConcept(xpp));
9149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
9150        res.getParent().add(parseReference(xpp));
9151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
9152        res.setSubject(parseReference(xpp));
9153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionIdentifier")) {
9154        res.setAccessionIdentifier(parseIdentifier(xpp));
9155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receivedTime")) {
9156        res.setReceivedTimeElement(parseDateTime(xpp));
9157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
9158        res.setCollection(parseSpecimenSpecimenCollectionComponent(xpp, res));
9159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("treatment")) {
9160        res.getTreatment().add(parseSpecimenSpecimenTreatmentComponent(xpp, res));
9161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
9162        res.getContainer().add(parseSpecimenSpecimenContainerComponent(xpp, res));
9163      } else if (!parseDomainResourceContent(eventType, xpp, res))
9164        unknownContent(xpp);
9165      eventType = nextNoWhitespace(xpp);
9166    }
9167    next(xpp);
9168    parseElementClose(res);
9169    return res;
9170  }
9171
9172  protected Specimen.SpecimenCollectionComponent parseSpecimenSpecimenCollectionComponent(XmlPullParser xpp,
9173      Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
9174    Specimen.SpecimenCollectionComponent res = new Specimen.SpecimenCollectionComponent();
9175    parseBackboneAttributes(xpp, res);
9176    next(xpp);
9177    int eventType = nextNoWhitespace(xpp);
9178    while (eventType != XmlPullParser.END_TAG) {
9179      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
9180        res.setCollector(parseReference(xpp));
9181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
9182        res.getComment().add(parseString(xpp));
9183      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
9184        res.setCollected(parseType("collected", xpp));
9185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9186        res.setQuantity(parseSimpleQuantity(xpp));
9187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
9188        res.setMethod(parseCodeableConcept(xpp));
9189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
9190        res.setBodySite(parseCodeableConcept(xpp));
9191      } else if (!parseBackboneContent(eventType, xpp, res))
9192        unknownContent(xpp);
9193      eventType = nextNoWhitespace(xpp);
9194    }
9195    next(xpp);
9196    parseElementClose(res);
9197    return res;
9198  }
9199
9200  protected Specimen.SpecimenTreatmentComponent parseSpecimenSpecimenTreatmentComponent(XmlPullParser xpp,
9201      Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
9202    Specimen.SpecimenTreatmentComponent res = new Specimen.SpecimenTreatmentComponent();
9203    parseBackboneAttributes(xpp, res);
9204    next(xpp);
9205    int eventType = nextNoWhitespace(xpp);
9206    while (eventType != XmlPullParser.END_TAG) {
9207      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9208        res.setDescriptionElement(parseString(xpp));
9209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
9210        res.setProcedure(parseCodeableConcept(xpp));
9211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
9212        res.getAdditive().add(parseReference(xpp));
9213      } else if (!parseBackboneContent(eventType, xpp, res))
9214        unknownContent(xpp);
9215      eventType = nextNoWhitespace(xpp);
9216    }
9217    next(xpp);
9218    parseElementClose(res);
9219    return res;
9220  }
9221
9222  protected Specimen.SpecimenContainerComponent parseSpecimenSpecimenContainerComponent(XmlPullParser xpp,
9223      Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
9224    Specimen.SpecimenContainerComponent res = new Specimen.SpecimenContainerComponent();
9225    parseBackboneAttributes(xpp, res);
9226    next(xpp);
9227    int eventType = nextNoWhitespace(xpp);
9228    while (eventType != XmlPullParser.END_TAG) {
9229      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9230        res.getIdentifier().add(parseIdentifier(xpp));
9231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9232        res.setDescriptionElement(parseString(xpp));
9233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9234        res.setType(parseCodeableConcept(xpp));
9235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
9236        res.setCapacity(parseSimpleQuantity(xpp));
9237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenQuantity")) {
9238        res.setSpecimenQuantity(parseSimpleQuantity(xpp));
9239      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
9240        res.setAdditive(parseType("additive", xpp));
9241      } else if (!parseBackboneContent(eventType, xpp, res))
9242        unknownContent(xpp);
9243      eventType = nextNoWhitespace(xpp);
9244    }
9245    next(xpp);
9246    parseElementClose(res);
9247    return res;
9248  }
9249
9250  protected StructureDefinition parseStructureDefinition(XmlPullParser xpp)
9251      throws XmlPullParserException, IOException, FHIRFormatError {
9252    StructureDefinition res = new StructureDefinition();
9253    parseDomainResourceAttributes(xpp, res);
9254    next(xpp);
9255    int eventType = nextNoWhitespace(xpp);
9256    while (eventType != XmlPullParser.END_TAG) {
9257      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9258        res.setUrlElement(parseUri(xpp));
9259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9260        res.getIdentifier().add(parseIdentifier(xpp));
9261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9262        res.setVersionElement(parseString(xpp));
9263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9264        res.setNameElement(parseString(xpp));
9265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
9266        res.setDisplayElement(parseString(xpp));
9267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9268        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL,
9269            new Enumerations.ConformanceResourceStatusEnumFactory()));
9270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9271        res.setExperimentalElement(parseBoolean(xpp));
9272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9273        res.setPublisherElement(parseString(xpp));
9274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9275        res.getContact().add(parseStructureDefinitionStructureDefinitionContactComponent(xpp, res));
9276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9277        res.setDateElement(parseDateTime(xpp));
9278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9279        res.setDescriptionElement(parseString(xpp));
9280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9281        res.getUseContext().add(parseCodeableConcept(xpp));
9282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
9283        res.setRequirementsElement(parseString(xpp));
9284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9285        res.setCopyrightElement(parseString(xpp));
9286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9287        res.getCode().add(parseCoding(xpp));
9288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
9289        res.setFhirVersionElement(parseId(xpp));
9290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
9291        res.getMapping().add(parseStructureDefinitionStructureDefinitionMappingComponent(xpp, res));
9292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
9293        res.setKindElement(parseEnumeration(xpp, StructureDefinition.StructureDefinitionKind.NULL,
9294            new StructureDefinition.StructureDefinitionKindEnumFactory()));
9295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constrainedType")) {
9296        res.setConstrainedTypeElement(parseCode(xpp));
9297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
9298        res.setAbstractElement(parseBoolean(xpp));
9299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
9300        res.setContextTypeElement(parseEnumeration(xpp, StructureDefinition.ExtensionContext.NULL,
9301            new StructureDefinition.ExtensionContextEnumFactory()));
9302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
9303        res.getContext().add(parseString(xpp));
9304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
9305        res.setBaseElement(parseUri(xpp));
9306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("snapshot")) {
9307        res.setSnapshot(parseStructureDefinitionStructureDefinitionSnapshotComponent(xpp, res));
9308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("differential")) {
9309        res.setDifferential(parseStructureDefinitionStructureDefinitionDifferentialComponent(xpp, res));
9310      } else if (!parseDomainResourceContent(eventType, xpp, res))
9311        unknownContent(xpp);
9312      eventType = nextNoWhitespace(xpp);
9313    }
9314    next(xpp);
9315    parseElementClose(res);
9316    return res;
9317  }
9318
9319  protected StructureDefinition.StructureDefinitionContactComponent parseStructureDefinitionStructureDefinitionContactComponent(
9320      XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9321    StructureDefinition.StructureDefinitionContactComponent res = new StructureDefinition.StructureDefinitionContactComponent();
9322    parseBackboneAttributes(xpp, res);
9323    next(xpp);
9324    int eventType = nextNoWhitespace(xpp);
9325    while (eventType != XmlPullParser.END_TAG) {
9326      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9327        res.setNameElement(parseString(xpp));
9328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
9329        res.getTelecom().add(parseContactPoint(xpp));
9330      } else if (!parseBackboneContent(eventType, xpp, res))
9331        unknownContent(xpp);
9332      eventType = nextNoWhitespace(xpp);
9333    }
9334    next(xpp);
9335    parseElementClose(res);
9336    return res;
9337  }
9338
9339  protected StructureDefinition.StructureDefinitionMappingComponent parseStructureDefinitionStructureDefinitionMappingComponent(
9340      XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9341    StructureDefinition.StructureDefinitionMappingComponent res = new StructureDefinition.StructureDefinitionMappingComponent();
9342    parseBackboneAttributes(xpp, res);
9343    next(xpp);
9344    int eventType = nextNoWhitespace(xpp);
9345    while (eventType != XmlPullParser.END_TAG) {
9346      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
9347        res.setIdentityElement(parseId(xpp));
9348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
9349        res.setUriElement(parseUri(xpp));
9350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9351        res.setNameElement(parseString(xpp));
9352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comments")) {
9353        res.setCommentsElement(parseString(xpp));
9354      } else if (!parseBackboneContent(eventType, xpp, res))
9355        unknownContent(xpp);
9356      eventType = nextNoWhitespace(xpp);
9357    }
9358    next(xpp);
9359    parseElementClose(res);
9360    return res;
9361  }
9362
9363  protected StructureDefinition.StructureDefinitionSnapshotComponent parseStructureDefinitionStructureDefinitionSnapshotComponent(
9364      XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9365    StructureDefinition.StructureDefinitionSnapshotComponent res = new StructureDefinition.StructureDefinitionSnapshotComponent();
9366    parseBackboneAttributes(xpp, res);
9367    next(xpp);
9368    int eventType = nextNoWhitespace(xpp);
9369    while (eventType != XmlPullParser.END_TAG) {
9370      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
9371        res.getElement().add(parseElementDefinition(xpp));
9372      } else if (!parseBackboneContent(eventType, xpp, res))
9373        unknownContent(xpp);
9374      eventType = nextNoWhitespace(xpp);
9375    }
9376    next(xpp);
9377    parseElementClose(res);
9378    return res;
9379  }
9380
9381  protected StructureDefinition.StructureDefinitionDifferentialComponent parseStructureDefinitionStructureDefinitionDifferentialComponent(
9382      XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9383    StructureDefinition.StructureDefinitionDifferentialComponent res = new StructureDefinition.StructureDefinitionDifferentialComponent();
9384    parseBackboneAttributes(xpp, res);
9385    next(xpp);
9386    int eventType = nextNoWhitespace(xpp);
9387    while (eventType != XmlPullParser.END_TAG) {
9388      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
9389        res.getElement().add(parseElementDefinition(xpp));
9390      } else if (!parseBackboneContent(eventType, xpp, res))
9391        unknownContent(xpp);
9392      eventType = nextNoWhitespace(xpp);
9393    }
9394    next(xpp);
9395    parseElementClose(res);
9396    return res;
9397  }
9398
9399  protected Subscription parseSubscription(XmlPullParser xpp)
9400      throws XmlPullParserException, IOException, FHIRFormatError {
9401    Subscription res = new Subscription();
9402    parseDomainResourceAttributes(xpp, res);
9403    next(xpp);
9404    int eventType = nextNoWhitespace(xpp);
9405    while (eventType != XmlPullParser.END_TAG) {
9406      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
9407        res.setCriteriaElement(parseString(xpp));
9408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9409        res.getContact().add(parseContactPoint(xpp));
9410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9411        res.setReasonElement(parseString(xpp));
9412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9413        res.setStatusElement(parseEnumeration(xpp, Subscription.SubscriptionStatus.NULL,
9414            new Subscription.SubscriptionStatusEnumFactory()));
9415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
9416        res.setErrorElement(parseString(xpp));
9417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("channel")) {
9418        res.setChannel(parseSubscriptionSubscriptionChannelComponent(xpp, res));
9419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
9420        res.setEndElement(parseInstant(xpp));
9421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
9422        res.getTag().add(parseCoding(xpp));
9423      } else if (!parseDomainResourceContent(eventType, xpp, res))
9424        unknownContent(xpp);
9425      eventType = nextNoWhitespace(xpp);
9426    }
9427    next(xpp);
9428    parseElementClose(res);
9429    return res;
9430  }
9431
9432  protected Subscription.SubscriptionChannelComponent parseSubscriptionSubscriptionChannelComponent(XmlPullParser xpp,
9433      Subscription owner) throws XmlPullParserException, IOException, FHIRFormatError {
9434    Subscription.SubscriptionChannelComponent res = new Subscription.SubscriptionChannelComponent();
9435    parseBackboneAttributes(xpp, res);
9436    next(xpp);
9437    int eventType = nextNoWhitespace(xpp);
9438    while (eventType != XmlPullParser.END_TAG) {
9439      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9440        res.setTypeElement(parseEnumeration(xpp, Subscription.SubscriptionChannelType.NULL,
9441            new Subscription.SubscriptionChannelTypeEnumFactory()));
9442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9443        res.setEndpointElement(parseUri(xpp));
9444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
9445        res.setPayloadElement(parseString(xpp));
9446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
9447        res.setHeaderElement(parseString(xpp));
9448      } else if (!parseBackboneContent(eventType, xpp, res))
9449        unknownContent(xpp);
9450      eventType = nextNoWhitespace(xpp);
9451    }
9452    next(xpp);
9453    parseElementClose(res);
9454    return res;
9455  }
9456
9457  protected Substance parseSubstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9458    Substance res = new Substance();
9459    parseDomainResourceAttributes(xpp, res);
9460    next(xpp);
9461    int eventType = nextNoWhitespace(xpp);
9462    while (eventType != XmlPullParser.END_TAG) {
9463      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9464        res.getIdentifier().add(parseIdentifier(xpp));
9465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9466        res.getCategory().add(parseCodeableConcept(xpp));
9467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9468        res.setCode(parseCodeableConcept(xpp));
9469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9470        res.setDescriptionElement(parseString(xpp));
9471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
9472        res.getInstance().add(parseSubstanceSubstanceInstanceComponent(xpp, res));
9473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
9474        res.getIngredient().add(parseSubstanceSubstanceIngredientComponent(xpp, res));
9475      } else if (!parseDomainResourceContent(eventType, xpp, res))
9476        unknownContent(xpp);
9477      eventType = nextNoWhitespace(xpp);
9478    }
9479    next(xpp);
9480    parseElementClose(res);
9481    return res;
9482  }
9483
9484  protected Substance.SubstanceInstanceComponent parseSubstanceSubstanceInstanceComponent(XmlPullParser xpp,
9485      Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
9486    Substance.SubstanceInstanceComponent res = new Substance.SubstanceInstanceComponent();
9487    parseBackboneAttributes(xpp, res);
9488    next(xpp);
9489    int eventType = nextNoWhitespace(xpp);
9490    while (eventType != XmlPullParser.END_TAG) {
9491      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9492        res.setIdentifier(parseIdentifier(xpp));
9493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
9494        res.setExpiryElement(parseDateTime(xpp));
9495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9496        res.setQuantity(parseSimpleQuantity(xpp));
9497      } else if (!parseBackboneContent(eventType, xpp, res))
9498        unknownContent(xpp);
9499      eventType = nextNoWhitespace(xpp);
9500    }
9501    next(xpp);
9502    parseElementClose(res);
9503    return res;
9504  }
9505
9506  protected Substance.SubstanceIngredientComponent parseSubstanceSubstanceIngredientComponent(XmlPullParser xpp,
9507      Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
9508    Substance.SubstanceIngredientComponent res = new Substance.SubstanceIngredientComponent();
9509    parseBackboneAttributes(xpp, res);
9510    next(xpp);
9511    int eventType = nextNoWhitespace(xpp);
9512    while (eventType != XmlPullParser.END_TAG) {
9513      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9514        res.setQuantity(parseRatio(xpp));
9515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
9516        res.setSubstance(parseReference(xpp));
9517      } else if (!parseBackboneContent(eventType, xpp, res))
9518        unknownContent(xpp);
9519      eventType = nextNoWhitespace(xpp);
9520    }
9521    next(xpp);
9522    parseElementClose(res);
9523    return res;
9524  }
9525
9526  protected SupplyDelivery parseSupplyDelivery(XmlPullParser xpp)
9527      throws XmlPullParserException, IOException, FHIRFormatError {
9528    SupplyDelivery res = new SupplyDelivery();
9529    parseDomainResourceAttributes(xpp, res);
9530    next(xpp);
9531    int eventType = nextNoWhitespace(xpp);
9532    while (eventType != XmlPullParser.END_TAG) {
9533      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9534        res.setIdentifier(parseIdentifier(xpp));
9535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9536        res.setStatusElement(parseEnumeration(xpp, SupplyDelivery.SupplyDeliveryStatus.NULL,
9537            new SupplyDelivery.SupplyDeliveryStatusEnumFactory()));
9538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9539        res.setPatient(parseReference(xpp));
9540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9541        res.setType(parseCodeableConcept(xpp));
9542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9543        res.setQuantity(parseSimpleQuantity(xpp));
9544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suppliedItem")) {
9545        res.setSuppliedItem(parseReference(xpp));
9546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
9547        res.setSupplier(parseReference(xpp));
9548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
9549        res.setWhenPrepared(parsePeriod(xpp));
9550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
9551        res.setTimeElement(parseDateTime(xpp));
9552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
9553        res.setDestination(parseReference(xpp));
9554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
9555        res.getReceiver().add(parseReference(xpp));
9556      } else if (!parseDomainResourceContent(eventType, xpp, res))
9557        unknownContent(xpp);
9558      eventType = nextNoWhitespace(xpp);
9559    }
9560    next(xpp);
9561    parseElementClose(res);
9562    return res;
9563  }
9564
9565  protected SupplyRequest parseSupplyRequest(XmlPullParser xpp)
9566      throws XmlPullParserException, IOException, FHIRFormatError {
9567    SupplyRequest res = new SupplyRequest();
9568    parseDomainResourceAttributes(xpp, res);
9569    next(xpp);
9570    int eventType = nextNoWhitespace(xpp);
9571    while (eventType != XmlPullParser.END_TAG) {
9572      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9573        res.setPatient(parseReference(xpp));
9574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
9575        res.setSource(parseReference(xpp));
9576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9577        res.setDateElement(parseDateTime(xpp));
9578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9579        res.setIdentifier(parseIdentifier(xpp));
9580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9581        res.setStatusElement(parseEnumeration(xpp, SupplyRequest.SupplyRequestStatus.NULL,
9582            new SupplyRequest.SupplyRequestStatusEnumFactory()));
9583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
9584        res.setKind(parseCodeableConcept(xpp));
9585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedItem")) {
9586        res.setOrderedItem(parseReference(xpp));
9587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
9588        res.getSupplier().add(parseReference(xpp));
9589      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
9590        res.setReason(parseType("reason", xpp));
9591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
9592        res.setWhen(parseSupplyRequestSupplyRequestWhenComponent(xpp, res));
9593      } else if (!parseDomainResourceContent(eventType, xpp, res))
9594        unknownContent(xpp);
9595      eventType = nextNoWhitespace(xpp);
9596    }
9597    next(xpp);
9598    parseElementClose(res);
9599    return res;
9600  }
9601
9602  protected SupplyRequest.SupplyRequestWhenComponent parseSupplyRequestSupplyRequestWhenComponent(XmlPullParser xpp,
9603      SupplyRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
9604    SupplyRequest.SupplyRequestWhenComponent res = new SupplyRequest.SupplyRequestWhenComponent();
9605    parseBackboneAttributes(xpp, res);
9606    next(xpp);
9607    int eventType = nextNoWhitespace(xpp);
9608    while (eventType != XmlPullParser.END_TAG) {
9609      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9610        res.setCode(parseCodeableConcept(xpp));
9611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
9612        res.setSchedule(parseTiming(xpp));
9613      } else if (!parseBackboneContent(eventType, xpp, res))
9614        unknownContent(xpp);
9615      eventType = nextNoWhitespace(xpp);
9616    }
9617    next(xpp);
9618    parseElementClose(res);
9619    return res;
9620  }
9621
9622  protected TestScript parseTestScript(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9623    TestScript res = new TestScript();
9624    parseDomainResourceAttributes(xpp, res);
9625    next(xpp);
9626    int eventType = nextNoWhitespace(xpp);
9627    while (eventType != XmlPullParser.END_TAG) {
9628      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9629        res.setUrlElement(parseUri(xpp));
9630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9631        res.setVersionElement(parseString(xpp));
9632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9633        res.setNameElement(parseString(xpp));
9634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9635        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL,
9636            new Enumerations.ConformanceResourceStatusEnumFactory()));
9637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9638        res.setIdentifier(parseIdentifier(xpp));
9639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9640        res.setExperimentalElement(parseBoolean(xpp));
9641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9642        res.setPublisherElement(parseString(xpp));
9643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9644        res.getContact().add(parseTestScriptTestScriptContactComponent(xpp, res));
9645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9646        res.setDateElement(parseDateTime(xpp));
9647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9648        res.setDescriptionElement(parseString(xpp));
9649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9650        res.getUseContext().add(parseCodeableConcept(xpp));
9651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
9652        res.setRequirementsElement(parseString(xpp));
9653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9654        res.setCopyrightElement(parseString(xpp));
9655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
9656        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, res));
9657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multiserver")) {
9658        res.setMultiserverElement(parseBoolean(xpp));
9659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixture")) {
9660        res.getFixture().add(parseTestScriptTestScriptFixtureComponent(xpp, res));
9661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
9662        res.getProfile().add(parseReference(xpp));
9663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
9664        res.getVariable().add(parseTestScriptTestScriptVariableComponent(xpp, res));
9665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
9666        res.setSetup(parseTestScriptTestScriptSetupComponent(xpp, res));
9667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
9668        res.getTest().add(parseTestScriptTestScriptTestComponent(xpp, res));
9669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
9670        res.setTeardown(parseTestScriptTestScriptTeardownComponent(xpp, res));
9671      } else if (!parseDomainResourceContent(eventType, xpp, res))
9672        unknownContent(xpp);
9673      eventType = nextNoWhitespace(xpp);
9674    }
9675    next(xpp);
9676    parseElementClose(res);
9677    return res;
9678  }
9679
9680  protected TestScript.TestScriptContactComponent parseTestScriptTestScriptContactComponent(XmlPullParser xpp,
9681      TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9682    TestScript.TestScriptContactComponent res = new TestScript.TestScriptContactComponent();
9683    parseBackboneAttributes(xpp, res);
9684    next(xpp);
9685    int eventType = nextNoWhitespace(xpp);
9686    while (eventType != XmlPullParser.END_TAG) {
9687      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9688        res.setNameElement(parseString(xpp));
9689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
9690        res.getTelecom().add(parseContactPoint(xpp));
9691      } else if (!parseBackboneContent(eventType, xpp, res))
9692        unknownContent(xpp);
9693      eventType = nextNoWhitespace(xpp);
9694    }
9695    next(xpp);
9696    parseElementClose(res);
9697    return res;
9698  }
9699
9700  protected TestScript.TestScriptMetadataComponent parseTestScriptTestScriptMetadataComponent(XmlPullParser xpp,
9701      TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9702    TestScript.TestScriptMetadataComponent res = new TestScript.TestScriptMetadataComponent();
9703    parseBackboneAttributes(xpp, res);
9704    next(xpp);
9705    int eventType = nextNoWhitespace(xpp);
9706    while (eventType != XmlPullParser.END_TAG) {
9707      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
9708        res.getLink().add(parseTestScriptTestScriptMetadataLinkComponent(xpp, owner));
9709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
9710        res.getCapability().add(parseTestScriptTestScriptMetadataCapabilityComponent(xpp, owner));
9711      } else if (!parseBackboneContent(eventType, xpp, res))
9712        unknownContent(xpp);
9713      eventType = nextNoWhitespace(xpp);
9714    }
9715    next(xpp);
9716    parseElementClose(res);
9717    return res;
9718  }
9719
9720  protected TestScript.TestScriptMetadataLinkComponent parseTestScriptTestScriptMetadataLinkComponent(XmlPullParser xpp,
9721      TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9722    TestScript.TestScriptMetadataLinkComponent res = new TestScript.TestScriptMetadataLinkComponent();
9723    parseBackboneAttributes(xpp, res);
9724    next(xpp);
9725    int eventType = nextNoWhitespace(xpp);
9726    while (eventType != XmlPullParser.END_TAG) {
9727      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9728        res.setUrlElement(parseUri(xpp));
9729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9730        res.setDescriptionElement(parseString(xpp));
9731      } else if (!parseBackboneContent(eventType, xpp, res))
9732        unknownContent(xpp);
9733      eventType = nextNoWhitespace(xpp);
9734    }
9735    next(xpp);
9736    parseElementClose(res);
9737    return res;
9738  }
9739
9740  protected TestScript.TestScriptMetadataCapabilityComponent parseTestScriptTestScriptMetadataCapabilityComponent(
9741      XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9742    TestScript.TestScriptMetadataCapabilityComponent res = new TestScript.TestScriptMetadataCapabilityComponent();
9743    parseBackboneAttributes(xpp, res);
9744    next(xpp);
9745    int eventType = nextNoWhitespace(xpp);
9746    while (eventType != XmlPullParser.END_TAG) {
9747      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
9748        res.setRequiredElement(parseBoolean(xpp));
9749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validated")) {
9750        res.setValidatedElement(parseBoolean(xpp));
9751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9752        res.setDescriptionElement(parseString(xpp));
9753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
9754        res.setDestinationElement(parseInteger(xpp));
9755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
9756        res.getLink().add(parseUri(xpp));
9757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conformance")) {
9758        res.setConformance(parseReference(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 TestScript.TestScriptFixtureComponent parseTestScriptTestScriptFixtureComponent(XmlPullParser xpp,
9769      TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9770    TestScript.TestScriptFixtureComponent res = new TestScript.TestScriptFixtureComponent();
9771    parseBackboneAttributes(xpp, res);
9772    next(xpp);
9773    int eventType = nextNoWhitespace(xpp);
9774    while (eventType != XmlPullParser.END_TAG) {
9775      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autocreate")) {
9776        res.setAutocreateElement(parseBoolean(xpp));
9777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autodelete")) {
9778        res.setAutodeleteElement(parseBoolean(xpp));
9779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
9780        res.setResource(parseReference(xpp));
9781      } else if (!parseBackboneContent(eventType, xpp, res))
9782        unknownContent(xpp);
9783      eventType = nextNoWhitespace(xpp);
9784    }
9785    next(xpp);
9786    parseElementClose(res);
9787    return res;
9788  }
9789
9790  protected TestScript.TestScriptVariableComponent parseTestScriptTestScriptVariableComponent(XmlPullParser xpp,
9791      TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9792    TestScript.TestScriptVariableComponent res = new TestScript.TestScriptVariableComponent();
9793    parseBackboneAttributes(xpp, res);
9794    next(xpp);
9795    int eventType = nextNoWhitespace(xpp);
9796    while (eventType != XmlPullParser.END_TAG) {
9797      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9798        res.setNameElement(parseString(xpp));
9799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
9800        res.setHeaderFieldElement(parseString(xpp));
9801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
9802        res.setPathElement(parseString(xpp));
9803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
9804        res.setSourceIdElement(parseId(xpp));
9805      } else if (!parseBackboneContent(eventType, xpp, res))
9806        unknownContent(xpp);
9807      eventType = nextNoWhitespace(xpp);
9808    }
9809    next(xpp);
9810    parseElementClose(res);
9811    return res;
9812  }
9813
9814  protected TestScript.TestScriptSetupComponent parseTestScriptTestScriptSetupComponent(XmlPullParser xpp,
9815      TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9816    TestScript.TestScriptSetupComponent res = new TestScript.TestScriptSetupComponent();
9817    parseBackboneAttributes(xpp, res);
9818    next(xpp);
9819    int eventType = nextNoWhitespace(xpp);
9820    while (eventType != XmlPullParser.END_TAG) {
9821      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
9822        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, owner));
9823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
9824        res.getAction().add(parseTestScriptTestScriptSetupActionComponent(xpp, owner));
9825      } else if (!parseBackboneContent(eventType, xpp, res))
9826        unknownContent(xpp);
9827      eventType = nextNoWhitespace(xpp);
9828    }
9829    next(xpp);
9830    parseElementClose(res);
9831    return res;
9832  }
9833
9834  protected TestScript.TestScriptSetupActionComponent parseTestScriptTestScriptSetupActionComponent(XmlPullParser xpp,
9835      TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9836    TestScript.TestScriptSetupActionComponent res = new TestScript.TestScriptSetupActionComponent();
9837    parseBackboneAttributes(xpp, res);
9838    next(xpp);
9839    int eventType = nextNoWhitespace(xpp);
9840    while (eventType != XmlPullParser.END_TAG) {
9841      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
9842        res.setOperation(parseTestScriptTestScriptSetupActionOperationComponent(xpp, owner));
9843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
9844        res.setAssert(parseTestScriptTestScriptSetupActionAssertComponent(xpp, owner));
9845      } else if (!parseBackboneContent(eventType, xpp, res))
9846        unknownContent(xpp);
9847      eventType = nextNoWhitespace(xpp);
9848    }
9849    next(xpp);
9850    parseElementClose(res);
9851    return res;
9852  }
9853
9854  protected TestScript.TestScriptSetupActionOperationComponent parseTestScriptTestScriptSetupActionOperationComponent(
9855      XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9856    TestScript.TestScriptSetupActionOperationComponent res = new TestScript.TestScriptSetupActionOperationComponent();
9857    parseBackboneAttributes(xpp, res);
9858    next(xpp);
9859    int eventType = nextNoWhitespace(xpp);
9860    while (eventType != XmlPullParser.END_TAG) {
9861      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9862        res.setType(parseCoding(xpp));
9863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
9864        res.setResourceElement(parseCode(xpp));
9865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
9866        res.setLabelElement(parseString(xpp));
9867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9868        res.setDescriptionElement(parseString(xpp));
9869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accept")) {
9870        res.setAcceptElement(
9871            parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
9872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
9873        res.setContentTypeElement(
9874            parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
9875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
9876        res.setDestinationElement(parseInteger(xpp));
9877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encodeRequestUrl")) {
9878        res.setEncodeRequestUrlElement(parseBoolean(xpp));
9879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
9880        res.setParamsElement(parseString(xpp));
9881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestHeader")) {
9882        res.getRequestHeader().add(parseTestScriptTestScriptSetupActionOperationRequestHeaderComponent(xpp, owner));
9883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseId")) {
9884        res.setResponseIdElement(parseId(xpp));
9885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
9886        res.setSourceIdElement(parseId(xpp));
9887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
9888        res.setTargetIdElement(parseId(xpp));
9889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9890        res.setUrlElement(parseString(xpp));
9891      } else if (!parseBackboneContent(eventType, xpp, res))
9892        unknownContent(xpp);
9893      eventType = nextNoWhitespace(xpp);
9894    }
9895    next(xpp);
9896    parseElementClose(res);
9897    return res;
9898  }
9899
9900  protected TestScript.TestScriptSetupActionOperationRequestHeaderComponent parseTestScriptTestScriptSetupActionOperationRequestHeaderComponent(
9901      XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9902    TestScript.TestScriptSetupActionOperationRequestHeaderComponent res = new TestScript.TestScriptSetupActionOperationRequestHeaderComponent();
9903    parseBackboneAttributes(xpp, res);
9904    next(xpp);
9905    int eventType = nextNoWhitespace(xpp);
9906    while (eventType != XmlPullParser.END_TAG) {
9907      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("field")) {
9908        res.setFieldElement(parseString(xpp));
9909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
9910        res.setValueElement(parseString(xpp));
9911      } else if (!parseBackboneContent(eventType, xpp, res))
9912        unknownContent(xpp);
9913      eventType = nextNoWhitespace(xpp);
9914    }
9915    next(xpp);
9916    parseElementClose(res);
9917    return res;
9918  }
9919
9920  protected TestScript.TestScriptSetupActionAssertComponent parseTestScriptTestScriptSetupActionAssertComponent(
9921      XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9922    TestScript.TestScriptSetupActionAssertComponent res = new TestScript.TestScriptSetupActionAssertComponent();
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("label")) {
9928        res.setLabelElement(parseString(xpp));
9929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9930        res.setDescriptionElement(parseString(xpp));
9931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
9932        res.setDirectionElement(parseEnumeration(xpp, TestScript.AssertionDirectionType.NULL,
9933            new TestScript.AssertionDirectionTypeEnumFactory()));
9934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceId")) {
9935        res.setCompareToSourceIdElement(parseString(xpp));
9936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourcePath")) {
9937        res.setCompareToSourcePathElement(parseString(xpp));
9938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
9939        res.setContentTypeElement(
9940            parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
9941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
9942        res.setHeaderFieldElement(parseString(xpp));
9943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minimumId")) {
9944        res.setMinimumIdElement(parseString(xpp));
9945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("navigationLinks")) {
9946        res.setNavigationLinksElement(parseBoolean(xpp));
9947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
9948        res.setOperatorElement(parseEnumeration(xpp, TestScript.AssertionOperatorType.NULL,
9949            new TestScript.AssertionOperatorTypeEnumFactory()));
9950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
9951        res.setPathElement(parseString(xpp));
9952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
9953        res.setResourceElement(parseCode(xpp));
9954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
9955        res.setResponseElement(parseEnumeration(xpp, TestScript.AssertionResponseTypes.NULL,
9956            new TestScript.AssertionResponseTypesEnumFactory()));
9957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseCode")) {
9958        res.setResponseCodeElement(parseString(xpp));
9959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
9960        res.setSourceIdElement(parseId(xpp));
9961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateProfileId")) {
9962        res.setValidateProfileIdElement(parseId(xpp));
9963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
9964        res.setValueElement(parseString(xpp));
9965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warningOnly")) {
9966        res.setWarningOnlyElement(parseBoolean(xpp));
9967      } else if (!parseBackboneContent(eventType, xpp, res))
9968        unknownContent(xpp);
9969      eventType = nextNoWhitespace(xpp);
9970    }
9971    next(xpp);
9972    parseElementClose(res);
9973    return res;
9974  }
9975
9976  protected TestScript.TestScriptTestComponent parseTestScriptTestScriptTestComponent(XmlPullParser xpp,
9977      TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
9978    TestScript.TestScriptTestComponent res = new TestScript.TestScriptTestComponent();
9979    parseBackboneAttributes(xpp, res);
9980    next(xpp);
9981    int eventType = nextNoWhitespace(xpp);
9982    while (eventType != XmlPullParser.END_TAG) {
9983      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9984        res.setNameElement(parseString(xpp));
9985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9986        res.setDescriptionElement(parseString(xpp));
9987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
9988        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, owner));
9989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
9990        res.getAction().add(parseTestScriptTestScriptTestActionComponent(xpp, owner));
9991      } else if (!parseBackboneContent(eventType, xpp, res))
9992        unknownContent(xpp);
9993      eventType = nextNoWhitespace(xpp);
9994    }
9995    next(xpp);
9996    parseElementClose(res);
9997    return res;
9998  }
9999
10000  protected TestScript.TestScriptTestActionComponent parseTestScriptTestScriptTestActionComponent(XmlPullParser xpp,
10001      TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
10002    TestScript.TestScriptTestActionComponent res = new TestScript.TestScriptTestActionComponent();
10003    parseBackboneAttributes(xpp, res);
10004    next(xpp);
10005    int eventType = nextNoWhitespace(xpp);
10006    while (eventType != XmlPullParser.END_TAG) {
10007      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
10008        res.setOperation(parseTestScriptTestScriptSetupActionOperationComponent(xpp, owner));
10009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
10010        res.setAssert(parseTestScriptTestScriptSetupActionAssertComponent(xpp, owner));
10011      } else if (!parseBackboneContent(eventType, xpp, res))
10012        unknownContent(xpp);
10013      eventType = nextNoWhitespace(xpp);
10014    }
10015    next(xpp);
10016    parseElementClose(res);
10017    return res;
10018  }
10019
10020  protected TestScript.TestScriptTeardownComponent parseTestScriptTestScriptTeardownComponent(XmlPullParser xpp,
10021      TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
10022    TestScript.TestScriptTeardownComponent res = new TestScript.TestScriptTeardownComponent();
10023    parseBackboneAttributes(xpp, res);
10024    next(xpp);
10025    int eventType = nextNoWhitespace(xpp);
10026    while (eventType != XmlPullParser.END_TAG) {
10027      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
10028        res.getAction().add(parseTestScriptTestScriptTeardownActionComponent(xpp, owner));
10029      } else if (!parseBackboneContent(eventType, xpp, res))
10030        unknownContent(xpp);
10031      eventType = nextNoWhitespace(xpp);
10032    }
10033    next(xpp);
10034    parseElementClose(res);
10035    return res;
10036  }
10037
10038  protected TestScript.TestScriptTeardownActionComponent parseTestScriptTestScriptTeardownActionComponent(
10039      XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
10040    TestScript.TestScriptTeardownActionComponent res = new TestScript.TestScriptTeardownActionComponent();
10041    parseBackboneAttributes(xpp, res);
10042    next(xpp);
10043    int eventType = nextNoWhitespace(xpp);
10044    while (eventType != XmlPullParser.END_TAG) {
10045      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
10046        res.setOperation(parseTestScriptTestScriptSetupActionOperationComponent(xpp, owner));
10047      } else if (!parseBackboneContent(eventType, xpp, res))
10048        unknownContent(xpp);
10049      eventType = nextNoWhitespace(xpp);
10050    }
10051    next(xpp);
10052    parseElementClose(res);
10053    return res;
10054  }
10055
10056  protected ValueSet parseValueSet(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10057    ValueSet res = new ValueSet();
10058    parseDomainResourceAttributes(xpp, res);
10059    next(xpp);
10060    int eventType = nextNoWhitespace(xpp);
10061    while (eventType != XmlPullParser.END_TAG) {
10062      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10063        res.setUrlElement(parseUri(xpp));
10064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10065        res.setIdentifier(parseIdentifier(xpp));
10066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10067        res.setVersionElement(parseString(xpp));
10068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10069        res.setNameElement(parseString(xpp));
10070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10071        res.setStatusElement(parseEnumeration(xpp, Enumerations.ConformanceResourceStatus.NULL,
10072            new Enumerations.ConformanceResourceStatusEnumFactory()));
10073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
10074        res.setExperimentalElement(parseBoolean(xpp));
10075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10076        res.setPublisherElement(parseString(xpp));
10077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10078        res.getContact().add(parseValueSetValueSetContactComponent(xpp, res));
10079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10080        res.setDateElement(parseDateTime(xpp));
10081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
10082        res.setLockedDateElement(parseDate(xpp));
10083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10084        res.setDescriptionElement(parseString(xpp));
10085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10086        res.getUseContext().add(parseCodeableConcept(xpp));
10087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immutable")) {
10088        res.setImmutableElement(parseBoolean(xpp));
10089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
10090        res.setRequirementsElement(parseString(xpp));
10091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
10092        res.setCopyrightElement(parseString(xpp));
10093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extensible")) {
10094        res.setExtensibleElement(parseBoolean(xpp));
10095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
10096        res.setCodeSystem(parseValueSetValueSetCodeSystemComponent(xpp, res));
10097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compose")) {
10098        res.setCompose(parseValueSetValueSetComposeComponent(xpp, res));
10099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
10100        res.setExpansion(parseValueSetValueSetExpansionComponent(xpp, res));
10101      } else if (!parseDomainResourceContent(eventType, xpp, res))
10102        unknownContent(xpp);
10103      eventType = nextNoWhitespace(xpp);
10104    }
10105    next(xpp);
10106    parseElementClose(res);
10107    return res;
10108  }
10109
10110  protected ValueSet.ValueSetContactComponent parseValueSetValueSetContactComponent(XmlPullParser xpp, ValueSet owner)
10111      throws XmlPullParserException, IOException, FHIRFormatError {
10112    ValueSet.ValueSetContactComponent res = new ValueSet.ValueSetContactComponent();
10113    parseBackboneAttributes(xpp, res);
10114    next(xpp);
10115    int eventType = nextNoWhitespace(xpp);
10116    while (eventType != XmlPullParser.END_TAG) {
10117      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10118        res.setNameElement(parseString(xpp));
10119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10120        res.getTelecom().add(parseContactPoint(xpp));
10121      } else if (!parseBackboneContent(eventType, xpp, res))
10122        unknownContent(xpp);
10123      eventType = nextNoWhitespace(xpp);
10124    }
10125    next(xpp);
10126    parseElementClose(res);
10127    return res;
10128  }
10129
10130  protected ValueSet.ValueSetCodeSystemComponent parseValueSetValueSetCodeSystemComponent(XmlPullParser xpp,
10131      ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
10132    ValueSet.ValueSetCodeSystemComponent res = new ValueSet.ValueSetCodeSystemComponent();
10133    parseBackboneAttributes(xpp, res);
10134    next(xpp);
10135    int eventType = nextNoWhitespace(xpp);
10136    while (eventType != XmlPullParser.END_TAG) {
10137      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
10138        res.setSystemElement(parseUri(xpp));
10139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10140        res.setVersionElement(parseString(xpp));
10141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caseSensitive")) {
10142        res.setCaseSensitiveElement(parseBoolean(xpp));
10143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
10144        res.getConcept().add(parseValueSetConceptDefinitionComponent(xpp, owner));
10145      } else if (!parseBackboneContent(eventType, xpp, res))
10146        unknownContent(xpp);
10147      eventType = nextNoWhitespace(xpp);
10148    }
10149    next(xpp);
10150    parseElementClose(res);
10151    return res;
10152  }
10153
10154  protected ValueSet.ConceptDefinitionComponent parseValueSetConceptDefinitionComponent(XmlPullParser xpp,
10155      ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
10156    ValueSet.ConceptDefinitionComponent res = new ValueSet.ConceptDefinitionComponent();
10157    parseBackboneAttributes(xpp, res);
10158    next(xpp);
10159    int eventType = nextNoWhitespace(xpp);
10160    while (eventType != XmlPullParser.END_TAG) {
10161      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10162        res.setCodeElement(parseCode(xpp));
10163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
10164        res.setAbstractElement(parseBoolean(xpp));
10165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
10166        res.setDisplayElement(parseString(xpp));
10167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
10168        res.setDefinitionElement(parseString(xpp));
10169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
10170        res.getDesignation().add(parseValueSetConceptDefinitionDesignationComponent(xpp, owner));
10171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
10172        res.getConcept().add(parseValueSetConceptDefinitionComponent(xpp, owner));
10173      } else if (!parseBackboneContent(eventType, xpp, res))
10174        unknownContent(xpp);
10175      eventType = nextNoWhitespace(xpp);
10176    }
10177    next(xpp);
10178    parseElementClose(res);
10179    return res;
10180  }
10181
10182  protected ValueSet.ConceptDefinitionDesignationComponent parseValueSetConceptDefinitionDesignationComponent(
10183      XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
10184    ValueSet.ConceptDefinitionDesignationComponent res = new ValueSet.ConceptDefinitionDesignationComponent();
10185    parseBackboneAttributes(xpp, res);
10186    next(xpp);
10187    int eventType = nextNoWhitespace(xpp);
10188    while (eventType != XmlPullParser.END_TAG) {
10189      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
10190        res.setLanguageElement(parseCode(xpp));
10191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
10192        res.setUse(parseCoding(xpp));
10193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
10194        res.setValueElement(parseString(xpp));
10195      } else if (!parseBackboneContent(eventType, xpp, res))
10196        unknownContent(xpp);
10197      eventType = nextNoWhitespace(xpp);
10198    }
10199    next(xpp);
10200    parseElementClose(res);
10201    return res;
10202  }
10203
10204  protected ValueSet.ValueSetComposeComponent parseValueSetValueSetComposeComponent(XmlPullParser xpp, ValueSet owner)
10205      throws XmlPullParserException, IOException, FHIRFormatError {
10206    ValueSet.ValueSetComposeComponent res = new ValueSet.ValueSetComposeComponent();
10207    parseBackboneAttributes(xpp, res);
10208    next(xpp);
10209    int eventType = nextNoWhitespace(xpp);
10210    while (eventType != XmlPullParser.END_TAG) {
10211      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("import")) {
10212        res.getImport().add(parseUri(xpp));
10213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
10214        res.getInclude().add(parseValueSetConceptSetComponent(xpp, owner));
10215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
10216        res.getExclude().add(parseValueSetConceptSetComponent(xpp, owner));
10217      } else if (!parseBackboneContent(eventType, xpp, res))
10218        unknownContent(xpp);
10219      eventType = nextNoWhitespace(xpp);
10220    }
10221    next(xpp);
10222    parseElementClose(res);
10223    return res;
10224  }
10225
10226  protected ValueSet.ConceptSetComponent parseValueSetConceptSetComponent(XmlPullParser xpp, ValueSet owner)
10227      throws XmlPullParserException, IOException, FHIRFormatError {
10228    ValueSet.ConceptSetComponent res = new ValueSet.ConceptSetComponent();
10229    parseBackboneAttributes(xpp, res);
10230    next(xpp);
10231    int eventType = nextNoWhitespace(xpp);
10232    while (eventType != XmlPullParser.END_TAG) {
10233      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
10234        res.setSystemElement(parseUri(xpp));
10235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10236        res.setVersionElement(parseString(xpp));
10237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
10238        res.getConcept().add(parseValueSetConceptReferenceComponent(xpp, owner));
10239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
10240        res.getFilter().add(parseValueSetConceptSetFilterComponent(xpp, owner));
10241      } else if (!parseBackboneContent(eventType, xpp, res))
10242        unknownContent(xpp);
10243      eventType = nextNoWhitespace(xpp);
10244    }
10245    next(xpp);
10246    parseElementClose(res);
10247    return res;
10248  }
10249
10250  protected ValueSet.ConceptReferenceComponent parseValueSetConceptReferenceComponent(XmlPullParser xpp, ValueSet owner)
10251      throws XmlPullParserException, IOException, FHIRFormatError {
10252    ValueSet.ConceptReferenceComponent res = new ValueSet.ConceptReferenceComponent();
10253    parseBackboneAttributes(xpp, res);
10254    next(xpp);
10255    int eventType = nextNoWhitespace(xpp);
10256    while (eventType != XmlPullParser.END_TAG) {
10257      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10258        res.setCodeElement(parseCode(xpp));
10259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
10260        res.setDisplayElement(parseString(xpp));
10261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
10262        res.getDesignation().add(parseValueSetConceptDefinitionDesignationComponent(xpp, owner));
10263      } else if (!parseBackboneContent(eventType, xpp, res))
10264        unknownContent(xpp);
10265      eventType = nextNoWhitespace(xpp);
10266    }
10267    next(xpp);
10268    parseElementClose(res);
10269    return res;
10270  }
10271
10272  protected ValueSet.ConceptSetFilterComponent parseValueSetConceptSetFilterComponent(XmlPullParser xpp, ValueSet owner)
10273      throws XmlPullParserException, IOException, FHIRFormatError {
10274    ValueSet.ConceptSetFilterComponent res = new ValueSet.ConceptSetFilterComponent();
10275    parseBackboneAttributes(xpp, res);
10276    next(xpp);
10277    int eventType = nextNoWhitespace(xpp);
10278    while (eventType != XmlPullParser.END_TAG) {
10279      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
10280        res.setPropertyElement(parseCode(xpp));
10281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
10282        res.setOpElement(parseEnumeration(xpp, ValueSet.FilterOperator.NULL, new ValueSet.FilterOperatorEnumFactory()));
10283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
10284        res.setValueElement(parseCode(xpp));
10285      } else if (!parseBackboneContent(eventType, xpp, res))
10286        unknownContent(xpp);
10287      eventType = nextNoWhitespace(xpp);
10288    }
10289    next(xpp);
10290    parseElementClose(res);
10291    return res;
10292  }
10293
10294  protected ValueSet.ValueSetExpansionComponent parseValueSetValueSetExpansionComponent(XmlPullParser xpp,
10295      ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
10296    ValueSet.ValueSetExpansionComponent res = new ValueSet.ValueSetExpansionComponent();
10297    parseBackboneAttributes(xpp, res);
10298    next(xpp);
10299    int eventType = nextNoWhitespace(xpp);
10300    while (eventType != XmlPullParser.END_TAG) {
10301      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10302        res.setIdentifierElement(parseUri(xpp));
10303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
10304        res.setTimestampElement(parseDateTime(xpp));
10305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
10306        res.setTotalElement(parseInteger(xpp));
10307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
10308        res.setOffsetElement(parseInteger(xpp));
10309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
10310        res.getParameter().add(parseValueSetValueSetExpansionParameterComponent(xpp, owner));
10311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
10312        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
10313      } else if (!parseBackboneContent(eventType, xpp, res))
10314        unknownContent(xpp);
10315      eventType = nextNoWhitespace(xpp);
10316    }
10317    next(xpp);
10318    parseElementClose(res);
10319    return res;
10320  }
10321
10322  protected ValueSet.ValueSetExpansionParameterComponent parseValueSetValueSetExpansionParameterComponent(
10323      XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
10324    ValueSet.ValueSetExpansionParameterComponent res = new ValueSet.ValueSetExpansionParameterComponent();
10325    parseBackboneAttributes(xpp, res);
10326    next(xpp);
10327    int eventType = nextNoWhitespace(xpp);
10328    while (eventType != XmlPullParser.END_TAG) {
10329      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10330        res.setNameElement(parseString(xpp));
10331      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
10332        res.setValue(parseType("value", xpp));
10333      } else if (!parseBackboneContent(eventType, xpp, res))
10334        unknownContent(xpp);
10335      eventType = nextNoWhitespace(xpp);
10336    }
10337    next(xpp);
10338    parseElementClose(res);
10339    return res;
10340  }
10341
10342  protected ValueSet.ValueSetExpansionContainsComponent parseValueSetValueSetExpansionContainsComponent(
10343      XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
10344    ValueSet.ValueSetExpansionContainsComponent res = new ValueSet.ValueSetExpansionContainsComponent();
10345    parseBackboneAttributes(xpp, res);
10346    next(xpp);
10347    int eventType = nextNoWhitespace(xpp);
10348    while (eventType != XmlPullParser.END_TAG) {
10349      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
10350        res.setSystemElement(parseUri(xpp));
10351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
10352        res.setAbstractElement(parseBoolean(xpp));
10353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10354        res.setVersionElement(parseString(xpp));
10355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10356        res.setCodeElement(parseCode(xpp));
10357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
10358        res.setDisplayElement(parseString(xpp));
10359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
10360        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
10361      } else if (!parseBackboneContent(eventType, xpp, res))
10362        unknownContent(xpp);
10363      eventType = nextNoWhitespace(xpp);
10364    }
10365    next(xpp);
10366    parseElementClose(res);
10367    return res;
10368  }
10369
10370  protected VisionPrescription parseVisionPrescription(XmlPullParser xpp)
10371      throws XmlPullParserException, IOException, FHIRFormatError {
10372    VisionPrescription res = new VisionPrescription();
10373    parseDomainResourceAttributes(xpp, res);
10374    next(xpp);
10375    int eventType = nextNoWhitespace(xpp);
10376    while (eventType != XmlPullParser.END_TAG) {
10377      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10378        res.getIdentifier().add(parseIdentifier(xpp));
10379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
10380        res.setDateWrittenElement(parseDateTime(xpp));
10381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
10382        res.setPatient(parseReference(xpp));
10383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
10384        res.setPrescriber(parseReference(xpp));
10385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10386        res.setEncounter(parseReference(xpp));
10387      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
10388        res.setReason(parseType("reason", xpp));
10389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispense")) {
10390        res.getDispense().add(parseVisionPrescriptionVisionPrescriptionDispenseComponent(xpp, res));
10391      } else if (!parseDomainResourceContent(eventType, xpp, res))
10392        unknownContent(xpp);
10393      eventType = nextNoWhitespace(xpp);
10394    }
10395    next(xpp);
10396    parseElementClose(res);
10397    return res;
10398  }
10399
10400  protected VisionPrescription.VisionPrescriptionDispenseComponent parseVisionPrescriptionVisionPrescriptionDispenseComponent(
10401      XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
10402    VisionPrescription.VisionPrescriptionDispenseComponent res = new VisionPrescription.VisionPrescriptionDispenseComponent();
10403    parseBackboneAttributes(xpp, res);
10404    next(xpp);
10405    int eventType = nextNoWhitespace(xpp);
10406    while (eventType != XmlPullParser.END_TAG) {
10407      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
10408        res.setProduct(parseCoding(xpp));
10409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eye")) {
10410        res.setEyeElement(
10411            parseEnumeration(xpp, VisionPrescription.VisionEyes.NULL, new VisionPrescription.VisionEyesEnumFactory()));
10412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sphere")) {
10413        res.setSphereElement(parseDecimal(xpp));
10414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cylinder")) {
10415        res.setCylinderElement(parseDecimal(xpp));
10416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("axis")) {
10417        res.setAxisElement(parseInteger(xpp));
10418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prism")) {
10419        res.setPrismElement(parseDecimal(xpp));
10420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
10421        res.setBaseElement(
10422            parseEnumeration(xpp, VisionPrescription.VisionBase.NULL, new VisionPrescription.VisionBaseEnumFactory()));
10423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("add")) {
10424        res.setAddElement(parseDecimal(xpp));
10425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("power")) {
10426        res.setPowerElement(parseDecimal(xpp));
10427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("backCurve")) {
10428        res.setBackCurveElement(parseDecimal(xpp));
10429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diameter")) {
10430        res.setDiameterElement(parseDecimal(xpp));
10431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
10432        res.setDuration(parseSimpleQuantity(xpp));
10433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
10434        res.setColorElement(parseString(xpp));
10435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("brand")) {
10436        res.setBrandElement(parseString(xpp));
10437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notes")) {
10438        res.setNotesElement(parseString(xpp));
10439      } else if (!parseBackboneContent(eventType, xpp, res))
10440        unknownContent(xpp);
10441      eventType = nextNoWhitespace(xpp);
10442    }
10443    next(xpp);
10444    parseElementClose(res);
10445    return res;
10446  }
10447
10448  @Override
10449  protected Resource parseResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10450    if (xpp.getName().equals("Parameters"))
10451      return parseParameters(xpp);
10452    else if (xpp.getName().equals("Account"))
10453      return parseAccount(xpp);
10454    else if (xpp.getName().equals("AllergyIntolerance"))
10455      return parseAllergyIntolerance(xpp);
10456    else if (xpp.getName().equals("Appointment"))
10457      return parseAppointment(xpp);
10458    else if (xpp.getName().equals("AppointmentResponse"))
10459      return parseAppointmentResponse(xpp);
10460    else if (xpp.getName().equals("AuditEvent"))
10461      return parseAuditEvent(xpp);
10462    else if (xpp.getName().equals("Basic"))
10463      return parseBasic(xpp);
10464    else if (xpp.getName().equals("Binary"))
10465      return parseBinary(xpp);
10466    else if (xpp.getName().equals("BodySite"))
10467      return parseBodySite(xpp);
10468    else if (xpp.getName().equals("Bundle"))
10469      return parseBundle(xpp);
10470    else if (xpp.getName().equals("CarePlan"))
10471      return parseCarePlan(xpp);
10472    else if (xpp.getName().equals("Claim"))
10473      return parseClaim(xpp);
10474    else if (xpp.getName().equals("ClaimResponse"))
10475      return parseClaimResponse(xpp);
10476    else if (xpp.getName().equals("ClinicalImpression"))
10477      return parseClinicalImpression(xpp);
10478    else if (xpp.getName().equals("Communication"))
10479      return parseCommunication(xpp);
10480    else if (xpp.getName().equals("CommunicationRequest"))
10481      return parseCommunicationRequest(xpp);
10482    else if (xpp.getName().equals("Composition"))
10483      return parseComposition(xpp);
10484    else if (xpp.getName().equals("ConceptMap"))
10485      return parseConceptMap(xpp);
10486    else if (xpp.getName().equals("Condition"))
10487      return parseCondition(xpp);
10488    else if (xpp.getName().equals("Conformance"))
10489      return parseConformance(xpp);
10490    else if (xpp.getName().equals("Contract"))
10491      return parseContract(xpp);
10492    else if (xpp.getName().equals("Coverage"))
10493      return parseCoverage(xpp);
10494    else if (xpp.getName().equals("DataElement"))
10495      return parseDataElement(xpp);
10496    else if (xpp.getName().equals("DetectedIssue"))
10497      return parseDetectedIssue(xpp);
10498    else if (xpp.getName().equals("Device"))
10499      return parseDevice(xpp);
10500    else if (xpp.getName().equals("DeviceComponent"))
10501      return parseDeviceComponent(xpp);
10502    else if (xpp.getName().equals("DeviceMetric"))
10503      return parseDeviceMetric(xpp);
10504    else if (xpp.getName().equals("DeviceUseRequest"))
10505      return parseDeviceUseRequest(xpp);
10506    else if (xpp.getName().equals("DeviceUseStatement"))
10507      return parseDeviceUseStatement(xpp);
10508    else if (xpp.getName().equals("DiagnosticOrder"))
10509      return parseDiagnosticOrder(xpp);
10510    else if (xpp.getName().equals("DiagnosticReport"))
10511      return parseDiagnosticReport(xpp);
10512    else if (xpp.getName().equals("DocumentManifest"))
10513      return parseDocumentManifest(xpp);
10514    else if (xpp.getName().equals("DocumentReference"))
10515      return parseDocumentReference(xpp);
10516    else if (xpp.getName().equals("EligibilityRequest"))
10517      return parseEligibilityRequest(xpp);
10518    else if (xpp.getName().equals("EligibilityResponse"))
10519      return parseEligibilityResponse(xpp);
10520    else if (xpp.getName().equals("Encounter"))
10521      return parseEncounter(xpp);
10522    else if (xpp.getName().equals("EnrollmentRequest"))
10523      return parseEnrollmentRequest(xpp);
10524    else if (xpp.getName().equals("EnrollmentResponse"))
10525      return parseEnrollmentResponse(xpp);
10526    else if (xpp.getName().equals("EpisodeOfCare"))
10527      return parseEpisodeOfCare(xpp);
10528    else if (xpp.getName().equals("ExplanationOfBenefit"))
10529      return parseExplanationOfBenefit(xpp);
10530    else if (xpp.getName().equals("FamilyMemberHistory"))
10531      return parseFamilyMemberHistory(xpp);
10532    else if (xpp.getName().equals("Flag"))
10533      return parseFlag(xpp);
10534    else if (xpp.getName().equals("Goal"))
10535      return parseGoal(xpp);
10536    else if (xpp.getName().equals("Group"))
10537      return parseGroup(xpp);
10538    else if (xpp.getName().equals("HealthcareService"))
10539      return parseHealthcareService(xpp);
10540    else if (xpp.getName().equals("ImagingObjectSelection"))
10541      return parseImagingObjectSelection(xpp);
10542    else if (xpp.getName().equals("ImagingStudy"))
10543      return parseImagingStudy(xpp);
10544    else if (xpp.getName().equals("Immunization"))
10545      return parseImmunization(xpp);
10546    else if (xpp.getName().equals("ImmunizationRecommendation"))
10547      return parseImmunizationRecommendation(xpp);
10548    else if (xpp.getName().equals("ImplementationGuide"))
10549      return parseImplementationGuide(xpp);
10550    else if (xpp.getName().equals("List"))
10551      return parseList_(xpp);
10552    else if (xpp.getName().equals("Location"))
10553      return parseLocation(xpp);
10554    else if (xpp.getName().equals("Media"))
10555      return parseMedia(xpp);
10556    else if (xpp.getName().equals("Medication"))
10557      return parseMedication(xpp);
10558    else if (xpp.getName().equals("MedicationAdministration"))
10559      return parseMedicationAdministration(xpp);
10560    else if (xpp.getName().equals("MedicationDispense"))
10561      return parseMedicationDispense(xpp);
10562    else if (xpp.getName().equals("MedicationOrder"))
10563      return parseMedicationOrder(xpp);
10564    else if (xpp.getName().equals("MedicationStatement"))
10565      return parseMedicationStatement(xpp);
10566    else if (xpp.getName().equals("MessageHeader"))
10567      return parseMessageHeader(xpp);
10568    else if (xpp.getName().equals("NamingSystem"))
10569      return parseNamingSystem(xpp);
10570    else if (xpp.getName().equals("NutritionOrder"))
10571      return parseNutritionOrder(xpp);
10572    else if (xpp.getName().equals("Observation"))
10573      return parseObservation(xpp);
10574    else if (xpp.getName().equals("OperationDefinition"))
10575      return parseOperationDefinition(xpp);
10576    else if (xpp.getName().equals("OperationOutcome"))
10577      return parseOperationOutcome(xpp);
10578    else if (xpp.getName().equals("Order"))
10579      return parseOrder(xpp);
10580    else if (xpp.getName().equals("OrderResponse"))
10581      return parseOrderResponse(xpp);
10582    else if (xpp.getName().equals("Organization"))
10583      return parseOrganization(xpp);
10584    else if (xpp.getName().equals("Patient"))
10585      return parsePatient(xpp);
10586    else if (xpp.getName().equals("PaymentNotice"))
10587      return parsePaymentNotice(xpp);
10588    else if (xpp.getName().equals("PaymentReconciliation"))
10589      return parsePaymentReconciliation(xpp);
10590    else if (xpp.getName().equals("Person"))
10591      return parsePerson(xpp);
10592    else if (xpp.getName().equals("Practitioner"))
10593      return parsePractitioner(xpp);
10594    else if (xpp.getName().equals("Procedure"))
10595      return parseProcedure(xpp);
10596    else if (xpp.getName().equals("ProcedureRequest"))
10597      return parseProcedureRequest(xpp);
10598    else if (xpp.getName().equals("ProcessRequest"))
10599      return parseProcessRequest(xpp);
10600    else if (xpp.getName().equals("ProcessResponse"))
10601      return parseProcessResponse(xpp);
10602    else if (xpp.getName().equals("Provenance"))
10603      return parseProvenance(xpp);
10604    else if (xpp.getName().equals("Questionnaire"))
10605      return parseQuestionnaire(xpp);
10606    else if (xpp.getName().equals("QuestionnaireResponse"))
10607      return parseQuestionnaireResponse(xpp);
10608    else if (xpp.getName().equals("ReferralRequest"))
10609      return parseReferralRequest(xpp);
10610    else if (xpp.getName().equals("RelatedPerson"))
10611      return parseRelatedPerson(xpp);
10612    else if (xpp.getName().equals("RiskAssessment"))
10613      return parseRiskAssessment(xpp);
10614    else if (xpp.getName().equals("Schedule"))
10615      return parseSchedule(xpp);
10616    else if (xpp.getName().equals("SearchParameter"))
10617      return parseSearchParameter(xpp);
10618    else if (xpp.getName().equals("Slot"))
10619      return parseSlot(xpp);
10620    else if (xpp.getName().equals("Specimen"))
10621      return parseSpecimen(xpp);
10622    else if (xpp.getName().equals("StructureDefinition"))
10623      return parseStructureDefinition(xpp);
10624    else if (xpp.getName().equals("Subscription"))
10625      return parseSubscription(xpp);
10626    else if (xpp.getName().equals("Substance"))
10627      return parseSubstance(xpp);
10628    else if (xpp.getName().equals("SupplyDelivery"))
10629      return parseSupplyDelivery(xpp);
10630    else if (xpp.getName().equals("SupplyRequest"))
10631      return parseSupplyRequest(xpp);
10632    else if (xpp.getName().equals("TestScript"))
10633      return parseTestScript(xpp);
10634    else if (xpp.getName().equals("ValueSet"))
10635      return parseValueSet(xpp);
10636    else if (xpp.getName().equals("VisionPrescription"))
10637      return parseVisionPrescription(xpp);
10638    else if (xpp.getName().equals("Binary"))
10639      return parseBinary(xpp);
10640    throw new FHIRFormatError("Unknown resource type " + xpp.getName() + "");
10641  }
10642
10643  protected Type parseType(String prefix, XmlPullParser xpp)
10644      throws XmlPullParserException, IOException, FHIRFormatError {
10645    if (xpp.getName().equals(prefix + "date"))
10646      return parseDate(xpp);
10647    else if (xpp.getName().equals(prefix + "dateTime"))
10648      return parseDateTime(xpp);
10649    else if (xpp.getName().equals(prefix + "code"))
10650      return parseCode(xpp);
10651    else if (xpp.getName().equals(prefix + "string"))
10652      return parseString(xpp);
10653    else if (xpp.getName().equals(prefix + "integer"))
10654      return parseInteger(xpp);
10655    else if (xpp.getName().equals(prefix + "oid"))
10656      return parseOid(xpp);
10657    else if (xpp.getName().equals(prefix + "uri"))
10658      return parseUri(xpp);
10659    else if (xpp.getName().equals(prefix + "uuid"))
10660      return parseUuid(xpp);
10661    else if (xpp.getName().equals(prefix + "instant"))
10662      return parseInstant(xpp);
10663    else if (xpp.getName().equals(prefix + "boolean"))
10664      return parseBoolean(xpp);
10665    else if (xpp.getName().equals(prefix + "base64Binary"))
10666      return parseBase64Binary(xpp);
10667    else if (xpp.getName().equals(prefix + "unsignedInt"))
10668      return parseUnsignedInt(xpp);
10669    else if (xpp.getName().equals(prefix + "markdown"))
10670      return parseMarkdown(xpp);
10671    else if (xpp.getName().equals(prefix + "time"))
10672      return parseTime(xpp);
10673    else if (xpp.getName().equals(prefix + "id"))
10674      return parseId(xpp);
10675    else if (xpp.getName().equals(prefix + "positiveInt"))
10676      return parsePositiveInt(xpp);
10677    else if (xpp.getName().equals(prefix + "decimal"))
10678      return parseDecimal(xpp);
10679    else if (xpp.getName().equals(prefix + "Extension"))
10680      return parseExtension(xpp);
10681    else if (xpp.getName().equals(prefix + "Narrative"))
10682      return parseNarrative(xpp);
10683    else if (xpp.getName().equals(prefix + "Identifier"))
10684      return parseIdentifier(xpp);
10685    else if (xpp.getName().equals(prefix + "Coding"))
10686      return parseCoding(xpp);
10687    else if (xpp.getName().equals(prefix + "Reference"))
10688      return parseReference(xpp);
10689    else if (xpp.getName().equals(prefix + "Signature"))
10690      return parseSignature(xpp);
10691    else if (xpp.getName().equals(prefix + "SampledData"))
10692      return parseSampledData(xpp);
10693    else if (xpp.getName().equals(prefix + "Quantity"))
10694      return parseQuantity(xpp);
10695    else if (xpp.getName().equals(prefix + "Period"))
10696      return parsePeriod(xpp);
10697    else if (xpp.getName().equals(prefix + "Attachment"))
10698      return parseAttachment(xpp);
10699    else if (xpp.getName().equals(prefix + "Ratio"))
10700      return parseRatio(xpp);
10701    else if (xpp.getName().equals(prefix + "Range"))
10702      return parseRange(xpp);
10703    else if (xpp.getName().equals(prefix + "Annotation"))
10704      return parseAnnotation(xpp);
10705    else if (xpp.getName().equals(prefix + "CodeableConcept"))
10706      return parseCodeableConcept(xpp);
10707    else if (xpp.getName().equals(prefix + "Money"))
10708      return parseMoney(xpp);
10709    else if (xpp.getName().equals(prefix + "SimpleQuantity"))
10710      return parseSimpleQuantity(xpp);
10711    else if (xpp.getName().equals(prefix + "Duration"))
10712      return parseDuration(xpp);
10713    else if (xpp.getName().equals(prefix + "Count"))
10714      return parseCount(xpp);
10715    else if (xpp.getName().equals(prefix + "Distance"))
10716      return parseDistance(xpp);
10717    else if (xpp.getName().equals(prefix + "Age"))
10718      return parseAge(xpp);
10719    else if (xpp.getName().equals(prefix + "HumanName"))
10720      return parseHumanName(xpp);
10721    else if (xpp.getName().equals(prefix + "ContactPoint"))
10722      return parseContactPoint(xpp);
10723    else if (xpp.getName().equals(prefix + "Meta"))
10724      return parseMeta(xpp);
10725    else if (xpp.getName().equals(prefix + "Address"))
10726      return parseAddress(xpp);
10727    else if (xpp.getName().equals(prefix + "Timing"))
10728      return parseTiming(xpp);
10729    else if (xpp.getName().equals(prefix + "ElementDefinition"))
10730      return parseElementDefinition(xpp);
10731    else if (xpp.getName().equals(prefix + "Date"))
10732      return parseDate(xpp);
10733    else if (xpp.getName().equals(prefix + "DateTime"))
10734      return parseDateTime(xpp);
10735    else if (xpp.getName().equals(prefix + "Code"))
10736      return parseCode(xpp);
10737    else if (xpp.getName().equals(prefix + "String"))
10738      return parseString(xpp);
10739    else if (xpp.getName().equals(prefix + "Integer"))
10740      return parseInteger(xpp);
10741    else if (xpp.getName().equals(prefix + "Oid"))
10742      return parseOid(xpp);
10743    else if (xpp.getName().equals(prefix + "Uri"))
10744      return parseUri(xpp);
10745    else if (xpp.getName().equals(prefix + "Uuid"))
10746      return parseUuid(xpp);
10747    else if (xpp.getName().equals(prefix + "Instant"))
10748      return parseInstant(xpp);
10749    else if (xpp.getName().equals(prefix + "Boolean"))
10750      return parseBoolean(xpp);
10751    else if (xpp.getName().equals(prefix + "Base64Binary"))
10752      return parseBase64Binary(xpp);
10753    else if (xpp.getName().equals(prefix + "UnsignedInt"))
10754      return parseUnsignedInt(xpp);
10755    else if (xpp.getName().equals(prefix + "Markdown"))
10756      return parseMarkdown(xpp);
10757    else if (xpp.getName().equals(prefix + "Time"))
10758      return parseTime(xpp);
10759    else if (xpp.getName().equals(prefix + "Id"))
10760      return parseId(xpp);
10761    else if (xpp.getName().equals(prefix + "PositiveInt"))
10762      return parsePositiveInt(xpp);
10763    else if (xpp.getName().equals(prefix + "Decimal"))
10764      return parseDecimal(xpp);
10765    throw new FHIRFormatError("Unknown type " + xpp.getName());
10766  }
10767
10768  protected Type parseType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
10769    if (type.equals("date"))
10770      return parseDate(xpp);
10771    else if (type.equals("dateTime"))
10772      return parseDateTime(xpp);
10773    else if (type.equals("code"))
10774      return parseCode(xpp);
10775    else if (type.equals("string"))
10776      return parseString(xpp);
10777    else if (type.equals("integer"))
10778      return parseInteger(xpp);
10779    else if (type.equals("oid"))
10780      return parseOid(xpp);
10781    else if (type.equals("uri"))
10782      return parseUri(xpp);
10783    else if (type.equals("uuid"))
10784      return parseUuid(xpp);
10785    else if (type.equals("instant"))
10786      return parseInstant(xpp);
10787    else if (type.equals("boolean"))
10788      return parseBoolean(xpp);
10789    else if (type.equals("base64Binary"))
10790      return parseBase64Binary(xpp);
10791    else if (type.equals("unsignedInt"))
10792      return parseUnsignedInt(xpp);
10793    else if (type.equals("markdown"))
10794      return parseMarkdown(xpp);
10795    else if (type.equals("time"))
10796      return parseTime(xpp);
10797    else if (type.equals("id"))
10798      return parseId(xpp);
10799    else if (type.equals("positiveInt"))
10800      return parsePositiveInt(xpp);
10801    else if (type.equals("decimal"))
10802      return parseDecimal(xpp);
10803    else if (type.equals("Extension"))
10804      return parseExtension(xpp);
10805    else if (type.equals("Narrative"))
10806      return parseNarrative(xpp);
10807    else if (type.equals("Identifier"))
10808      return parseIdentifier(xpp);
10809    else if (type.equals("Coding"))
10810      return parseCoding(xpp);
10811    else if (type.equals("Reference"))
10812      return parseReference(xpp);
10813    else if (type.equals("Signature"))
10814      return parseSignature(xpp);
10815    else if (type.equals("SampledData"))
10816      return parseSampledData(xpp);
10817    else if (type.equals("Quantity"))
10818      return parseQuantity(xpp);
10819    else if (type.equals("Period"))
10820      return parsePeriod(xpp);
10821    else if (type.equals("Attachment"))
10822      return parseAttachment(xpp);
10823    else if (type.equals("Ratio"))
10824      return parseRatio(xpp);
10825    else if (type.equals("Range"))
10826      return parseRange(xpp);
10827    else if (type.equals("Annotation"))
10828      return parseAnnotation(xpp);
10829    else if (type.equals("CodeableConcept"))
10830      return parseCodeableConcept(xpp);
10831    else if (type.equals("Money"))
10832      return parseMoney(xpp);
10833    else if (type.equals("SimpleQuantity"))
10834      return parseSimpleQuantity(xpp);
10835    else if (type.equals("Duration"))
10836      return parseDuration(xpp);
10837    else if (type.equals("Count"))
10838      return parseCount(xpp);
10839    else if (type.equals("Distance"))
10840      return parseDistance(xpp);
10841    else if (type.equals("Age"))
10842      return parseAge(xpp);
10843    else if (type.equals("HumanName"))
10844      return parseHumanName(xpp);
10845    else if (type.equals("ContactPoint"))
10846      return parseContactPoint(xpp);
10847    else if (type.equals("Meta"))
10848      return parseMeta(xpp);
10849    else if (type.equals("Address"))
10850      return parseAddress(xpp);
10851    else if (type.equals("Timing"))
10852      return parseTiming(xpp);
10853    else if (type.equals("ElementDefinition"))
10854      return parseElementDefinition(xpp);
10855    throw new FHIRFormatError("Unknown type " + type);
10856  }
10857
10858  public Base parseFragment(XmlPullParser xpp, String type)
10859      throws XmlPullParserException, IOException, FHIRFormatError {
10860    if (type.equals("Extension"))
10861      return parseExtension(xpp);
10862    else if (type.equals("Narrative"))
10863      return parseNarrative(xpp);
10864    else if (type.equals("Identifier"))
10865      return parseIdentifier(xpp);
10866    else if (type.equals("Coding"))
10867      return parseCoding(xpp);
10868    else if (type.equals("Reference"))
10869      return parseReference(xpp);
10870    else if (type.equals("Signature"))
10871      return parseSignature(xpp);
10872    else if (type.equals("SampledData"))
10873      return parseSampledData(xpp);
10874    else if (type.equals("Quantity"))
10875      return parseQuantity(xpp);
10876    else if (type.equals("Period"))
10877      return parsePeriod(xpp);
10878    else if (type.equals("Attachment"))
10879      return parseAttachment(xpp);
10880    else if (type.equals("Ratio"))
10881      return parseRatio(xpp);
10882    else if (type.equals("Range"))
10883      return parseRange(xpp);
10884    else if (type.equals("Annotation"))
10885      return parseAnnotation(xpp);
10886    else if (type.equals("CodeableConcept"))
10887      return parseCodeableConcept(xpp);
10888    else if (type.equals("Money"))
10889      return parseMoney(xpp);
10890    else if (type.equals("SimpleQuantity"))
10891      return parseSimpleQuantity(xpp);
10892    else if (type.equals("Duration"))
10893      return parseDuration(xpp);
10894    else if (type.equals("Count"))
10895      return parseCount(xpp);
10896    else if (type.equals("Distance"))
10897      return parseDistance(xpp);
10898    else if (type.equals("Age"))
10899      return parseAge(xpp);
10900    else if (type.equals("HumanName"))
10901      return parseHumanName(xpp);
10902    else if (type.equals("ContactPoint"))
10903      return parseContactPoint(xpp);
10904    else if (type.equals("Meta"))
10905      return parseMeta(xpp);
10906    else if (type.equals("Address"))
10907      return parseAddress(xpp);
10908    else if (type.equals("Timing"))
10909      return parseTiming(xpp);
10910    else if (type.equals("ElementDefinition"))
10911      return parseElementDefinition(xpp);
10912    else if (type.equals("Parameters"))
10913      return parseParameters(xpp);
10914    else if (type.equals("Account"))
10915      return parseAccount(xpp);
10916    else if (type.equals("AllergyIntolerance"))
10917      return parseAllergyIntolerance(xpp);
10918    else if (type.equals("Appointment"))
10919      return parseAppointment(xpp);
10920    else if (type.equals("AppointmentResponse"))
10921      return parseAppointmentResponse(xpp);
10922    else if (type.equals("AuditEvent"))
10923      return parseAuditEvent(xpp);
10924    else if (type.equals("Basic"))
10925      return parseBasic(xpp);
10926    else if (type.equals("Binary"))
10927      return parseBinary(xpp);
10928    else if (type.equals("BodySite"))
10929      return parseBodySite(xpp);
10930    else if (type.equals("Bundle"))
10931      return parseBundle(xpp);
10932    else if (type.equals("CarePlan"))
10933      return parseCarePlan(xpp);
10934    else if (type.equals("Claim"))
10935      return parseClaim(xpp);
10936    else if (type.equals("ClaimResponse"))
10937      return parseClaimResponse(xpp);
10938    else if (type.equals("ClinicalImpression"))
10939      return parseClinicalImpression(xpp);
10940    else if (type.equals("Communication"))
10941      return parseCommunication(xpp);
10942    else if (type.equals("CommunicationRequest"))
10943      return parseCommunicationRequest(xpp);
10944    else if (type.equals("Composition"))
10945      return parseComposition(xpp);
10946    else if (type.equals("ConceptMap"))
10947      return parseConceptMap(xpp);
10948    else if (type.equals("Condition"))
10949      return parseCondition(xpp);
10950    else if (type.equals("Conformance"))
10951      return parseConformance(xpp);
10952    else if (type.equals("Contract"))
10953      return parseContract(xpp);
10954    else if (type.equals("Coverage"))
10955      return parseCoverage(xpp);
10956    else if (type.equals("DataElement"))
10957      return parseDataElement(xpp);
10958    else if (type.equals("DetectedIssue"))
10959      return parseDetectedIssue(xpp);
10960    else if (type.equals("Device"))
10961      return parseDevice(xpp);
10962    else if (type.equals("DeviceComponent"))
10963      return parseDeviceComponent(xpp);
10964    else if (type.equals("DeviceMetric"))
10965      return parseDeviceMetric(xpp);
10966    else if (type.equals("DeviceUseRequest"))
10967      return parseDeviceUseRequest(xpp);
10968    else if (type.equals("DeviceUseStatement"))
10969      return parseDeviceUseStatement(xpp);
10970    else if (type.equals("DiagnosticOrder"))
10971      return parseDiagnosticOrder(xpp);
10972    else if (type.equals("DiagnosticReport"))
10973      return parseDiagnosticReport(xpp);
10974    else if (type.equals("DocumentManifest"))
10975      return parseDocumentManifest(xpp);
10976    else if (type.equals("DocumentReference"))
10977      return parseDocumentReference(xpp);
10978    else if (type.equals("EligibilityRequest"))
10979      return parseEligibilityRequest(xpp);
10980    else if (type.equals("EligibilityResponse"))
10981      return parseEligibilityResponse(xpp);
10982    else if (type.equals("Encounter"))
10983      return parseEncounter(xpp);
10984    else if (type.equals("EnrollmentRequest"))
10985      return parseEnrollmentRequest(xpp);
10986    else if (type.equals("EnrollmentResponse"))
10987      return parseEnrollmentResponse(xpp);
10988    else if (type.equals("EpisodeOfCare"))
10989      return parseEpisodeOfCare(xpp);
10990    else if (type.equals("ExplanationOfBenefit"))
10991      return parseExplanationOfBenefit(xpp);
10992    else if (type.equals("FamilyMemberHistory"))
10993      return parseFamilyMemberHistory(xpp);
10994    else if (type.equals("Flag"))
10995      return parseFlag(xpp);
10996    else if (type.equals("Goal"))
10997      return parseGoal(xpp);
10998    else if (type.equals("Group"))
10999      return parseGroup(xpp);
11000    else if (type.equals("HealthcareService"))
11001      return parseHealthcareService(xpp);
11002    else if (type.equals("ImagingObjectSelection"))
11003      return parseImagingObjectSelection(xpp);
11004    else if (type.equals("ImagingStudy"))
11005      return parseImagingStudy(xpp);
11006    else if (type.equals("Immunization"))
11007      return parseImmunization(xpp);
11008    else if (type.equals("ImmunizationRecommendation"))
11009      return parseImmunizationRecommendation(xpp);
11010    else if (type.equals("ImplementationGuide"))
11011      return parseImplementationGuide(xpp);
11012    else if (type.equals("List"))
11013      return parseList_(xpp);
11014    else if (type.equals("Location"))
11015      return parseLocation(xpp);
11016    else if (type.equals("Media"))
11017      return parseMedia(xpp);
11018    else if (type.equals("Medication"))
11019      return parseMedication(xpp);
11020    else if (type.equals("MedicationAdministration"))
11021      return parseMedicationAdministration(xpp);
11022    else if (type.equals("MedicationDispense"))
11023      return parseMedicationDispense(xpp);
11024    else if (type.equals("MedicationOrder"))
11025      return parseMedicationOrder(xpp);
11026    else if (type.equals("MedicationStatement"))
11027      return parseMedicationStatement(xpp);
11028    else if (type.equals("MessageHeader"))
11029      return parseMessageHeader(xpp);
11030    else if (type.equals("NamingSystem"))
11031      return parseNamingSystem(xpp);
11032    else if (type.equals("NutritionOrder"))
11033      return parseNutritionOrder(xpp);
11034    else if (type.equals("Observation"))
11035      return parseObservation(xpp);
11036    else if (type.equals("OperationDefinition"))
11037      return parseOperationDefinition(xpp);
11038    else if (type.equals("OperationOutcome"))
11039      return parseOperationOutcome(xpp);
11040    else if (type.equals("Order"))
11041      return parseOrder(xpp);
11042    else if (type.equals("OrderResponse"))
11043      return parseOrderResponse(xpp);
11044    else if (type.equals("Organization"))
11045      return parseOrganization(xpp);
11046    else if (type.equals("Patient"))
11047      return parsePatient(xpp);
11048    else if (type.equals("PaymentNotice"))
11049      return parsePaymentNotice(xpp);
11050    else if (type.equals("PaymentReconciliation"))
11051      return parsePaymentReconciliation(xpp);
11052    else if (type.equals("Person"))
11053      return parsePerson(xpp);
11054    else if (type.equals("Practitioner"))
11055      return parsePractitioner(xpp);
11056    else if (type.equals("Procedure"))
11057      return parseProcedure(xpp);
11058    else if (type.equals("ProcedureRequest"))
11059      return parseProcedureRequest(xpp);
11060    else if (type.equals("ProcessRequest"))
11061      return parseProcessRequest(xpp);
11062    else if (type.equals("ProcessResponse"))
11063      return parseProcessResponse(xpp);
11064    else if (type.equals("Provenance"))
11065      return parseProvenance(xpp);
11066    else if (type.equals("Questionnaire"))
11067      return parseQuestionnaire(xpp);
11068    else if (type.equals("QuestionnaireResponse"))
11069      return parseQuestionnaireResponse(xpp);
11070    else if (type.equals("ReferralRequest"))
11071      return parseReferralRequest(xpp);
11072    else if (type.equals("RelatedPerson"))
11073      return parseRelatedPerson(xpp);
11074    else if (type.equals("RiskAssessment"))
11075      return parseRiskAssessment(xpp);
11076    else if (type.equals("Schedule"))
11077      return parseSchedule(xpp);
11078    else if (type.equals("SearchParameter"))
11079      return parseSearchParameter(xpp);
11080    else if (type.equals("Slot"))
11081      return parseSlot(xpp);
11082    else if (type.equals("Specimen"))
11083      return parseSpecimen(xpp);
11084    else if (type.equals("StructureDefinition"))
11085      return parseStructureDefinition(xpp);
11086    else if (type.equals("Subscription"))
11087      return parseSubscription(xpp);
11088    else if (type.equals("Substance"))
11089      return parseSubstance(xpp);
11090    else if (type.equals("SupplyDelivery"))
11091      return parseSupplyDelivery(xpp);
11092    else if (type.equals("SupplyRequest"))
11093      return parseSupplyRequest(xpp);
11094    else if (type.equals("TestScript"))
11095      return parseTestScript(xpp);
11096    else if (type.equals("ValueSet"))
11097      return parseValueSet(xpp);
11098    else if (type.equals("VisionPrescription"))
11099      return parseVisionPrescription(xpp);
11100    else if (type.equals("date"))
11101      return parseDate(xpp);
11102    else if (type.equals("dateTime"))
11103      return parseDateTime(xpp);
11104    else if (type.equals("code"))
11105      return parseCode(xpp);
11106    else if (type.equals("string"))
11107      return parseString(xpp);
11108    else if (type.equals("integer"))
11109      return parseInteger(xpp);
11110    else if (type.equals("oid"))
11111      return parseOid(xpp);
11112    else if (type.equals("uri"))
11113      return parseUri(xpp);
11114    else if (type.equals("uuid"))
11115      return parseUuid(xpp);
11116    else if (type.equals("instant"))
11117      return parseInstant(xpp);
11118    else if (type.equals("boolean"))
11119      return parseBoolean(xpp);
11120    else if (type.equals("base64Binary"))
11121      return parseBase64Binary(xpp);
11122    else if (type.equals("unsignedInt"))
11123      return parseUnsignedInt(xpp);
11124    else if (type.equals("markdown"))
11125      return parseMarkdown(xpp);
11126    else if (type.equals("time"))
11127      return parseTime(xpp);
11128    else if (type.equals("id"))
11129      return parseId(xpp);
11130    else if (type.equals("positiveInt"))
11131      return parsePositiveInt(xpp);
11132    else if (type.equals("decimal"))
11133      return parseDecimal(xpp);
11134    throw new FHIRFormatError("Unknown type " + type);
11135  }
11136
11137  private boolean nameIsTypeName(XmlPullParser xpp, String prefix) {
11138    if (xpp.getName().equals(prefix + "Identifier"))
11139      return true;
11140    if (xpp.getName().equals(prefix + "Coding"))
11141      return true;
11142    if (xpp.getName().equals(prefix + "Reference"))
11143      return true;
11144    if (xpp.getName().equals(prefix + "Signature"))
11145      return true;
11146    if (xpp.getName().equals(prefix + "SampledData"))
11147      return true;
11148    if (xpp.getName().equals(prefix + "Quantity"))
11149      return true;
11150    if (xpp.getName().equals(prefix + "Period"))
11151      return true;
11152    if (xpp.getName().equals(prefix + "Attachment"))
11153      return true;
11154    if (xpp.getName().equals(prefix + "Ratio"))
11155      return true;
11156    if (xpp.getName().equals(prefix + "Range"))
11157      return true;
11158    if (xpp.getName().equals(prefix + "Annotation"))
11159      return true;
11160    if (xpp.getName().equals(prefix + "CodeableConcept"))
11161      return true;
11162    if (xpp.getName().equals(prefix + "Money"))
11163      return true;
11164    if (xpp.getName().equals(prefix + "SimpleQuantity"))
11165      return true;
11166    if (xpp.getName().equals(prefix + "Duration"))
11167      return true;
11168    if (xpp.getName().equals(prefix + "Count"))
11169      return true;
11170    if (xpp.getName().equals(prefix + "Distance"))
11171      return true;
11172    if (xpp.getName().equals(prefix + "Age"))
11173      return true;
11174    if (xpp.getName().equals(prefix + "HumanName"))
11175      return true;
11176    if (xpp.getName().equals(prefix + "ContactPoint"))
11177      return true;
11178    if (xpp.getName().equals(prefix + "Meta"))
11179      return true;
11180    if (xpp.getName().equals(prefix + "Address"))
11181      return true;
11182    if (xpp.getName().equals(prefix + "Timing"))
11183      return true;
11184    if (xpp.getName().equals(prefix + "ElementDefinition"))
11185      return true;
11186    if (xpp.getName().equals(prefix + "Parameters"))
11187      return true;
11188    if (xpp.getName().equals(prefix + "Account"))
11189      return true;
11190    if (xpp.getName().equals(prefix + "AllergyIntolerance"))
11191      return true;
11192    if (xpp.getName().equals(prefix + "Appointment"))
11193      return true;
11194    if (xpp.getName().equals(prefix + "AppointmentResponse"))
11195      return true;
11196    if (xpp.getName().equals(prefix + "AuditEvent"))
11197      return true;
11198    if (xpp.getName().equals(prefix + "Basic"))
11199      return true;
11200    if (xpp.getName().equals(prefix + "Binary"))
11201      return true;
11202    if (xpp.getName().equals(prefix + "BodySite"))
11203      return true;
11204    if (xpp.getName().equals(prefix + "Bundle"))
11205      return true;
11206    if (xpp.getName().equals(prefix + "CarePlan"))
11207      return true;
11208    if (xpp.getName().equals(prefix + "Claim"))
11209      return true;
11210    if (xpp.getName().equals(prefix + "ClaimResponse"))
11211      return true;
11212    if (xpp.getName().equals(prefix + "ClinicalImpression"))
11213      return true;
11214    if (xpp.getName().equals(prefix + "Communication"))
11215      return true;
11216    if (xpp.getName().equals(prefix + "CommunicationRequest"))
11217      return true;
11218    if (xpp.getName().equals(prefix + "Composition"))
11219      return true;
11220    if (xpp.getName().equals(prefix + "ConceptMap"))
11221      return true;
11222    if (xpp.getName().equals(prefix + "Condition"))
11223      return true;
11224    if (xpp.getName().equals(prefix + "Conformance"))
11225      return true;
11226    if (xpp.getName().equals(prefix + "Contract"))
11227      return true;
11228    if (xpp.getName().equals(prefix + "Coverage"))
11229      return true;
11230    if (xpp.getName().equals(prefix + "DataElement"))
11231      return true;
11232    if (xpp.getName().equals(prefix + "DetectedIssue"))
11233      return true;
11234    if (xpp.getName().equals(prefix + "Device"))
11235      return true;
11236    if (xpp.getName().equals(prefix + "DeviceComponent"))
11237      return true;
11238    if (xpp.getName().equals(prefix + "DeviceMetric"))
11239      return true;
11240    if (xpp.getName().equals(prefix + "DeviceUseRequest"))
11241      return true;
11242    if (xpp.getName().equals(prefix + "DeviceUseStatement"))
11243      return true;
11244    if (xpp.getName().equals(prefix + "DiagnosticOrder"))
11245      return true;
11246    if (xpp.getName().equals(prefix + "DiagnosticReport"))
11247      return true;
11248    if (xpp.getName().equals(prefix + "DocumentManifest"))
11249      return true;
11250    if (xpp.getName().equals(prefix + "DocumentReference"))
11251      return true;
11252    if (xpp.getName().equals(prefix + "EligibilityRequest"))
11253      return true;
11254    if (xpp.getName().equals(prefix + "EligibilityResponse"))
11255      return true;
11256    if (xpp.getName().equals(prefix + "Encounter"))
11257      return true;
11258    if (xpp.getName().equals(prefix + "EnrollmentRequest"))
11259      return true;
11260    if (xpp.getName().equals(prefix + "EnrollmentResponse"))
11261      return true;
11262    if (xpp.getName().equals(prefix + "EpisodeOfCare"))
11263      return true;
11264    if (xpp.getName().equals(prefix + "ExplanationOfBenefit"))
11265      return true;
11266    if (xpp.getName().equals(prefix + "FamilyMemberHistory"))
11267      return true;
11268    if (xpp.getName().equals(prefix + "Flag"))
11269      return true;
11270    if (xpp.getName().equals(prefix + "Goal"))
11271      return true;
11272    if (xpp.getName().equals(prefix + "Group"))
11273      return true;
11274    if (xpp.getName().equals(prefix + "HealthcareService"))
11275      return true;
11276    if (xpp.getName().equals(prefix + "ImagingObjectSelection"))
11277      return true;
11278    if (xpp.getName().equals(prefix + "ImagingStudy"))
11279      return true;
11280    if (xpp.getName().equals(prefix + "Immunization"))
11281      return true;
11282    if (xpp.getName().equals(prefix + "ImmunizationRecommendation"))
11283      return true;
11284    if (xpp.getName().equals(prefix + "ImplementationGuide"))
11285      return true;
11286    if (xpp.getName().equals(prefix + "List"))
11287      return true;
11288    if (xpp.getName().equals(prefix + "Location"))
11289      return true;
11290    if (xpp.getName().equals(prefix + "Media"))
11291      return true;
11292    if (xpp.getName().equals(prefix + "Medication"))
11293      return true;
11294    if (xpp.getName().equals(prefix + "MedicationAdministration"))
11295      return true;
11296    if (xpp.getName().equals(prefix + "MedicationDispense"))
11297      return true;
11298    if (xpp.getName().equals(prefix + "MedicationOrder"))
11299      return true;
11300    if (xpp.getName().equals(prefix + "MedicationStatement"))
11301      return true;
11302    if (xpp.getName().equals(prefix + "MessageHeader"))
11303      return true;
11304    if (xpp.getName().equals(prefix + "NamingSystem"))
11305      return true;
11306    if (xpp.getName().equals(prefix + "NutritionOrder"))
11307      return true;
11308    if (xpp.getName().equals(prefix + "Observation"))
11309      return true;
11310    if (xpp.getName().equals(prefix + "OperationDefinition"))
11311      return true;
11312    if (xpp.getName().equals(prefix + "OperationOutcome"))
11313      return true;
11314    if (xpp.getName().equals(prefix + "Order"))
11315      return true;
11316    if (xpp.getName().equals(prefix + "OrderResponse"))
11317      return true;
11318    if (xpp.getName().equals(prefix + "Organization"))
11319      return true;
11320    if (xpp.getName().equals(prefix + "Patient"))
11321      return true;
11322    if (xpp.getName().equals(prefix + "PaymentNotice"))
11323      return true;
11324    if (xpp.getName().equals(prefix + "PaymentReconciliation"))
11325      return true;
11326    if (xpp.getName().equals(prefix + "Person"))
11327      return true;
11328    if (xpp.getName().equals(prefix + "Practitioner"))
11329      return true;
11330    if (xpp.getName().equals(prefix + "Procedure"))
11331      return true;
11332    if (xpp.getName().equals(prefix + "ProcedureRequest"))
11333      return true;
11334    if (xpp.getName().equals(prefix + "ProcessRequest"))
11335      return true;
11336    if (xpp.getName().equals(prefix + "ProcessResponse"))
11337      return true;
11338    if (xpp.getName().equals(prefix + "Provenance"))
11339      return true;
11340    if (xpp.getName().equals(prefix + "Questionnaire"))
11341      return true;
11342    if (xpp.getName().equals(prefix + "QuestionnaireResponse"))
11343      return true;
11344    if (xpp.getName().equals(prefix + "ReferralRequest"))
11345      return true;
11346    if (xpp.getName().equals(prefix + "RelatedPerson"))
11347      return true;
11348    if (xpp.getName().equals(prefix + "RiskAssessment"))
11349      return true;
11350    if (xpp.getName().equals(prefix + "Schedule"))
11351      return true;
11352    if (xpp.getName().equals(prefix + "SearchParameter"))
11353      return true;
11354    if (xpp.getName().equals(prefix + "Slot"))
11355      return true;
11356    if (xpp.getName().equals(prefix + "Specimen"))
11357      return true;
11358    if (xpp.getName().equals(prefix + "StructureDefinition"))
11359      return true;
11360    if (xpp.getName().equals(prefix + "Subscription"))
11361      return true;
11362    if (xpp.getName().equals(prefix + "Substance"))
11363      return true;
11364    if (xpp.getName().equals(prefix + "SupplyDelivery"))
11365      return true;
11366    if (xpp.getName().equals(prefix + "SupplyRequest"))
11367      return true;
11368    if (xpp.getName().equals(prefix + "TestScript"))
11369      return true;
11370    if (xpp.getName().equals(prefix + "ValueSet"))
11371      return true;
11372    if (xpp.getName().equals(prefix + "VisionPrescription"))
11373      return true;
11374    if (xpp.getName().equals(prefix + "Date"))
11375      return true;
11376    if (xpp.getName().equals(prefix + "DateTime"))
11377      return true;
11378    if (xpp.getName().equals(prefix + "Code"))
11379      return true;
11380    if (xpp.getName().equals(prefix + "String"))
11381      return true;
11382    if (xpp.getName().equals(prefix + "Integer"))
11383      return true;
11384    if (xpp.getName().equals(prefix + "Oid"))
11385      return true;
11386    if (xpp.getName().equals(prefix + "Uri"))
11387      return true;
11388    if (xpp.getName().equals(prefix + "Uuid"))
11389      return true;
11390    if (xpp.getName().equals(prefix + "Instant"))
11391      return true;
11392    if (xpp.getName().equals(prefix + "Boolean"))
11393      return true;
11394    if (xpp.getName().equals(prefix + "Base64Binary"))
11395      return true;
11396    if (xpp.getName().equals(prefix + "UnsignedInt"))
11397      return true;
11398    if (xpp.getName().equals(prefix + "Markdown"))
11399      return true;
11400    if (xpp.getName().equals(prefix + "Time"))
11401      return true;
11402    if (xpp.getName().equals(prefix + "Id"))
11403      return true;
11404    if (xpp.getName().equals(prefix + "PositiveInt"))
11405      return true;
11406    if (xpp.getName().equals(prefix + "Decimal"))
11407      return true;
11408    return false;
11409  }
11410
11411  protected void composeElementElements(Element element) throws IOException {
11412    for (Extension e : element.getExtension()) {
11413      composeExtension("extension", e);
11414    }
11415  }
11416
11417  protected void composeBackboneElements(BackboneElement element) throws IOException {
11418    composeElementElements(element);
11419    for (Extension e : element.getModifierExtension()) {
11420      composeExtension("modifierExtension", e);
11421    }
11422  }
11423
11424  protected <E extends Enum<E>> void composeEnumeration(String name, Enumeration<E> value, EnumFactory e)
11425      throws IOException {
11426    if (value != null
11427        && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {
11428      composeElementAttributes(value);
11429      if (value.getValue() != null)
11430        xml.attribute("value", e.toCode(value.getValue()));
11431
11432      xml.enter(FHIR_NS, name);
11433      composeElementElements(value);
11434      composeElementClose(value);
11435      xml.exit(FHIR_NS, name);
11436    }
11437  }
11438
11439  protected void composeDate(String name, DateType value) throws IOException {
11440    if (value != null
11441        && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// date
11442      composeElementAttributes(value);
11443      if (value.asStringValue() != null)
11444        xml.attribute("value", value.asStringValue());
11445
11446      xml.enter(FHIR_NS, name);
11447      composeElementElements(value);
11448      composeElementClose(value);
11449      xml.exit(FHIR_NS, name);
11450    }
11451  }
11452
11453  protected void composeDateTime(String name, DateTimeType value) throws IOException {
11454    if (value != null
11455        && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// dateTime
11456      composeElementAttributes(value);
11457      if (value.asStringValue() != null)
11458        xml.attribute("value", value.asStringValue());
11459
11460      xml.enter(FHIR_NS, name);
11461      composeElementElements(value);
11462      composeElementClose(value);
11463      xml.exit(FHIR_NS, name);
11464    }
11465  }
11466
11467  protected void composeCode(String name, CodeType value) throws IOException {
11468    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value)
11469        || !Utilities.noString(value.getValue()))) {// code
11470      composeElementAttributes(value);
11471      if (value.asStringValue() != null)
11472        xml.attribute("value", value.asStringValue());
11473
11474      xml.enter(FHIR_NS, name);
11475      composeElementElements(value);
11476      composeElementClose(value);
11477      xml.exit(FHIR_NS, name);
11478    }
11479  }
11480
11481  protected void composeString(String name, StringType value) throws IOException {
11482    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value)
11483        || !Utilities.noString(value.getValue()))) {// string
11484      composeElementAttributes(value);
11485      if (value.asStringValue() != null)
11486        xml.attribute("value", value.asStringValue());
11487
11488      xml.enter(FHIR_NS, name);
11489      composeElementElements(value);
11490      composeElementClose(value);
11491      xml.exit(FHIR_NS, name);
11492    }
11493  }
11494
11495  protected void composeInteger(String name, IntegerType value) throws IOException {
11496    if (value != null) { // integer
11497      composeElementAttributes(value);
11498      if (value.asStringValue() != null)
11499        xml.attribute("value", value.asStringValue());
11500
11501      xml.enter(FHIR_NS, name);
11502      composeElementElements(value);
11503      composeElementClose(value);
11504      xml.exit(FHIR_NS, name);
11505    }
11506  }
11507
11508  protected void composeOid(String name, OidType value) throws IOException {
11509    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value)
11510        || !Utilities.noString(value.getValue()))) {// oid
11511      composeElementAttributes(value);
11512      if (value.asStringValue() != null)
11513        xml.attribute("value", value.asStringValue());
11514
11515      xml.enter(FHIR_NS, name);
11516      composeElementElements(value);
11517      composeElementClose(value);
11518      xml.exit(FHIR_NS, name);
11519    }
11520  }
11521
11522  protected void composeUri(String name, UriType value) throws IOException {
11523    if (value != null
11524        && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// uri
11525      composeElementAttributes(value);
11526      if (value.asStringValue() != null)
11527        xml.attribute("value", value.asStringValue());
11528
11529      xml.enter(FHIR_NS, name);
11530      composeElementElements(value);
11531      composeElementClose(value);
11532      xml.exit(FHIR_NS, name);
11533    }
11534  }
11535
11536  protected void composeUuid(String name, UuidType value) throws IOException {
11537    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value)
11538        || !Utilities.noString(value.getValue()))) {// uuid
11539      composeElementAttributes(value);
11540      if (value.asStringValue() != null)
11541        xml.attribute("value", value.asStringValue());
11542
11543      xml.enter(FHIR_NS, name);
11544      composeElementElements(value);
11545      composeElementClose(value);
11546      xml.exit(FHIR_NS, name);
11547    }
11548  }
11549
11550  protected void composeInstant(String name, InstantType value) throws IOException {
11551    if (value != null
11552        && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// instant
11553      composeElementAttributes(value);
11554      if (value.asStringValue() != null)
11555        xml.attribute("value", value.asStringValue());
11556
11557      xml.enter(FHIR_NS, name);
11558      composeElementElements(value);
11559      composeElementClose(value);
11560      xml.exit(FHIR_NS, name);
11561    }
11562  }
11563
11564  protected void composeBoolean(String name, BooleanType value) throws IOException {
11565    if (value != null) { // boolean
11566      composeElementAttributes(value);
11567      if (value.asStringValue() != null)
11568        xml.attribute("value", value.asStringValue());
11569
11570      xml.enter(FHIR_NS, name);
11571      composeElementElements(value);
11572      composeElementClose(value);
11573      xml.exit(FHIR_NS, name);
11574    }
11575  }
11576
11577  protected void composeBase64Binary(String name, Base64BinaryType value) throws IOException {
11578    if (value != null
11579        && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// base64Binary
11580      composeElementAttributes(value);
11581      if (value.asStringValue() != null)
11582        xml.attribute("value", value.asStringValue());
11583
11584      xml.enter(FHIR_NS, name);
11585      composeElementElements(value);
11586      composeElementClose(value);
11587      xml.exit(FHIR_NS, name);
11588    }
11589  }
11590
11591  protected void composeUnsignedInt(String name, UnsignedIntType value) throws IOException {
11592    if (value != null) { // unsignedInt
11593      composeElementAttributes(value);
11594      if (value.asStringValue() != null)
11595        xml.attribute("value", value.asStringValue());
11596
11597      xml.enter(FHIR_NS, name);
11598      composeElementElements(value);
11599      composeElementClose(value);
11600      xml.exit(FHIR_NS, name);
11601    }
11602  }
11603
11604  protected void composeMarkdown(String name, MarkdownType value) throws IOException {
11605    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value)
11606        || !Utilities.noString(value.getValue()))) {// markdown
11607      composeElementAttributes(value);
11608      if (value.asStringValue() != null)
11609        xml.attribute("value", value.asStringValue());
11610
11611      xml.enter(FHIR_NS, name);
11612      composeElementElements(value);
11613      composeElementClose(value);
11614      xml.exit(FHIR_NS, name);
11615    }
11616  }
11617
11618  protected void composeTime(String name, TimeType value) throws IOException {
11619    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value)
11620        || !Utilities.noString(value.getValue()))) {// time
11621      composeElementAttributes(value);
11622      if (value.asStringValue() != null)
11623        xml.attribute("value", value.asStringValue());
11624
11625      xml.enter(FHIR_NS, name);
11626      composeElementElements(value);
11627      composeElementClose(value);
11628      xml.exit(FHIR_NS, name);
11629    }
11630  }
11631
11632  protected void composeId(String name, IdType value) throws IOException {
11633    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value)
11634        || !Utilities.noString(value.getValue()))) {// id
11635      composeElementAttributes(value);
11636      if (value.asStringValue() != null)
11637        xml.attribute("value", value.asStringValue());
11638
11639      xml.enter(FHIR_NS, name);
11640      composeElementElements(value);
11641      composeElementClose(value);
11642      xml.exit(FHIR_NS, name);
11643    }
11644  }
11645
11646  protected void composePositiveInt(String name, PositiveIntType value) throws IOException {
11647    if (value != null) { // positiveInt
11648      composeElementAttributes(value);
11649      if (value.asStringValue() != null)
11650        xml.attribute("value", value.asStringValue());
11651
11652      xml.enter(FHIR_NS, name);
11653      composeElementElements(value);
11654      composeElementClose(value);
11655      xml.exit(FHIR_NS, name);
11656    }
11657  }
11658
11659  protected void composeDecimal(String name, DecimalType value) throws IOException {
11660    if (value != null
11661        && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// decimal
11662      composeElementAttributes(value);
11663      if (value.asStringValue() != null)
11664        xml.attribute("value", value.asStringValue());
11665
11666      xml.enter(FHIR_NS, name);
11667      composeElementElements(value);
11668      composeElementClose(value);
11669      xml.exit(FHIR_NS, name);
11670    }
11671  }
11672
11673  protected void composeExtension(String name, Extension element) throws IOException {
11674    if (element != null) {
11675      composeElementAttributes(element);
11676      if (element.hasUrlElement())
11677        xml.attribute("url", element.getUrlElement().getValue());
11678      xml.enter(FHIR_NS, name);
11679      composeElementElements(element);
11680      if (element.hasValue()) {
11681        composeType("value", element.getValue());
11682      }
11683      composeElementClose(element);
11684      xml.exit(FHIR_NS, name);
11685    }
11686  }
11687
11688  protected void composeNarrative(String name, Narrative element) throws IOException {
11689    if (element != null) {
11690      composeElementAttributes(element);
11691      xml.enter(FHIR_NS, name);
11692      composeElementElements(element);
11693      if (element.hasStatusElement())
11694        composeEnumeration("status", element.getStatusElement(), new Narrative.NarrativeStatusEnumFactory());
11695      if (element.hasDiv()) {
11696        composeXhtml("div", element.getDiv());
11697      }
11698      composeElementClose(element);
11699      xml.exit(FHIR_NS, name);
11700    }
11701  }
11702
11703  protected void composeIdentifier(String name, Identifier element) throws IOException {
11704    if (element != null) {
11705      composeTypeAttributes(element);
11706      xml.enter(FHIR_NS, name);
11707      composeElementElements(element);
11708      if (element.hasUseElement())
11709        composeEnumeration("use", element.getUseElement(), new Identifier.IdentifierUseEnumFactory());
11710      if (element.hasType()) {
11711        composeCodeableConcept("type", element.getType());
11712      }
11713      if (element.hasSystemElement()) {
11714        composeUri("system", element.getSystemElement());
11715      }
11716      if (element.hasValueElement()) {
11717        composeString("value", element.getValueElement());
11718      }
11719      if (element.hasPeriod()) {
11720        composePeriod("period", element.getPeriod());
11721      }
11722      if (element.hasAssigner()) {
11723        composeReference("assigner", element.getAssigner());
11724      }
11725      composeElementClose(element);
11726      xml.exit(FHIR_NS, name);
11727    }
11728  }
11729
11730  protected void composeCoding(String name, Coding element) throws IOException {
11731    if (element != null) {
11732      composeTypeAttributes(element);
11733      xml.enter(FHIR_NS, name);
11734      composeElementElements(element);
11735      if (element.hasSystemElement()) {
11736        composeUri("system", element.getSystemElement());
11737      }
11738      if (element.hasVersionElement()) {
11739        composeString("version", element.getVersionElement());
11740      }
11741      if (element.hasCodeElement()) {
11742        composeCode("code", element.getCodeElement());
11743      }
11744      if (element.hasDisplayElement()) {
11745        composeString("display", element.getDisplayElement());
11746      }
11747      if (element.hasUserSelectedElement()) {
11748        composeBoolean("userSelected", element.getUserSelectedElement());
11749      }
11750      composeElementClose(element);
11751      xml.exit(FHIR_NS, name);
11752    }
11753  }
11754
11755  protected void composeReference(String name, Reference element) throws IOException {
11756    if (element != null) {
11757      composeTypeAttributes(element);
11758      xml.enter(FHIR_NS, name);
11759      composeElementElements(element);
11760      if (element.hasReferenceElement()) {
11761        composeString("reference", element.getReferenceElement());
11762      }
11763      if (element.hasDisplayElement()) {
11764        composeString("display", element.getDisplayElement());
11765      }
11766      composeElementClose(element);
11767      xml.exit(FHIR_NS, name);
11768    }
11769  }
11770
11771  protected void composeSignature(String name, Signature element) throws IOException {
11772    if (element != null) {
11773      composeTypeAttributes(element);
11774      xml.enter(FHIR_NS, name);
11775      composeElementElements(element);
11776      if (element.hasType()) {
11777        for (Coding e : element.getType())
11778          composeCoding("type", e);
11779      }
11780      if (element.hasWhenElement()) {
11781        composeInstant("when", element.getWhenElement());
11782      }
11783      if (element.hasWho()) {
11784        composeType("who", element.getWho());
11785      }
11786      if (element.hasContentTypeElement()) {
11787        composeCode("contentType", element.getContentTypeElement());
11788      }
11789      if (element.hasBlobElement()) {
11790        composeBase64Binary("blob", element.getBlobElement());
11791      }
11792      composeElementClose(element);
11793      xml.exit(FHIR_NS, name);
11794    }
11795  }
11796
11797  protected void composeSampledData(String name, SampledData element) throws IOException {
11798    if (element != null) {
11799      composeTypeAttributes(element);
11800      xml.enter(FHIR_NS, name);
11801      composeElementElements(element);
11802      if (element.hasOrigin()) {
11803        composeSimpleQuantity("origin", element.getOrigin());
11804      }
11805      if (element.hasPeriodElement()) {
11806        composeDecimal("period", element.getPeriodElement());
11807      }
11808      if (element.hasFactorElement()) {
11809        composeDecimal("factor", element.getFactorElement());
11810      }
11811      if (element.hasLowerLimitElement()) {
11812        composeDecimal("lowerLimit", element.getLowerLimitElement());
11813      }
11814      if (element.hasUpperLimitElement()) {
11815        composeDecimal("upperLimit", element.getUpperLimitElement());
11816      }
11817      if (element.hasDimensionsElement()) {
11818        composePositiveInt("dimensions", element.getDimensionsElement());
11819      }
11820      if (element.hasDataElement()) {
11821        composeString("data", element.getDataElement());
11822      }
11823      composeElementClose(element);
11824      xml.exit(FHIR_NS, name);
11825    }
11826  }
11827
11828  protected void composeQuantity(String name, Quantity element) throws IOException {
11829    if (element != null) {
11830      composeTypeAttributes(element);
11831      xml.enter(FHIR_NS, name);
11832      composeElementElements(element);
11833      if (element.hasValueElement()) {
11834        composeDecimal("value", element.getValueElement());
11835      }
11836      if (element.hasComparatorElement())
11837        composeEnumeration("comparator", element.getComparatorElement(), new Quantity.QuantityComparatorEnumFactory());
11838      if (element.hasUnitElement()) {
11839        composeString("unit", element.getUnitElement());
11840      }
11841      if (element.hasSystemElement()) {
11842        composeUri("system", element.getSystemElement());
11843      }
11844      if (element.hasCodeElement()) {
11845        composeCode("code", element.getCodeElement());
11846      }
11847      composeElementClose(element);
11848      xml.exit(FHIR_NS, name);
11849    }
11850  }
11851
11852  protected void composePeriod(String name, Period element) throws IOException {
11853    if (element != null) {
11854      composeTypeAttributes(element);
11855      xml.enter(FHIR_NS, name);
11856      composeElementElements(element);
11857      if (element.hasStartElement()) {
11858        composeDateTime("start", element.getStartElement());
11859      }
11860      if (element.hasEndElement()) {
11861        composeDateTime("end", element.getEndElement());
11862      }
11863      composeElementClose(element);
11864      xml.exit(FHIR_NS, name);
11865    }
11866  }
11867
11868  protected void composeAttachment(String name, Attachment element) throws IOException {
11869    if (element != null) {
11870      composeTypeAttributes(element);
11871      xml.enter(FHIR_NS, name);
11872      composeElementElements(element);
11873      if (element.hasContentTypeElement()) {
11874        composeCode("contentType", element.getContentTypeElement());
11875      }
11876      if (element.hasLanguageElement()) {
11877        composeCode("language", element.getLanguageElement());
11878      }
11879      if (element.hasDataElement()) {
11880        composeBase64Binary("data", element.getDataElement());
11881      }
11882      if (element.hasUrlElement()) {
11883        composeUri("url", element.getUrlElement());
11884      }
11885      if (element.hasSizeElement()) {
11886        composeUnsignedInt("size", element.getSizeElement());
11887      }
11888      if (element.hasHashElement()) {
11889        composeBase64Binary("hash", element.getHashElement());
11890      }
11891      if (element.hasTitleElement()) {
11892        composeString("title", element.getTitleElement());
11893      }
11894      if (element.hasCreationElement()) {
11895        composeDateTime("creation", element.getCreationElement());
11896      }
11897      composeElementClose(element);
11898      xml.exit(FHIR_NS, name);
11899    }
11900  }
11901
11902  protected void composeRatio(String name, Ratio element) throws IOException {
11903    if (element != null) {
11904      composeTypeAttributes(element);
11905      xml.enter(FHIR_NS, name);
11906      composeElementElements(element);
11907      if (element.hasNumerator()) {
11908        composeQuantity("numerator", element.getNumerator());
11909      }
11910      if (element.hasDenominator()) {
11911        composeQuantity("denominator", element.getDenominator());
11912      }
11913      composeElementClose(element);
11914      xml.exit(FHIR_NS, name);
11915    }
11916  }
11917
11918  protected void composeRange(String name, Range element) throws IOException {
11919    if (element != null) {
11920      composeTypeAttributes(element);
11921      xml.enter(FHIR_NS, name);
11922      composeElementElements(element);
11923      if (element.hasLow()) {
11924        composeSimpleQuantity("low", element.getLow());
11925      }
11926      if (element.hasHigh()) {
11927        composeSimpleQuantity("high", element.getHigh());
11928      }
11929      composeElementClose(element);
11930      xml.exit(FHIR_NS, name);
11931    }
11932  }
11933
11934  protected void composeAnnotation(String name, Annotation element) throws IOException {
11935    if (element != null) {
11936      composeTypeAttributes(element);
11937      xml.enter(FHIR_NS, name);
11938      composeElementElements(element);
11939      if (element.hasAuthor()) {
11940        composeType("author", element.getAuthor());
11941      }
11942      if (element.hasTimeElement()) {
11943        composeDateTime("time", element.getTimeElement());
11944      }
11945      if (element.hasTextElement()) {
11946        composeString("text", element.getTextElement());
11947      }
11948      composeElementClose(element);
11949      xml.exit(FHIR_NS, name);
11950    }
11951  }
11952
11953  protected void composeCodeableConcept(String name, CodeableConcept element) throws IOException {
11954    if (element != null) {
11955      composeTypeAttributes(element);
11956      xml.enter(FHIR_NS, name);
11957      composeElementElements(element);
11958      if (element.hasCoding()) {
11959        for (Coding e : element.getCoding())
11960          composeCoding("coding", e);
11961      }
11962      if (element.hasTextElement()) {
11963        composeString("text", element.getTextElement());
11964      }
11965      composeElementClose(element);
11966      xml.exit(FHIR_NS, name);
11967    }
11968  }
11969
11970  protected void composeMoney(String name, Money element) throws IOException {
11971    if (element != null) {
11972      composeTypeAttributes(element);
11973      xml.enter(FHIR_NS, name);
11974      composeElementElements(element);
11975      if (element.hasValueElement()) {
11976        composeDecimal("value", element.getValueElement());
11977      }
11978      if (element.hasComparatorElement())
11979        composeEnumeration("comparator", element.getComparatorElement(), new Money.QuantityComparatorEnumFactory());
11980      if (element.hasUnitElement()) {
11981        composeString("unit", element.getUnitElement());
11982      }
11983      if (element.hasSystemElement()) {
11984        composeUri("system", element.getSystemElement());
11985      }
11986      if (element.hasCodeElement()) {
11987        composeCode("code", element.getCodeElement());
11988      }
11989      composeElementClose(element);
11990      xml.exit(FHIR_NS, name);
11991    }
11992  }
11993
11994  protected void composeSimpleQuantity(String name, SimpleQuantity element) throws IOException {
11995    if (element != null) {
11996      composeTypeAttributes(element);
11997      xml.enter(FHIR_NS, name);
11998      composeElementElements(element);
11999      if (element.hasValueElement()) {
12000        composeDecimal("value", element.getValueElement());
12001      }
12002      if (element.hasComparatorElement())
12003        composeEnumeration("comparator", element.getComparatorElement(),
12004            new SimpleQuantity.QuantityComparatorEnumFactory());
12005      if (element.hasUnitElement()) {
12006        composeString("unit", element.getUnitElement());
12007      }
12008      if (element.hasSystemElement()) {
12009        composeUri("system", element.getSystemElement());
12010      }
12011      if (element.hasCodeElement()) {
12012        composeCode("code", element.getCodeElement());
12013      }
12014      composeElementClose(element);
12015      xml.exit(FHIR_NS, name);
12016    }
12017  }
12018
12019  protected void composeDuration(String name, Duration element) throws IOException {
12020    if (element != null) {
12021      composeTypeAttributes(element);
12022      xml.enter(FHIR_NS, name);
12023      composeElementElements(element);
12024      if (element.hasValueElement()) {
12025        composeDecimal("value", element.getValueElement());
12026      }
12027      if (element.hasComparatorElement())
12028        composeEnumeration("comparator", element.getComparatorElement(), new Duration.QuantityComparatorEnumFactory());
12029      if (element.hasUnitElement()) {
12030        composeString("unit", element.getUnitElement());
12031      }
12032      if (element.hasSystemElement()) {
12033        composeUri("system", element.getSystemElement());
12034      }
12035      if (element.hasCodeElement()) {
12036        composeCode("code", element.getCodeElement());
12037      }
12038      composeElementClose(element);
12039      xml.exit(FHIR_NS, name);
12040    }
12041  }
12042
12043  protected void composeCount(String name, Count element) throws IOException {
12044    if (element != null) {
12045      composeTypeAttributes(element);
12046      xml.enter(FHIR_NS, name);
12047      composeElementElements(element);
12048      if (element.hasValueElement()) {
12049        composeDecimal("value", element.getValueElement());
12050      }
12051      if (element.hasComparatorElement())
12052        composeEnumeration("comparator", element.getComparatorElement(), new Count.QuantityComparatorEnumFactory());
12053      if (element.hasUnitElement()) {
12054        composeString("unit", element.getUnitElement());
12055      }
12056      if (element.hasSystemElement()) {
12057        composeUri("system", element.getSystemElement());
12058      }
12059      if (element.hasCodeElement()) {
12060        composeCode("code", element.getCodeElement());
12061      }
12062      composeElementClose(element);
12063      xml.exit(FHIR_NS, name);
12064    }
12065  }
12066
12067  protected void composeDistance(String name, Distance element) throws IOException {
12068    if (element != null) {
12069      composeTypeAttributes(element);
12070      xml.enter(FHIR_NS, name);
12071      composeElementElements(element);
12072      if (element.hasValueElement()) {
12073        composeDecimal("value", element.getValueElement());
12074      }
12075      if (element.hasComparatorElement())
12076        composeEnumeration("comparator", element.getComparatorElement(), new Distance.QuantityComparatorEnumFactory());
12077      if (element.hasUnitElement()) {
12078        composeString("unit", element.getUnitElement());
12079      }
12080      if (element.hasSystemElement()) {
12081        composeUri("system", element.getSystemElement());
12082      }
12083      if (element.hasCodeElement()) {
12084        composeCode("code", element.getCodeElement());
12085      }
12086      composeElementClose(element);
12087      xml.exit(FHIR_NS, name);
12088    }
12089  }
12090
12091  protected void composeAge(String name, Age element) throws IOException {
12092    if (element != null) {
12093      composeTypeAttributes(element);
12094      xml.enter(FHIR_NS, name);
12095      composeElementElements(element);
12096      if (element.hasValueElement()) {
12097        composeDecimal("value", element.getValueElement());
12098      }
12099      if (element.hasComparatorElement())
12100        composeEnumeration("comparator", element.getComparatorElement(), new Age.QuantityComparatorEnumFactory());
12101      if (element.hasUnitElement()) {
12102        composeString("unit", element.getUnitElement());
12103      }
12104      if (element.hasSystemElement()) {
12105        composeUri("system", element.getSystemElement());
12106      }
12107      if (element.hasCodeElement()) {
12108        composeCode("code", element.getCodeElement());
12109      }
12110      composeElementClose(element);
12111      xml.exit(FHIR_NS, name);
12112    }
12113  }
12114
12115  protected void composeHumanName(String name, HumanName element) throws IOException {
12116    if (element != null) {
12117      composeElementAttributes(element);
12118      xml.enter(FHIR_NS, name);
12119      composeElementElements(element);
12120      if (element.hasUseElement())
12121        composeEnumeration("use", element.getUseElement(), new HumanName.NameUseEnumFactory());
12122      if (element.hasTextElement()) {
12123        composeString("text", element.getTextElement());
12124      }
12125      if (element.hasFamily()) {
12126        for (StringType e : element.getFamily())
12127          composeString("family", e);
12128      }
12129      if (element.hasGiven()) {
12130        for (StringType e : element.getGiven())
12131          composeString("given", e);
12132      }
12133      if (element.hasPrefix()) {
12134        for (StringType e : element.getPrefix())
12135          composeString("prefix", e);
12136      }
12137      if (element.hasSuffix()) {
12138        for (StringType e : element.getSuffix())
12139          composeString("suffix", e);
12140      }
12141      if (element.hasPeriod()) {
12142        composePeriod("period", element.getPeriod());
12143      }
12144      composeElementClose(element);
12145      xml.exit(FHIR_NS, name);
12146    }
12147  }
12148
12149  protected void composeContactPoint(String name, ContactPoint element) throws IOException {
12150    if (element != null) {
12151      composeElementAttributes(element);
12152      xml.enter(FHIR_NS, name);
12153      composeElementElements(element);
12154      if (element.hasSystemElement())
12155        composeEnumeration("system", element.getSystemElement(), new ContactPoint.ContactPointSystemEnumFactory());
12156      if (element.hasValueElement()) {
12157        composeString("value", element.getValueElement());
12158      }
12159      if (element.hasUseElement())
12160        composeEnumeration("use", element.getUseElement(), new ContactPoint.ContactPointUseEnumFactory());
12161      if (element.hasRankElement()) {
12162        composePositiveInt("rank", element.getRankElement());
12163      }
12164      if (element.hasPeriod()) {
12165        composePeriod("period", element.getPeriod());
12166      }
12167      composeElementClose(element);
12168      xml.exit(FHIR_NS, name);
12169    }
12170  }
12171
12172  protected void composeMeta(String name, Meta element) throws IOException {
12173    if (element != null) {
12174      composeElementAttributes(element);
12175      xml.enter(FHIR_NS, name);
12176      composeElementElements(element);
12177      if (element.hasVersionIdElement()) {
12178        composeId("versionId", element.getVersionIdElement());
12179      }
12180      if (element.hasLastUpdatedElement()) {
12181        composeInstant("lastUpdated", element.getLastUpdatedElement());
12182      }
12183      if (element.hasProfile()) {
12184        for (UriType e : element.getProfile())
12185          composeUri("profile", e);
12186      }
12187      if (element.hasSecurity()) {
12188        for (Coding e : element.getSecurity())
12189          composeCoding("security", e);
12190      }
12191      if (element.hasTag()) {
12192        for (Coding e : element.getTag())
12193          composeCoding("tag", e);
12194      }
12195      composeElementClose(element);
12196      xml.exit(FHIR_NS, name);
12197    }
12198  }
12199
12200  protected void composeAddress(String name, Address element) throws IOException {
12201    if (element != null) {
12202      composeElementAttributes(element);
12203      xml.enter(FHIR_NS, name);
12204      composeElementElements(element);
12205      if (element.hasUseElement())
12206        composeEnumeration("use", element.getUseElement(), new Address.AddressUseEnumFactory());
12207      if (element.hasTypeElement())
12208        composeEnumeration("type", element.getTypeElement(), new Address.AddressTypeEnumFactory());
12209      if (element.hasTextElement()) {
12210        composeString("text", element.getTextElement());
12211      }
12212      if (element.hasLine()) {
12213        for (StringType e : element.getLine())
12214          composeString("line", e);
12215      }
12216      if (element.hasCityElement()) {
12217        composeString("city", element.getCityElement());
12218      }
12219      if (element.hasDistrictElement()) {
12220        composeString("district", element.getDistrictElement());
12221      }
12222      if (element.hasStateElement()) {
12223        composeString("state", element.getStateElement());
12224      }
12225      if (element.hasPostalCodeElement()) {
12226        composeString("postalCode", element.getPostalCodeElement());
12227      }
12228      if (element.hasCountryElement()) {
12229        composeString("country", element.getCountryElement());
12230      }
12231      if (element.hasPeriod()) {
12232        composePeriod("period", element.getPeriod());
12233      }
12234      composeElementClose(element);
12235      xml.exit(FHIR_NS, name);
12236    }
12237  }
12238
12239  protected void composeTiming(String name, Timing element) throws IOException {
12240    if (element != null) {
12241      composeElementAttributes(element);
12242      xml.enter(FHIR_NS, name);
12243      composeElementElements(element);
12244      if (element.hasEvent()) {
12245        for (DateTimeType e : element.getEvent())
12246          composeDateTime("event", e);
12247      }
12248      if (element.hasRepeat()) {
12249        composeTimingTimingRepeatComponent("repeat", element.getRepeat());
12250      }
12251      if (element.hasCode()) {
12252        composeCodeableConcept("code", element.getCode());
12253      }
12254      composeElementClose(element);
12255      xml.exit(FHIR_NS, name);
12256    }
12257  }
12258
12259  protected void composeTimingTimingRepeatComponent(String name, Timing.TimingRepeatComponent element)
12260      throws IOException {
12261    if (element != null) {
12262      composeElementAttributes(element);
12263      xml.enter(FHIR_NS, name);
12264      composeElementElements(element);
12265      if (element.hasBounds()) {
12266        composeType("bounds", element.getBounds());
12267      }
12268      if (element.hasCountElement()) {
12269        composeInteger("count", element.getCountElement());
12270      }
12271      if (element.hasDurationElement()) {
12272        composeDecimal("duration", element.getDurationElement());
12273      }
12274      if (element.hasDurationMaxElement()) {
12275        composeDecimal("durationMax", element.getDurationMaxElement());
12276      }
12277      if (element.hasDurationUnitsElement())
12278        composeEnumeration("durationUnits", element.getDurationUnitsElement(), new Timing.UnitsOfTimeEnumFactory());
12279      if (element.hasFrequencyElement()) {
12280        composeInteger("frequency", element.getFrequencyElement());
12281      }
12282      if (element.hasFrequencyMaxElement()) {
12283        composeInteger("frequencyMax", element.getFrequencyMaxElement());
12284      }
12285      if (element.hasPeriodElement()) {
12286        composeDecimal("period", element.getPeriodElement());
12287      }
12288      if (element.hasPeriodMaxElement()) {
12289        composeDecimal("periodMax", element.getPeriodMaxElement());
12290      }
12291      if (element.hasPeriodUnitsElement())
12292        composeEnumeration("periodUnits", element.getPeriodUnitsElement(), new Timing.UnitsOfTimeEnumFactory());
12293      if (element.hasWhenElement())
12294        composeEnumeration("when", element.getWhenElement(), new Timing.EventTimingEnumFactory());
12295      composeElementClose(element);
12296      xml.exit(FHIR_NS, name);
12297    }
12298  }
12299
12300  protected void composeElementDefinition(String name, ElementDefinition element) throws IOException {
12301    if (element != null) {
12302      composeElementAttributes(element);
12303      xml.enter(FHIR_NS, name);
12304      composeElementElements(element);
12305      if (element.hasPathElement()) {
12306        composeString("path", element.getPathElement());
12307      }
12308      if (element.hasRepresentation())
12309        for (Enumeration<ElementDefinition.PropertyRepresentation> e : element.getRepresentation())
12310          composeEnumeration("representation", e, new ElementDefinition.PropertyRepresentationEnumFactory());
12311      if (element.hasNameElement()) {
12312        composeString("name", element.getNameElement());
12313      }
12314      if (element.hasLabelElement()) {
12315        composeString("label", element.getLabelElement());
12316      }
12317      if (element.hasCode()) {
12318        for (Coding e : element.getCode())
12319          composeCoding("code", e);
12320      }
12321      if (element.hasSlicing()) {
12322        composeElementDefinitionElementDefinitionSlicingComponent("slicing", element.getSlicing());
12323      }
12324      if (element.hasShortElement()) {
12325        composeString("short", element.getShortElement());
12326      }
12327      if (element.hasDefinitionElement()) {
12328        composeMarkdown("definition", element.getDefinitionElement());
12329      }
12330      if (element.hasCommentsElement()) {
12331        composeMarkdown("comments", element.getCommentsElement());
12332      }
12333      if (element.hasRequirementsElement()) {
12334        composeMarkdown("requirements", element.getRequirementsElement());
12335      }
12336      if (element.hasAlias()) {
12337        for (StringType e : element.getAlias())
12338          composeString("alias", e);
12339      }
12340      if (element.hasMinElement()) {
12341        composeInteger("min", element.getMinElement());
12342      }
12343      if (element.hasMaxElement()) {
12344        composeString("max", element.getMaxElement());
12345      }
12346      if (element.hasBase()) {
12347        composeElementDefinitionElementDefinitionBaseComponent("base", element.getBase());
12348      }
12349      if (element.hasType()) {
12350        for (ElementDefinition.TypeRefComponent e : element.getType())
12351          composeElementDefinitionTypeRefComponent("type", e);
12352      }
12353      if (element.hasNameReferenceElement()) {
12354        composeString("nameReference", element.getNameReferenceElement());
12355      }
12356      if (element.hasDefaultValue()) {
12357        composeType("defaultValue", element.getDefaultValue());
12358      }
12359      if (element.hasMeaningWhenMissingElement()) {
12360        composeMarkdown("meaningWhenMissing", element.getMeaningWhenMissingElement());
12361      }
12362      if (element.hasFixed()) {
12363        composeType("fixed", element.getFixed());
12364      }
12365      if (element.hasPattern()) {
12366        composeType("pattern", element.getPattern());
12367      }
12368      if (element.hasExample()) {
12369        composeType("example", element.getExample());
12370      }
12371      if (element.hasMinValue()) {
12372        composeType("minValue", element.getMinValue());
12373      }
12374      if (element.hasMaxValue()) {
12375        composeType("maxValue", element.getMaxValue());
12376      }
12377      if (element.hasMaxLengthElement()) {
12378        composeInteger("maxLength", element.getMaxLengthElement());
12379      }
12380      if (element.hasCondition()) {
12381        for (IdType e : element.getCondition())
12382          composeId("condition", e);
12383      }
12384      if (element.hasConstraint()) {
12385        for (ElementDefinition.ElementDefinitionConstraintComponent e : element.getConstraint())
12386          composeElementDefinitionElementDefinitionConstraintComponent("constraint", e);
12387      }
12388      if (element.hasMustSupportElement()) {
12389        composeBoolean("mustSupport", element.getMustSupportElement());
12390      }
12391      if (element.hasIsModifierElement()) {
12392        composeBoolean("isModifier", element.getIsModifierElement());
12393      }
12394      if (element.hasIsSummaryElement()) {
12395        composeBoolean("isSummary", element.getIsSummaryElement());
12396      }
12397      if (element.hasBinding()) {
12398        composeElementDefinitionElementDefinitionBindingComponent("binding", element.getBinding());
12399      }
12400      if (element.hasMapping()) {
12401        for (ElementDefinition.ElementDefinitionMappingComponent e : element.getMapping())
12402          composeElementDefinitionElementDefinitionMappingComponent("mapping", e);
12403      }
12404      composeElementClose(element);
12405      xml.exit(FHIR_NS, name);
12406    }
12407  }
12408
12409  protected void composeElementDefinitionElementDefinitionSlicingComponent(String name,
12410      ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
12411    if (element != null) {
12412      composeElementAttributes(element);
12413      xml.enter(FHIR_NS, name);
12414      composeElementElements(element);
12415      if (element.hasDiscriminator()) {
12416        for (StringType e : element.getDiscriminator())
12417          composeString("discriminator", e);
12418      }
12419      if (element.hasDescriptionElement()) {
12420        composeString("description", element.getDescriptionElement());
12421      }
12422      if (element.hasOrderedElement()) {
12423        composeBoolean("ordered", element.getOrderedElement());
12424      }
12425      if (element.hasRulesElement())
12426        composeEnumeration("rules", element.getRulesElement(), new ElementDefinition.SlicingRulesEnumFactory());
12427      composeElementClose(element);
12428      xml.exit(FHIR_NS, name);
12429    }
12430  }
12431
12432  protected void composeElementDefinitionElementDefinitionBaseComponent(String name,
12433      ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
12434    if (element != null) {
12435      composeElementAttributes(element);
12436      xml.enter(FHIR_NS, name);
12437      composeElementElements(element);
12438      if (element.hasPathElement()) {
12439        composeString("path", element.getPathElement());
12440      }
12441      if (element.hasMinElement()) {
12442        composeInteger("min", element.getMinElement());
12443      }
12444      if (element.hasMaxElement()) {
12445        composeString("max", element.getMaxElement());
12446      }
12447      composeElementClose(element);
12448      xml.exit(FHIR_NS, name);
12449    }
12450  }
12451
12452  protected void composeElementDefinitionTypeRefComponent(String name, ElementDefinition.TypeRefComponent element)
12453      throws IOException {
12454    if (element != null) {
12455      composeElementAttributes(element);
12456      xml.enter(FHIR_NS, name);
12457      composeElementElements(element);
12458      if (element.hasCodeElement()) {
12459        composeCode("code", element.getCodeElement());
12460      }
12461      if (element.hasProfile()) {
12462        for (UriType e : element.getProfile())
12463          composeUri("profile", e);
12464      }
12465      if (element.hasAggregation())
12466        for (Enumeration<ElementDefinition.AggregationMode> e : element.getAggregation())
12467          composeEnumeration("aggregation", e, new ElementDefinition.AggregationModeEnumFactory());
12468      composeElementClose(element);
12469      xml.exit(FHIR_NS, name);
12470    }
12471  }
12472
12473  protected void composeElementDefinitionElementDefinitionConstraintComponent(String name,
12474      ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
12475    if (element != null) {
12476      composeElementAttributes(element);
12477      xml.enter(FHIR_NS, name);
12478      composeElementElements(element);
12479      if (element.hasKeyElement()) {
12480        composeId("key", element.getKeyElement());
12481      }
12482      if (element.hasRequirementsElement()) {
12483        composeString("requirements", element.getRequirementsElement());
12484      }
12485      if (element.hasSeverityElement())
12486        composeEnumeration("severity", element.getSeverityElement(),
12487            new ElementDefinition.ConstraintSeverityEnumFactory());
12488      if (element.hasHumanElement()) {
12489        composeString("human", element.getHumanElement());
12490      }
12491      if (element.hasXpathElement()) {
12492        composeString("xpath", element.getXpathElement());
12493      }
12494      composeElementClose(element);
12495      xml.exit(FHIR_NS, name);
12496    }
12497  }
12498
12499  protected void composeElementDefinitionElementDefinitionBindingComponent(String name,
12500      ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
12501    if (element != null) {
12502      composeElementAttributes(element);
12503      xml.enter(FHIR_NS, name);
12504      composeElementElements(element);
12505      if (element.hasStrengthElement())
12506        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
12507      if (element.hasDescriptionElement()) {
12508        composeString("description", element.getDescriptionElement());
12509      }
12510      if (element.hasValueSet()) {
12511        composeType("valueSet", element.getValueSet());
12512      }
12513      composeElementClose(element);
12514      xml.exit(FHIR_NS, name);
12515    }
12516  }
12517
12518  protected void composeElementDefinitionElementDefinitionMappingComponent(String name,
12519      ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
12520    if (element != null) {
12521      composeElementAttributes(element);
12522      xml.enter(FHIR_NS, name);
12523      composeElementElements(element);
12524      if (element.hasIdentityElement()) {
12525        composeId("identity", element.getIdentityElement());
12526      }
12527      if (element.hasLanguageElement()) {
12528        composeCode("language", element.getLanguageElement());
12529      }
12530      if (element.hasMapElement()) {
12531        composeString("map", element.getMapElement());
12532      }
12533      composeElementClose(element);
12534      xml.exit(FHIR_NS, name);
12535    }
12536  }
12537
12538  protected void composeDomainResourceAttributes(DomainResource element) throws IOException {
12539    composeResourceAttributes(element);
12540  }
12541
12542  protected void composeDomainResourceElements(DomainResource element) throws IOException {
12543    composeResourceElements(element);
12544    if (element.hasText()) {
12545      composeNarrative("text", element.getText());
12546    }
12547    if (element.hasContained()) {
12548      for (Resource e : element.getContained()) {
12549        xml.enter(FHIR_NS, "contained");
12550        composeResource(e);
12551        xml.exit(FHIR_NS, "contained");
12552      }
12553    }
12554    if (element.hasExtension())
12555      for (Extension e : element.getExtension())
12556        composeExtension("extension", e);
12557    if (element.hasModifierExtension()) {
12558      for (Extension e : element.getModifierExtension())
12559        composeExtension("modifierExtension", e);
12560    }
12561  }
12562
12563  protected void composeParameters(String name, Parameters element) throws IOException {
12564    if (element != null) {
12565      composeResourceAttributes(element);
12566      xml.enter(FHIR_NS, name);
12567      composeResourceElements(element);
12568      if (element.hasParameter()) {
12569        for (Parameters.ParametersParameterComponent e : element.getParameter())
12570          composeParametersParametersParameterComponent("parameter", e);
12571      }
12572      composeElementClose(element);
12573      xml.exit(FHIR_NS, name);
12574    }
12575  }
12576
12577  protected void composeParametersParametersParameterComponent(String name,
12578      Parameters.ParametersParameterComponent element) throws IOException {
12579    if (element != null) {
12580      composeElementAttributes(element);
12581      xml.enter(FHIR_NS, name);
12582      composeBackboneElements(element);
12583      if (element.hasNameElement()) {
12584        composeString("name", element.getNameElement());
12585      }
12586      if (element.hasValue()) {
12587        composeType("value", element.getValue());
12588      }
12589      if (element.hasResource()) {
12590        xml.enter(FHIR_NS, "resource");
12591        composeResource(element.getResource());
12592        xml.exit(FHIR_NS, "resource");
12593      }
12594      if (element.hasPart()) {
12595        for (Parameters.ParametersParameterComponent e : element.getPart())
12596          composeParametersParametersParameterComponent("part", e);
12597      }
12598      composeElementClose(element);
12599      xml.exit(FHIR_NS, name);
12600    }
12601  }
12602
12603  protected void composeResourceAttributes(Resource element) throws IOException {
12604    if (style != OutputStyle.CANONICAL)
12605      for (String comment : element.getFormatCommentsPre())
12606        xml.comment(comment, getOutputStyle() == OutputStyle.PRETTY);
12607  }
12608
12609  protected void composeResourceElements(Resource element) throws IOException {
12610    if (element.hasIdElement()) {
12611      composeId("id", element.getIdElement());
12612    }
12613    if (element.hasMeta()) {
12614      composeMeta("meta", element.getMeta());
12615    }
12616    if (element.hasImplicitRulesElement()) {
12617      composeUri("implicitRules", element.getImplicitRulesElement());
12618    }
12619    if (element.hasLanguageElement()) {
12620      composeCode("language", element.getLanguageElement());
12621    }
12622  }
12623
12624  protected void composeAccount(String name, Account element) throws IOException {
12625    if (element != null) {
12626      composeDomainResourceAttributes(element);
12627      xml.enter(FHIR_NS, name);
12628      composeDomainResourceElements(element);
12629      if (element.hasIdentifier()) {
12630        for (Identifier e : element.getIdentifier())
12631          composeIdentifier("identifier", e);
12632      }
12633      if (element.hasNameElement()) {
12634        composeString("name", element.getNameElement());
12635      }
12636      if (element.hasType()) {
12637        composeCodeableConcept("type", element.getType());
12638      }
12639      if (element.hasStatusElement())
12640        composeEnumeration("status", element.getStatusElement(), new Account.AccountStatusEnumFactory());
12641      if (element.hasActivePeriod()) {
12642        composePeriod("activePeriod", element.getActivePeriod());
12643      }
12644      if (element.hasCurrency()) {
12645        composeCoding("currency", element.getCurrency());
12646      }
12647      if (element.hasBalance()) {
12648        composeMoney("balance", element.getBalance());
12649      }
12650      if (element.hasCoveragePeriod()) {
12651        composePeriod("coveragePeriod", element.getCoveragePeriod());
12652      }
12653      if (element.hasSubject()) {
12654        composeReference("subject", element.getSubject());
12655      }
12656      if (element.hasOwner()) {
12657        composeReference("owner", element.getOwner());
12658      }
12659      if (element.hasDescriptionElement()) {
12660        composeString("description", element.getDescriptionElement());
12661      }
12662      composeElementClose(element);
12663      xml.exit(FHIR_NS, name);
12664    }
12665  }
12666
12667  protected void composeAllergyIntolerance(String name, AllergyIntolerance element) throws IOException {
12668    if (element != null) {
12669      composeDomainResourceAttributes(element);
12670      xml.enter(FHIR_NS, name);
12671      composeDomainResourceElements(element);
12672      if (element.hasIdentifier()) {
12673        for (Identifier e : element.getIdentifier())
12674          composeIdentifier("identifier", e);
12675      }
12676      if (element.hasOnsetElement()) {
12677        composeDateTime("onset", element.getOnsetElement());
12678      }
12679      if (element.hasRecordedDateElement()) {
12680        composeDateTime("recordedDate", element.getRecordedDateElement());
12681      }
12682      if (element.hasRecorder()) {
12683        composeReference("recorder", element.getRecorder());
12684      }
12685      if (element.hasPatient()) {
12686        composeReference("patient", element.getPatient());
12687      }
12688      if (element.hasReporter()) {
12689        composeReference("reporter", element.getReporter());
12690      }
12691      if (element.hasSubstance()) {
12692        composeCodeableConcept("substance", element.getSubstance());
12693      }
12694      if (element.hasStatusElement())
12695        composeEnumeration("status", element.getStatusElement(),
12696            new AllergyIntolerance.AllergyIntoleranceStatusEnumFactory());
12697      if (element.hasCriticalityElement())
12698        composeEnumeration("criticality", element.getCriticalityElement(),
12699            new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory());
12700      if (element.hasTypeElement())
12701        composeEnumeration("type", element.getTypeElement(),
12702            new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory());
12703      if (element.hasCategoryElement())
12704        composeEnumeration("category", element.getCategoryElement(),
12705            new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory());
12706      if (element.hasLastOccurenceElement()) {
12707        composeDateTime("lastOccurence", element.getLastOccurenceElement());
12708      }
12709      if (element.hasNote()) {
12710        composeAnnotation("note", element.getNote());
12711      }
12712      if (element.hasReaction()) {
12713        for (AllergyIntolerance.AllergyIntoleranceReactionComponent e : element.getReaction())
12714          composeAllergyIntoleranceAllergyIntoleranceReactionComponent("reaction", e);
12715      }
12716      composeElementClose(element);
12717      xml.exit(FHIR_NS, name);
12718    }
12719  }
12720
12721  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponent(String name,
12722      AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
12723    if (element != null) {
12724      composeElementAttributes(element);
12725      xml.enter(FHIR_NS, name);
12726      composeBackboneElements(element);
12727      if (element.hasSubstance()) {
12728        composeCodeableConcept("substance", element.getSubstance());
12729      }
12730      if (element.hasCertaintyElement())
12731        composeEnumeration("certainty", element.getCertaintyElement(),
12732            new AllergyIntolerance.AllergyIntoleranceCertaintyEnumFactory());
12733      if (element.hasManifestation()) {
12734        for (CodeableConcept e : element.getManifestation())
12735          composeCodeableConcept("manifestation", e);
12736      }
12737      if (element.hasDescriptionElement()) {
12738        composeString("description", element.getDescriptionElement());
12739      }
12740      if (element.hasOnsetElement()) {
12741        composeDateTime("onset", element.getOnsetElement());
12742      }
12743      if (element.hasSeverityElement())
12744        composeEnumeration("severity", element.getSeverityElement(),
12745            new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory());
12746      if (element.hasExposureRoute()) {
12747        composeCodeableConcept("exposureRoute", element.getExposureRoute());
12748      }
12749      if (element.hasNote()) {
12750        composeAnnotation("note", element.getNote());
12751      }
12752      composeElementClose(element);
12753      xml.exit(FHIR_NS, name);
12754    }
12755  }
12756
12757  protected void composeAppointment(String name, Appointment element) throws IOException {
12758    if (element != null) {
12759      composeDomainResourceAttributes(element);
12760      xml.enter(FHIR_NS, name);
12761      composeDomainResourceElements(element);
12762      if (element.hasIdentifier()) {
12763        for (Identifier e : element.getIdentifier())
12764          composeIdentifier("identifier", e);
12765      }
12766      if (element.hasStatusElement())
12767        composeEnumeration("status", element.getStatusElement(), new Appointment.AppointmentStatusEnumFactory());
12768      if (element.hasType()) {
12769        composeCodeableConcept("type", element.getType());
12770      }
12771      if (element.hasReason()) {
12772        composeCodeableConcept("reason", element.getReason());
12773      }
12774      if (element.hasPriorityElement()) {
12775        composeUnsignedInt("priority", element.getPriorityElement());
12776      }
12777      if (element.hasDescriptionElement()) {
12778        composeString("description", element.getDescriptionElement());
12779      }
12780      if (element.hasStartElement()) {
12781        composeInstant("start", element.getStartElement());
12782      }
12783      if (element.hasEndElement()) {
12784        composeInstant("end", element.getEndElement());
12785      }
12786      if (element.hasMinutesDurationElement()) {
12787        composePositiveInt("minutesDuration", element.getMinutesDurationElement());
12788      }
12789      if (element.hasSlot()) {
12790        for (Reference e : element.getSlot())
12791          composeReference("slot", e);
12792      }
12793      if (element.hasCommentElement()) {
12794        composeString("comment", element.getCommentElement());
12795      }
12796      if (element.hasParticipant()) {
12797        for (Appointment.AppointmentParticipantComponent e : element.getParticipant())
12798          composeAppointmentAppointmentParticipantComponent("participant", e);
12799      }
12800      composeElementClose(element);
12801      xml.exit(FHIR_NS, name);
12802    }
12803  }
12804
12805  protected void composeAppointmentAppointmentParticipantComponent(String name,
12806      Appointment.AppointmentParticipantComponent element) throws IOException {
12807    if (element != null) {
12808      composeElementAttributes(element);
12809      xml.enter(FHIR_NS, name);
12810      composeBackboneElements(element);
12811      if (element.hasType()) {
12812        for (CodeableConcept e : element.getType())
12813          composeCodeableConcept("type", e);
12814      }
12815      if (element.hasActor()) {
12816        composeReference("actor", element.getActor());
12817      }
12818      if (element.hasRequiredElement())
12819        composeEnumeration("required", element.getRequiredElement(), new Appointment.ParticipantRequiredEnumFactory());
12820      if (element.hasStatusElement())
12821        composeEnumeration("status", element.getStatusElement(), new Appointment.ParticipationStatusEnumFactory());
12822      composeElementClose(element);
12823      xml.exit(FHIR_NS, name);
12824    }
12825  }
12826
12827  protected void composeAppointmentResponse(String name, AppointmentResponse element) throws IOException {
12828    if (element != null) {
12829      composeDomainResourceAttributes(element);
12830      xml.enter(FHIR_NS, name);
12831      composeDomainResourceElements(element);
12832      if (element.hasIdentifier()) {
12833        for (Identifier e : element.getIdentifier())
12834          composeIdentifier("identifier", e);
12835      }
12836      if (element.hasAppointment()) {
12837        composeReference("appointment", element.getAppointment());
12838      }
12839      if (element.hasStartElement()) {
12840        composeInstant("start", element.getStartElement());
12841      }
12842      if (element.hasEndElement()) {
12843        composeInstant("end", element.getEndElement());
12844      }
12845      if (element.hasParticipantType()) {
12846        for (CodeableConcept e : element.getParticipantType())
12847          composeCodeableConcept("participantType", e);
12848      }
12849      if (element.hasActor()) {
12850        composeReference("actor", element.getActor());
12851      }
12852      if (element.hasParticipantStatusElement())
12853        composeEnumeration("participantStatus", element.getParticipantStatusElement(),
12854            new AppointmentResponse.ParticipantStatusEnumFactory());
12855      if (element.hasCommentElement()) {
12856        composeString("comment", element.getCommentElement());
12857      }
12858      composeElementClose(element);
12859      xml.exit(FHIR_NS, name);
12860    }
12861  }
12862
12863  protected void composeAuditEvent(String name, AuditEvent element) throws IOException {
12864    if (element != null) {
12865      composeDomainResourceAttributes(element);
12866      xml.enter(FHIR_NS, name);
12867      composeDomainResourceElements(element);
12868      if (element.hasEvent()) {
12869        composeAuditEventAuditEventEventComponent("event", element.getEvent());
12870      }
12871      if (element.hasParticipant()) {
12872        for (AuditEvent.AuditEventParticipantComponent e : element.getParticipant())
12873          composeAuditEventAuditEventParticipantComponent("participant", e);
12874      }
12875      if (element.hasSource()) {
12876        composeAuditEventAuditEventSourceComponent("source", element.getSource());
12877      }
12878      if (element.hasObject()) {
12879        for (AuditEvent.AuditEventObjectComponent e : element.getObject())
12880          composeAuditEventAuditEventObjectComponent("object", e);
12881      }
12882      composeElementClose(element);
12883      xml.exit(FHIR_NS, name);
12884    }
12885  }
12886
12887  protected void composeAuditEventAuditEventEventComponent(String name, AuditEvent.AuditEventEventComponent element)
12888      throws IOException {
12889    if (element != null) {
12890      composeElementAttributes(element);
12891      xml.enter(FHIR_NS, name);
12892      composeBackboneElements(element);
12893      if (element.hasType()) {
12894        composeCoding("type", element.getType());
12895      }
12896      if (element.hasSubtype()) {
12897        for (Coding e : element.getSubtype())
12898          composeCoding("subtype", e);
12899      }
12900      if (element.hasActionElement())
12901        composeEnumeration("action", element.getActionElement(), new AuditEvent.AuditEventActionEnumFactory());
12902      if (element.hasDateTimeElement()) {
12903        composeInstant("dateTime", element.getDateTimeElement());
12904      }
12905      if (element.hasOutcomeElement())
12906        composeEnumeration("outcome", element.getOutcomeElement(), new AuditEvent.AuditEventOutcomeEnumFactory());
12907      if (element.hasOutcomeDescElement()) {
12908        composeString("outcomeDesc", element.getOutcomeDescElement());
12909      }
12910      if (element.hasPurposeOfEvent()) {
12911        for (Coding e : element.getPurposeOfEvent())
12912          composeCoding("purposeOfEvent", e);
12913      }
12914      composeElementClose(element);
12915      xml.exit(FHIR_NS, name);
12916    }
12917  }
12918
12919  protected void composeAuditEventAuditEventParticipantComponent(String name,
12920      AuditEvent.AuditEventParticipantComponent element) throws IOException {
12921    if (element != null) {
12922      composeElementAttributes(element);
12923      xml.enter(FHIR_NS, name);
12924      composeBackboneElements(element);
12925      if (element.hasRole()) {
12926        for (CodeableConcept e : element.getRole())
12927          composeCodeableConcept("role", e);
12928      }
12929      if (element.hasReference()) {
12930        composeReference("reference", element.getReference());
12931      }
12932      if (element.hasUserId()) {
12933        composeIdentifier("userId", element.getUserId());
12934      }
12935      if (element.hasAltIdElement()) {
12936        composeString("altId", element.getAltIdElement());
12937      }
12938      if (element.hasNameElement()) {
12939        composeString("name", element.getNameElement());
12940      }
12941      if (element.hasRequestorElement()) {
12942        composeBoolean("requestor", element.getRequestorElement());
12943      }
12944      if (element.hasLocation()) {
12945        composeReference("location", element.getLocation());
12946      }
12947      if (element.hasPolicy()) {
12948        for (UriType e : element.getPolicy())
12949          composeUri("policy", e);
12950      }
12951      if (element.hasMedia()) {
12952        composeCoding("media", element.getMedia());
12953      }
12954      if (element.hasNetwork()) {
12955        composeAuditEventAuditEventParticipantNetworkComponent("network", element.getNetwork());
12956      }
12957      if (element.hasPurposeOfUse()) {
12958        for (Coding e : element.getPurposeOfUse())
12959          composeCoding("purposeOfUse", e);
12960      }
12961      composeElementClose(element);
12962      xml.exit(FHIR_NS, name);
12963    }
12964  }
12965
12966  protected void composeAuditEventAuditEventParticipantNetworkComponent(String name,
12967      AuditEvent.AuditEventParticipantNetworkComponent element) throws IOException {
12968    if (element != null) {
12969      composeElementAttributes(element);
12970      xml.enter(FHIR_NS, name);
12971      composeBackboneElements(element);
12972      if (element.hasAddressElement()) {
12973        composeString("address", element.getAddressElement());
12974      }
12975      if (element.hasTypeElement())
12976        composeEnumeration("type", element.getTypeElement(),
12977            new AuditEvent.AuditEventParticipantNetworkTypeEnumFactory());
12978      composeElementClose(element);
12979      xml.exit(FHIR_NS, name);
12980    }
12981  }
12982
12983  protected void composeAuditEventAuditEventSourceComponent(String name, AuditEvent.AuditEventSourceComponent element)
12984      throws IOException {
12985    if (element != null) {
12986      composeElementAttributes(element);
12987      xml.enter(FHIR_NS, name);
12988      composeBackboneElements(element);
12989      if (element.hasSiteElement()) {
12990        composeString("site", element.getSiteElement());
12991      }
12992      if (element.hasIdentifier()) {
12993        composeIdentifier("identifier", element.getIdentifier());
12994      }
12995      if (element.hasType()) {
12996        for (Coding e : element.getType())
12997          composeCoding("type", e);
12998      }
12999      composeElementClose(element);
13000      xml.exit(FHIR_NS, name);
13001    }
13002  }
13003
13004  protected void composeAuditEventAuditEventObjectComponent(String name, AuditEvent.AuditEventObjectComponent element)
13005      throws IOException {
13006    if (element != null) {
13007      composeElementAttributes(element);
13008      xml.enter(FHIR_NS, name);
13009      composeBackboneElements(element);
13010      if (element.hasIdentifier()) {
13011        composeIdentifier("identifier", element.getIdentifier());
13012      }
13013      if (element.hasReference()) {
13014        composeReference("reference", element.getReference());
13015      }
13016      if (element.hasType()) {
13017        composeCoding("type", element.getType());
13018      }
13019      if (element.hasRole()) {
13020        composeCoding("role", element.getRole());
13021      }
13022      if (element.hasLifecycle()) {
13023        composeCoding("lifecycle", element.getLifecycle());
13024      }
13025      if (element.hasSecurityLabel()) {
13026        for (Coding e : element.getSecurityLabel())
13027          composeCoding("securityLabel", e);
13028      }
13029      if (element.hasNameElement()) {
13030        composeString("name", element.getNameElement());
13031      }
13032      if (element.hasDescriptionElement()) {
13033        composeString("description", element.getDescriptionElement());
13034      }
13035      if (element.hasQueryElement()) {
13036        composeBase64Binary("query", element.getQueryElement());
13037      }
13038      if (element.hasDetail()) {
13039        for (AuditEvent.AuditEventObjectDetailComponent e : element.getDetail())
13040          composeAuditEventAuditEventObjectDetailComponent("detail", e);
13041      }
13042      composeElementClose(element);
13043      xml.exit(FHIR_NS, name);
13044    }
13045  }
13046
13047  protected void composeAuditEventAuditEventObjectDetailComponent(String name,
13048      AuditEvent.AuditEventObjectDetailComponent element) throws IOException {
13049    if (element != null) {
13050      composeElementAttributes(element);
13051      xml.enter(FHIR_NS, name);
13052      composeBackboneElements(element);
13053      if (element.hasTypeElement()) {
13054        composeString("type", element.getTypeElement());
13055      }
13056      if (element.hasValueElement()) {
13057        composeBase64Binary("value", element.getValueElement());
13058      }
13059      composeElementClose(element);
13060      xml.exit(FHIR_NS, name);
13061    }
13062  }
13063
13064  protected void composeBasic(String name, Basic element) throws IOException {
13065    if (element != null) {
13066      composeDomainResourceAttributes(element);
13067      xml.enter(FHIR_NS, name);
13068      composeDomainResourceElements(element);
13069      if (element.hasIdentifier()) {
13070        for (Identifier e : element.getIdentifier())
13071          composeIdentifier("identifier", e);
13072      }
13073      if (element.hasCode()) {
13074        composeCodeableConcept("code", element.getCode());
13075      }
13076      if (element.hasSubject()) {
13077        composeReference("subject", element.getSubject());
13078      }
13079      if (element.hasAuthor()) {
13080        composeReference("author", element.getAuthor());
13081      }
13082      if (element.hasCreatedElement()) {
13083        composeDate("created", element.getCreatedElement());
13084      }
13085      composeElementClose(element);
13086      xml.exit(FHIR_NS, name);
13087    }
13088  }
13089
13090  protected void composeBinary(String name, Binary element) throws IOException {
13091    if (element != null) {
13092      composeResourceAttributes(element);
13093      xml.enter(FHIR_NS, name);
13094      composeResourceElements(element);
13095      if (element.hasContentTypeElement()) {
13096        composeCode("contentType", element.getContentTypeElement());
13097      }
13098      if (element.hasContentElement()) {
13099        composeBase64Binary("content", element.getContentElement());
13100      }
13101      composeElementClose(element);
13102      xml.exit(FHIR_NS, name);
13103    }
13104  }
13105
13106  protected void composeBodySite(String name, BodySite element) throws IOException {
13107    if (element != null) {
13108      composeDomainResourceAttributes(element);
13109      xml.enter(FHIR_NS, name);
13110      composeDomainResourceElements(element);
13111      if (element.hasPatient()) {
13112        composeReference("patient", element.getPatient());
13113      }
13114      if (element.hasIdentifier()) {
13115        for (Identifier e : element.getIdentifier())
13116          composeIdentifier("identifier", e);
13117      }
13118      if (element.hasCode()) {
13119        composeCodeableConcept("code", element.getCode());
13120      }
13121      if (element.hasModifier()) {
13122        for (CodeableConcept e : element.getModifier())
13123          composeCodeableConcept("modifier", e);
13124      }
13125      if (element.hasDescriptionElement()) {
13126        composeString("description", element.getDescriptionElement());
13127      }
13128      if (element.hasImage()) {
13129        for (Attachment e : element.getImage())
13130          composeAttachment("image", e);
13131      }
13132      composeElementClose(element);
13133      xml.exit(FHIR_NS, name);
13134    }
13135  }
13136
13137  protected void composeBundle(String name, Bundle element) throws IOException {
13138    if (element != null) {
13139      composeResourceAttributes(element);
13140      xml.enter(FHIR_NS, name);
13141      composeResourceElements(element);
13142      if (element.hasTypeElement())
13143        composeEnumeration("type", element.getTypeElement(), new Bundle.BundleTypeEnumFactory());
13144      if (element.hasTotalElement()) {
13145        composeUnsignedInt("total", element.getTotalElement());
13146      }
13147      if (element.hasLink()) {
13148        for (Bundle.BundleLinkComponent e : element.getLink())
13149          composeBundleBundleLinkComponent("link", e);
13150      }
13151      if (element.hasEntry()) {
13152        for (Bundle.BundleEntryComponent e : element.getEntry())
13153          composeBundleBundleEntryComponent("entry", e);
13154      }
13155      if (element.hasSignature()) {
13156        composeSignature("signature", element.getSignature());
13157      }
13158      composeElementClose(element);
13159      xml.exit(FHIR_NS, name);
13160    }
13161  }
13162
13163  protected void composeBundleBundleLinkComponent(String name, Bundle.BundleLinkComponent element) throws IOException {
13164    if (element != null) {
13165      composeElementAttributes(element);
13166      xml.enter(FHIR_NS, name);
13167      composeBackboneElements(element);
13168      if (element.hasRelationElement()) {
13169        composeString("relation", element.getRelationElement());
13170      }
13171      if (element.hasUrlElement()) {
13172        composeUri("url", element.getUrlElement());
13173      }
13174      composeElementClose(element);
13175      xml.exit(FHIR_NS, name);
13176    }
13177  }
13178
13179  protected void composeBundleBundleEntryComponent(String name, Bundle.BundleEntryComponent element)
13180      throws IOException {
13181    if (element != null) {
13182      composeElementAttributes(element);
13183      xml.enter(FHIR_NS, name);
13184      composeBackboneElements(element);
13185      if (element.hasLink()) {
13186        for (Bundle.BundleLinkComponent e : element.getLink())
13187          composeBundleBundleLinkComponent("link", e);
13188      }
13189      if (element.hasFullUrlElement()) {
13190        composeUri("fullUrl", element.getFullUrlElement());
13191      }
13192      if (element.hasResource()) {
13193        xml.enter(FHIR_NS, "resource");
13194        composeResource(element.getResource());
13195        xml.exit(FHIR_NS, "resource");
13196      }
13197      if (element.hasSearch()) {
13198        composeBundleBundleEntrySearchComponent("search", element.getSearch());
13199      }
13200      if (element.hasRequest()) {
13201        composeBundleBundleEntryRequestComponent("request", element.getRequest());
13202      }
13203      if (element.hasResponse()) {
13204        composeBundleBundleEntryResponseComponent("response", element.getResponse());
13205      }
13206      composeElementClose(element);
13207      xml.exit(FHIR_NS, name);
13208    }
13209  }
13210
13211  protected void composeBundleBundleEntrySearchComponent(String name, Bundle.BundleEntrySearchComponent element)
13212      throws IOException {
13213    if (element != null) {
13214      composeElementAttributes(element);
13215      xml.enter(FHIR_NS, name);
13216      composeBackboneElements(element);
13217      if (element.hasModeElement())
13218        composeEnumeration("mode", element.getModeElement(), new Bundle.SearchEntryModeEnumFactory());
13219      if (element.hasScoreElement()) {
13220        composeDecimal("score", element.getScoreElement());
13221      }
13222      composeElementClose(element);
13223      xml.exit(FHIR_NS, name);
13224    }
13225  }
13226
13227  protected void composeBundleBundleEntryRequestComponent(String name, Bundle.BundleEntryRequestComponent element)
13228      throws IOException {
13229    if (element != null) {
13230      composeElementAttributes(element);
13231      xml.enter(FHIR_NS, name);
13232      composeBackboneElements(element);
13233      if (element.hasMethodElement())
13234        composeEnumeration("method", element.getMethodElement(), new Bundle.HTTPVerbEnumFactory());
13235      if (element.hasUrlElement()) {
13236        composeUri("url", element.getUrlElement());
13237      }
13238      if (element.hasIfNoneMatchElement()) {
13239        composeString("ifNoneMatch", element.getIfNoneMatchElement());
13240      }
13241      if (element.hasIfModifiedSinceElement()) {
13242        composeInstant("ifModifiedSince", element.getIfModifiedSinceElement());
13243      }
13244      if (element.hasIfMatchElement()) {
13245        composeString("ifMatch", element.getIfMatchElement());
13246      }
13247      if (element.hasIfNoneExistElement()) {
13248        composeString("ifNoneExist", element.getIfNoneExistElement());
13249      }
13250      composeElementClose(element);
13251      xml.exit(FHIR_NS, name);
13252    }
13253  }
13254
13255  protected void composeBundleBundleEntryResponseComponent(String name, Bundle.BundleEntryResponseComponent element)
13256      throws IOException {
13257    if (element != null) {
13258      composeElementAttributes(element);
13259      xml.enter(FHIR_NS, name);
13260      composeBackboneElements(element);
13261      if (element.hasStatusElement()) {
13262        composeString("status", element.getStatusElement());
13263      }
13264      if (element.hasLocationElement()) {
13265        composeUri("location", element.getLocationElement());
13266      }
13267      if (element.hasEtagElement()) {
13268        composeString("etag", element.getEtagElement());
13269      }
13270      if (element.hasLastModifiedElement()) {
13271        composeInstant("lastModified", element.getLastModifiedElement());
13272      }
13273      composeElementClose(element);
13274      xml.exit(FHIR_NS, name);
13275    }
13276  }
13277
13278  protected void composeCarePlan(String name, CarePlan element) throws IOException {
13279    if (element != null) {
13280      composeDomainResourceAttributes(element);
13281      xml.enter(FHIR_NS, name);
13282      composeDomainResourceElements(element);
13283      if (element.hasIdentifier()) {
13284        for (Identifier e : element.getIdentifier())
13285          composeIdentifier("identifier", e);
13286      }
13287      if (element.hasSubject()) {
13288        composeReference("subject", element.getSubject());
13289      }
13290      if (element.hasStatusElement())
13291        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanStatusEnumFactory());
13292      if (element.hasContext()) {
13293        composeReference("context", element.getContext());
13294      }
13295      if (element.hasPeriod()) {
13296        composePeriod("period", element.getPeriod());
13297      }
13298      if (element.hasAuthor()) {
13299        for (Reference e : element.getAuthor())
13300          composeReference("author", e);
13301      }
13302      if (element.hasModifiedElement()) {
13303        composeDateTime("modified", element.getModifiedElement());
13304      }
13305      if (element.hasCategory()) {
13306        for (CodeableConcept e : element.getCategory())
13307          composeCodeableConcept("category", e);
13308      }
13309      if (element.hasDescriptionElement()) {
13310        composeString("description", element.getDescriptionElement());
13311      }
13312      if (element.hasAddresses()) {
13313        for (Reference e : element.getAddresses())
13314          composeReference("addresses", e);
13315      }
13316      if (element.hasSupport()) {
13317        for (Reference e : element.getSupport())
13318          composeReference("support", e);
13319      }
13320      if (element.hasRelatedPlan()) {
13321        for (CarePlan.CarePlanRelatedPlanComponent e : element.getRelatedPlan())
13322          composeCarePlanCarePlanRelatedPlanComponent("relatedPlan", e);
13323      }
13324      if (element.hasParticipant()) {
13325        for (CarePlan.CarePlanParticipantComponent e : element.getParticipant())
13326          composeCarePlanCarePlanParticipantComponent("participant", e);
13327      }
13328      if (element.hasGoal()) {
13329        for (Reference e : element.getGoal())
13330          composeReference("goal", e);
13331      }
13332      if (element.hasActivity()) {
13333        for (CarePlan.CarePlanActivityComponent e : element.getActivity())
13334          composeCarePlanCarePlanActivityComponent("activity", e);
13335      }
13336      if (element.hasNote()) {
13337        composeAnnotation("note", element.getNote());
13338      }
13339      composeElementClose(element);
13340      xml.exit(FHIR_NS, name);
13341    }
13342  }
13343
13344  protected void composeCarePlanCarePlanRelatedPlanComponent(String name, CarePlan.CarePlanRelatedPlanComponent element)
13345      throws IOException {
13346    if (element != null) {
13347      composeElementAttributes(element);
13348      xml.enter(FHIR_NS, name);
13349      composeBackboneElements(element);
13350      if (element.hasCodeElement())
13351        composeEnumeration("code", element.getCodeElement(), new CarePlan.CarePlanRelationshipEnumFactory());
13352      if (element.hasPlan()) {
13353        composeReference("plan", element.getPlan());
13354      }
13355      composeElementClose(element);
13356      xml.exit(FHIR_NS, name);
13357    }
13358  }
13359
13360  protected void composeCarePlanCarePlanParticipantComponent(String name, CarePlan.CarePlanParticipantComponent element)
13361      throws IOException {
13362    if (element != null) {
13363      composeElementAttributes(element);
13364      xml.enter(FHIR_NS, name);
13365      composeBackboneElements(element);
13366      if (element.hasRole()) {
13367        composeCodeableConcept("role", element.getRole());
13368      }
13369      if (element.hasMember()) {
13370        composeReference("member", element.getMember());
13371      }
13372      composeElementClose(element);
13373      xml.exit(FHIR_NS, name);
13374    }
13375  }
13376
13377  protected void composeCarePlanCarePlanActivityComponent(String name, CarePlan.CarePlanActivityComponent element)
13378      throws IOException {
13379    if (element != null) {
13380      composeElementAttributes(element);
13381      xml.enter(FHIR_NS, name);
13382      composeBackboneElements(element);
13383      if (element.hasActionResulting()) {
13384        for (Reference e : element.getActionResulting())
13385          composeReference("actionResulting", e);
13386      }
13387      if (element.hasProgress()) {
13388        for (Annotation e : element.getProgress())
13389          composeAnnotation("progress", e);
13390      }
13391      if (element.hasReference()) {
13392        composeReference("reference", element.getReference());
13393      }
13394      if (element.hasDetail()) {
13395        composeCarePlanCarePlanActivityDetailComponent("detail", element.getDetail());
13396      }
13397      composeElementClose(element);
13398      xml.exit(FHIR_NS, name);
13399    }
13400  }
13401
13402  protected void composeCarePlanCarePlanActivityDetailComponent(String name,
13403      CarePlan.CarePlanActivityDetailComponent element) throws IOException {
13404    if (element != null) {
13405      composeElementAttributes(element);
13406      xml.enter(FHIR_NS, name);
13407      composeBackboneElements(element);
13408      if (element.hasCategory()) {
13409        composeCodeableConcept("category", element.getCategory());
13410      }
13411      if (element.hasCode()) {
13412        composeCodeableConcept("code", element.getCode());
13413      }
13414      if (element.hasReasonCode()) {
13415        for (CodeableConcept e : element.getReasonCode())
13416          composeCodeableConcept("reasonCode", e);
13417      }
13418      if (element.hasReasonReference()) {
13419        for (Reference e : element.getReasonReference())
13420          composeReference("reasonReference", e);
13421      }
13422      if (element.hasGoal()) {
13423        for (Reference e : element.getGoal())
13424          composeReference("goal", e);
13425      }
13426      if (element.hasStatusElement())
13427        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanActivityStatusEnumFactory());
13428      if (element.hasStatusReason()) {
13429        composeCodeableConcept("statusReason", element.getStatusReason());
13430      }
13431      if (element.hasProhibitedElement()) {
13432        composeBoolean("prohibited", element.getProhibitedElement());
13433      }
13434      if (element.hasScheduled()) {
13435        composeType("scheduled", element.getScheduled());
13436      }
13437      if (element.hasLocation()) {
13438        composeReference("location", element.getLocation());
13439      }
13440      if (element.hasPerformer()) {
13441        for (Reference e : element.getPerformer())
13442          composeReference("performer", e);
13443      }
13444      if (element.hasProduct()) {
13445        composeType("product", element.getProduct());
13446      }
13447      if (element.hasDailyAmount()) {
13448        composeSimpleQuantity("dailyAmount", element.getDailyAmount());
13449      }
13450      if (element.hasQuantity()) {
13451        composeSimpleQuantity("quantity", element.getQuantity());
13452      }
13453      if (element.hasDescriptionElement()) {
13454        composeString("description", element.getDescriptionElement());
13455      }
13456      composeElementClose(element);
13457      xml.exit(FHIR_NS, name);
13458    }
13459  }
13460
13461  protected void composeClaim(String name, Claim element) throws IOException {
13462    if (element != null) {
13463      composeDomainResourceAttributes(element);
13464      xml.enter(FHIR_NS, name);
13465      composeDomainResourceElements(element);
13466      if (element.hasTypeElement())
13467        composeEnumeration("type", element.getTypeElement(), new Claim.ClaimTypeEnumFactory());
13468      if (element.hasIdentifier()) {
13469        for (Identifier e : element.getIdentifier())
13470          composeIdentifier("identifier", e);
13471      }
13472      if (element.hasRuleset()) {
13473        composeCoding("ruleset", element.getRuleset());
13474      }
13475      if (element.hasOriginalRuleset()) {
13476        composeCoding("originalRuleset", element.getOriginalRuleset());
13477      }
13478      if (element.hasCreatedElement()) {
13479        composeDateTime("created", element.getCreatedElement());
13480      }
13481      if (element.hasTarget()) {
13482        composeReference("target", element.getTarget());
13483      }
13484      if (element.hasProvider()) {
13485        composeReference("provider", element.getProvider());
13486      }
13487      if (element.hasOrganization()) {
13488        composeReference("organization", element.getOrganization());
13489      }
13490      if (element.hasUseElement())
13491        composeEnumeration("use", element.getUseElement(), new Claim.UseEnumFactory());
13492      if (element.hasPriority()) {
13493        composeCoding("priority", element.getPriority());
13494      }
13495      if (element.hasFundsReserve()) {
13496        composeCoding("fundsReserve", element.getFundsReserve());
13497      }
13498      if (element.hasEnterer()) {
13499        composeReference("enterer", element.getEnterer());
13500      }
13501      if (element.hasFacility()) {
13502        composeReference("facility", element.getFacility());
13503      }
13504      if (element.hasPrescription()) {
13505        composeReference("prescription", element.getPrescription());
13506      }
13507      if (element.hasOriginalPrescription()) {
13508        composeReference("originalPrescription", element.getOriginalPrescription());
13509      }
13510      if (element.hasPayee()) {
13511        composeClaimPayeeComponent("payee", element.getPayee());
13512      }
13513      if (element.hasReferral()) {
13514        composeReference("referral", element.getReferral());
13515      }
13516      if (element.hasDiagnosis()) {
13517        for (Claim.DiagnosisComponent e : element.getDiagnosis())
13518          composeClaimDiagnosisComponent("diagnosis", e);
13519      }
13520      if (element.hasCondition()) {
13521        for (Coding e : element.getCondition())
13522          composeCoding("condition", e);
13523      }
13524      if (element.hasPatient()) {
13525        composeReference("patient", element.getPatient());
13526      }
13527      if (element.hasCoverage()) {
13528        for (Claim.CoverageComponent e : element.getCoverage())
13529          composeClaimCoverageComponent("coverage", e);
13530      }
13531      if (element.hasException()) {
13532        for (Coding e : element.getException())
13533          composeCoding("exception", e);
13534      }
13535      if (element.hasSchoolElement()) {
13536        composeString("school", element.getSchoolElement());
13537      }
13538      if (element.hasAccidentElement()) {
13539        composeDate("accident", element.getAccidentElement());
13540      }
13541      if (element.hasAccidentType()) {
13542        composeCoding("accidentType", element.getAccidentType());
13543      }
13544      if (element.hasInterventionException()) {
13545        for (Coding e : element.getInterventionException())
13546          composeCoding("interventionException", e);
13547      }
13548      if (element.hasItem()) {
13549        for (Claim.ItemsComponent e : element.getItem())
13550          composeClaimItemsComponent("item", e);
13551      }
13552      if (element.hasAdditionalMaterials()) {
13553        for (Coding e : element.getAdditionalMaterials())
13554          composeCoding("additionalMaterials", e);
13555      }
13556      if (element.hasMissingTeeth()) {
13557        for (Claim.MissingTeethComponent e : element.getMissingTeeth())
13558          composeClaimMissingTeethComponent("missingTeeth", e);
13559      }
13560      composeElementClose(element);
13561      xml.exit(FHIR_NS, name);
13562    }
13563  }
13564
13565  protected void composeClaimPayeeComponent(String name, Claim.PayeeComponent element) throws IOException {
13566    if (element != null) {
13567      composeElementAttributes(element);
13568      xml.enter(FHIR_NS, name);
13569      composeBackboneElements(element);
13570      if (element.hasType()) {
13571        composeCoding("type", element.getType());
13572      }
13573      if (element.hasProvider()) {
13574        composeReference("provider", element.getProvider());
13575      }
13576      if (element.hasOrganization()) {
13577        composeReference("organization", element.getOrganization());
13578      }
13579      if (element.hasPerson()) {
13580        composeReference("person", element.getPerson());
13581      }
13582      composeElementClose(element);
13583      xml.exit(FHIR_NS, name);
13584    }
13585  }
13586
13587  protected void composeClaimDiagnosisComponent(String name, Claim.DiagnosisComponent element) throws IOException {
13588    if (element != null) {
13589      composeElementAttributes(element);
13590      xml.enter(FHIR_NS, name);
13591      composeBackboneElements(element);
13592      if (element.hasSequenceElement()) {
13593        composePositiveInt("sequence", element.getSequenceElement());
13594      }
13595      if (element.hasDiagnosis()) {
13596        composeCoding("diagnosis", element.getDiagnosis());
13597      }
13598      composeElementClose(element);
13599      xml.exit(FHIR_NS, name);
13600    }
13601  }
13602
13603  protected void composeClaimCoverageComponent(String name, Claim.CoverageComponent element) throws IOException {
13604    if (element != null) {
13605      composeElementAttributes(element);
13606      xml.enter(FHIR_NS, name);
13607      composeBackboneElements(element);
13608      if (element.hasSequenceElement()) {
13609        composePositiveInt("sequence", element.getSequenceElement());
13610      }
13611      if (element.hasFocalElement()) {
13612        composeBoolean("focal", element.getFocalElement());
13613      }
13614      if (element.hasCoverage()) {
13615        composeReference("coverage", element.getCoverage());
13616      }
13617      if (element.hasBusinessArrangementElement()) {
13618        composeString("businessArrangement", element.getBusinessArrangementElement());
13619      }
13620      if (element.hasRelationship()) {
13621        composeCoding("relationship", element.getRelationship());
13622      }
13623      if (element.hasPreAuthRef()) {
13624        for (StringType e : element.getPreAuthRef())
13625          composeString("preAuthRef", e);
13626      }
13627      if (element.hasClaimResponse()) {
13628        composeReference("claimResponse", element.getClaimResponse());
13629      }
13630      if (element.hasOriginalRuleset()) {
13631        composeCoding("originalRuleset", element.getOriginalRuleset());
13632      }
13633      composeElementClose(element);
13634      xml.exit(FHIR_NS, name);
13635    }
13636  }
13637
13638  protected void composeClaimItemsComponent(String name, Claim.ItemsComponent element) throws IOException {
13639    if (element != null) {
13640      composeElementAttributes(element);
13641      xml.enter(FHIR_NS, name);
13642      composeBackboneElements(element);
13643      if (element.hasSequenceElement()) {
13644        composePositiveInt("sequence", element.getSequenceElement());
13645      }
13646      if (element.hasType()) {
13647        composeCoding("type", element.getType());
13648      }
13649      if (element.hasProvider()) {
13650        composeReference("provider", element.getProvider());
13651      }
13652      if (element.hasDiagnosisLinkId()) {
13653        for (PositiveIntType e : element.getDiagnosisLinkId())
13654          composePositiveInt("diagnosisLinkId", e);
13655      }
13656      if (element.hasService()) {
13657        composeCoding("service", element.getService());
13658      }
13659      if (element.hasServiceDateElement()) {
13660        composeDate("serviceDate", element.getServiceDateElement());
13661      }
13662      if (element.hasQuantity()) {
13663        composeSimpleQuantity("quantity", element.getQuantity());
13664      }
13665      if (element.hasUnitPrice()) {
13666        composeMoney("unitPrice", element.getUnitPrice());
13667      }
13668      if (element.hasFactorElement()) {
13669        composeDecimal("factor", element.getFactorElement());
13670      }
13671      if (element.hasPointsElement()) {
13672        composeDecimal("points", element.getPointsElement());
13673      }
13674      if (element.hasNet()) {
13675        composeMoney("net", element.getNet());
13676      }
13677      if (element.hasUdi()) {
13678        composeCoding("udi", element.getUdi());
13679      }
13680      if (element.hasBodySite()) {
13681        composeCoding("bodySite", element.getBodySite());
13682      }
13683      if (element.hasSubSite()) {
13684        for (Coding e : element.getSubSite())
13685          composeCoding("subSite", e);
13686      }
13687      if (element.hasModifier()) {
13688        for (Coding e : element.getModifier())
13689          composeCoding("modifier", e);
13690      }
13691      if (element.hasDetail()) {
13692        for (Claim.DetailComponent e : element.getDetail())
13693          composeClaimDetailComponent("detail", e);
13694      }
13695      if (element.hasProsthesis()) {
13696        composeClaimProsthesisComponent("prosthesis", element.getProsthesis());
13697      }
13698      composeElementClose(element);
13699      xml.exit(FHIR_NS, name);
13700    }
13701  }
13702
13703  protected void composeClaimDetailComponent(String name, Claim.DetailComponent element) throws IOException {
13704    if (element != null) {
13705      composeElementAttributes(element);
13706      xml.enter(FHIR_NS, name);
13707      composeBackboneElements(element);
13708      if (element.hasSequenceElement()) {
13709        composePositiveInt("sequence", element.getSequenceElement());
13710      }
13711      if (element.hasType()) {
13712        composeCoding("type", element.getType());
13713      }
13714      if (element.hasService()) {
13715        composeCoding("service", element.getService());
13716      }
13717      if (element.hasQuantity()) {
13718        composeSimpleQuantity("quantity", element.getQuantity());
13719      }
13720      if (element.hasUnitPrice()) {
13721        composeMoney("unitPrice", element.getUnitPrice());
13722      }
13723      if (element.hasFactorElement()) {
13724        composeDecimal("factor", element.getFactorElement());
13725      }
13726      if (element.hasPointsElement()) {
13727        composeDecimal("points", element.getPointsElement());
13728      }
13729      if (element.hasNet()) {
13730        composeMoney("net", element.getNet());
13731      }
13732      if (element.hasUdi()) {
13733        composeCoding("udi", element.getUdi());
13734      }
13735      if (element.hasSubDetail()) {
13736        for (Claim.SubDetailComponent e : element.getSubDetail())
13737          composeClaimSubDetailComponent("subDetail", e);
13738      }
13739      composeElementClose(element);
13740      xml.exit(FHIR_NS, name);
13741    }
13742  }
13743
13744  protected void composeClaimSubDetailComponent(String name, Claim.SubDetailComponent element) throws IOException {
13745    if (element != null) {
13746      composeElementAttributes(element);
13747      xml.enter(FHIR_NS, name);
13748      composeBackboneElements(element);
13749      if (element.hasSequenceElement()) {
13750        composePositiveInt("sequence", element.getSequenceElement());
13751      }
13752      if (element.hasType()) {
13753        composeCoding("type", element.getType());
13754      }
13755      if (element.hasService()) {
13756        composeCoding("service", element.getService());
13757      }
13758      if (element.hasQuantity()) {
13759        composeSimpleQuantity("quantity", element.getQuantity());
13760      }
13761      if (element.hasUnitPrice()) {
13762        composeMoney("unitPrice", element.getUnitPrice());
13763      }
13764      if (element.hasFactorElement()) {
13765        composeDecimal("factor", element.getFactorElement());
13766      }
13767      if (element.hasPointsElement()) {
13768        composeDecimal("points", element.getPointsElement());
13769      }
13770      if (element.hasNet()) {
13771        composeMoney("net", element.getNet());
13772      }
13773      if (element.hasUdi()) {
13774        composeCoding("udi", element.getUdi());
13775      }
13776      composeElementClose(element);
13777      xml.exit(FHIR_NS, name);
13778    }
13779  }
13780
13781  protected void composeClaimProsthesisComponent(String name, Claim.ProsthesisComponent element) throws IOException {
13782    if (element != null) {
13783      composeElementAttributes(element);
13784      xml.enter(FHIR_NS, name);
13785      composeBackboneElements(element);
13786      if (element.hasInitialElement()) {
13787        composeBoolean("initial", element.getInitialElement());
13788      }
13789      if (element.hasPriorDateElement()) {
13790        composeDate("priorDate", element.getPriorDateElement());
13791      }
13792      if (element.hasPriorMaterial()) {
13793        composeCoding("priorMaterial", element.getPriorMaterial());
13794      }
13795      composeElementClose(element);
13796      xml.exit(FHIR_NS, name);
13797    }
13798  }
13799
13800  protected void composeClaimMissingTeethComponent(String name, Claim.MissingTeethComponent element)
13801      throws IOException {
13802    if (element != null) {
13803      composeElementAttributes(element);
13804      xml.enter(FHIR_NS, name);
13805      composeBackboneElements(element);
13806      if (element.hasTooth()) {
13807        composeCoding("tooth", element.getTooth());
13808      }
13809      if (element.hasReason()) {
13810        composeCoding("reason", element.getReason());
13811      }
13812      if (element.hasExtractionDateElement()) {
13813        composeDate("extractionDate", element.getExtractionDateElement());
13814      }
13815      composeElementClose(element);
13816      xml.exit(FHIR_NS, name);
13817    }
13818  }
13819
13820  protected void composeClaimResponse(String name, ClaimResponse element) throws IOException {
13821    if (element != null) {
13822      composeDomainResourceAttributes(element);
13823      xml.enter(FHIR_NS, name);
13824      composeDomainResourceElements(element);
13825      if (element.hasIdentifier()) {
13826        for (Identifier e : element.getIdentifier())
13827          composeIdentifier("identifier", e);
13828      }
13829      if (element.hasRequest()) {
13830        composeReference("request", element.getRequest());
13831      }
13832      if (element.hasRuleset()) {
13833        composeCoding("ruleset", element.getRuleset());
13834      }
13835      if (element.hasOriginalRuleset()) {
13836        composeCoding("originalRuleset", element.getOriginalRuleset());
13837      }
13838      if (element.hasCreatedElement()) {
13839        composeDateTime("created", element.getCreatedElement());
13840      }
13841      if (element.hasOrganization()) {
13842        composeReference("organization", element.getOrganization());
13843      }
13844      if (element.hasRequestProvider()) {
13845        composeReference("requestProvider", element.getRequestProvider());
13846      }
13847      if (element.hasRequestOrganization()) {
13848        composeReference("requestOrganization", element.getRequestOrganization());
13849      }
13850      if (element.hasOutcomeElement())
13851        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
13852      if (element.hasDispositionElement()) {
13853        composeString("disposition", element.getDispositionElement());
13854      }
13855      if (element.hasPayeeType()) {
13856        composeCoding("payeeType", element.getPayeeType());
13857      }
13858      if (element.hasItem()) {
13859        for (ClaimResponse.ItemsComponent e : element.getItem())
13860          composeClaimResponseItemsComponent("item", e);
13861      }
13862      if (element.hasAddItem()) {
13863        for (ClaimResponse.AddedItemComponent e : element.getAddItem())
13864          composeClaimResponseAddedItemComponent("addItem", e);
13865      }
13866      if (element.hasError()) {
13867        for (ClaimResponse.ErrorsComponent e : element.getError())
13868          composeClaimResponseErrorsComponent("error", e);
13869      }
13870      if (element.hasTotalCost()) {
13871        composeMoney("totalCost", element.getTotalCost());
13872      }
13873      if (element.hasUnallocDeductable()) {
13874        composeMoney("unallocDeductable", element.getUnallocDeductable());
13875      }
13876      if (element.hasTotalBenefit()) {
13877        composeMoney("totalBenefit", element.getTotalBenefit());
13878      }
13879      if (element.hasPaymentAdjustment()) {
13880        composeMoney("paymentAdjustment", element.getPaymentAdjustment());
13881      }
13882      if (element.hasPaymentAdjustmentReason()) {
13883        composeCoding("paymentAdjustmentReason", element.getPaymentAdjustmentReason());
13884      }
13885      if (element.hasPaymentDateElement()) {
13886        composeDate("paymentDate", element.getPaymentDateElement());
13887      }
13888      if (element.hasPaymentAmount()) {
13889        composeMoney("paymentAmount", element.getPaymentAmount());
13890      }
13891      if (element.hasPaymentRef()) {
13892        composeIdentifier("paymentRef", element.getPaymentRef());
13893      }
13894      if (element.hasReserved()) {
13895        composeCoding("reserved", element.getReserved());
13896      }
13897      if (element.hasForm()) {
13898        composeCoding("form", element.getForm());
13899      }
13900      if (element.hasNote()) {
13901        for (ClaimResponse.NotesComponent e : element.getNote())
13902          composeClaimResponseNotesComponent("note", e);
13903      }
13904      if (element.hasCoverage()) {
13905        for (ClaimResponse.CoverageComponent e : element.getCoverage())
13906          composeClaimResponseCoverageComponent("coverage", e);
13907      }
13908      composeElementClose(element);
13909      xml.exit(FHIR_NS, name);
13910    }
13911  }
13912
13913  protected void composeClaimResponseItemsComponent(String name, ClaimResponse.ItemsComponent element)
13914      throws IOException {
13915    if (element != null) {
13916      composeElementAttributes(element);
13917      xml.enter(FHIR_NS, name);
13918      composeBackboneElements(element);
13919      if (element.hasSequenceLinkIdElement()) {
13920        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
13921      }
13922      if (element.hasNoteNumber()) {
13923        for (PositiveIntType e : element.getNoteNumber())
13924          composePositiveInt("noteNumber", e);
13925      }
13926      if (element.hasAdjudication()) {
13927        for (ClaimResponse.ItemAdjudicationComponent e : element.getAdjudication())
13928          composeClaimResponseItemAdjudicationComponent("adjudication", e);
13929      }
13930      if (element.hasDetail()) {
13931        for (ClaimResponse.ItemDetailComponent e : element.getDetail())
13932          composeClaimResponseItemDetailComponent("detail", e);
13933      }
13934      composeElementClose(element);
13935      xml.exit(FHIR_NS, name);
13936    }
13937  }
13938
13939  protected void composeClaimResponseItemAdjudicationComponent(String name,
13940      ClaimResponse.ItemAdjudicationComponent element) throws IOException {
13941    if (element != null) {
13942      composeElementAttributes(element);
13943      xml.enter(FHIR_NS, name);
13944      composeBackboneElements(element);
13945      if (element.hasCode()) {
13946        composeCoding("code", element.getCode());
13947      }
13948      if (element.hasAmount()) {
13949        composeMoney("amount", element.getAmount());
13950      }
13951      if (element.hasValueElement()) {
13952        composeDecimal("value", element.getValueElement());
13953      }
13954      composeElementClose(element);
13955      xml.exit(FHIR_NS, name);
13956    }
13957  }
13958
13959  protected void composeClaimResponseItemDetailComponent(String name, ClaimResponse.ItemDetailComponent element)
13960      throws IOException {
13961    if (element != null) {
13962      composeElementAttributes(element);
13963      xml.enter(FHIR_NS, name);
13964      composeBackboneElements(element);
13965      if (element.hasSequenceLinkIdElement()) {
13966        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
13967      }
13968      if (element.hasAdjudication()) {
13969        for (ClaimResponse.DetailAdjudicationComponent e : element.getAdjudication())
13970          composeClaimResponseDetailAdjudicationComponent("adjudication", e);
13971      }
13972      if (element.hasSubDetail()) {
13973        for (ClaimResponse.SubDetailComponent e : element.getSubDetail())
13974          composeClaimResponseSubDetailComponent("subDetail", e);
13975      }
13976      composeElementClose(element);
13977      xml.exit(FHIR_NS, name);
13978    }
13979  }
13980
13981  protected void composeClaimResponseDetailAdjudicationComponent(String name,
13982      ClaimResponse.DetailAdjudicationComponent element) throws IOException {
13983    if (element != null) {
13984      composeElementAttributes(element);
13985      xml.enter(FHIR_NS, name);
13986      composeBackboneElements(element);
13987      if (element.hasCode()) {
13988        composeCoding("code", element.getCode());
13989      }
13990      if (element.hasAmount()) {
13991        composeMoney("amount", element.getAmount());
13992      }
13993      if (element.hasValueElement()) {
13994        composeDecimal("value", element.getValueElement());
13995      }
13996      composeElementClose(element);
13997      xml.exit(FHIR_NS, name);
13998    }
13999  }
14000
14001  protected void composeClaimResponseSubDetailComponent(String name, ClaimResponse.SubDetailComponent element)
14002      throws IOException {
14003    if (element != null) {
14004      composeElementAttributes(element);
14005      xml.enter(FHIR_NS, name);
14006      composeBackboneElements(element);
14007      if (element.hasSequenceLinkIdElement()) {
14008        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
14009      }
14010      if (element.hasAdjudication()) {
14011        for (ClaimResponse.SubdetailAdjudicationComponent e : element.getAdjudication())
14012          composeClaimResponseSubdetailAdjudicationComponent("adjudication", e);
14013      }
14014      composeElementClose(element);
14015      xml.exit(FHIR_NS, name);
14016    }
14017  }
14018
14019  protected void composeClaimResponseSubdetailAdjudicationComponent(String name,
14020      ClaimResponse.SubdetailAdjudicationComponent element) throws IOException {
14021    if (element != null) {
14022      composeElementAttributes(element);
14023      xml.enter(FHIR_NS, name);
14024      composeBackboneElements(element);
14025      if (element.hasCode()) {
14026        composeCoding("code", element.getCode());
14027      }
14028      if (element.hasAmount()) {
14029        composeMoney("amount", element.getAmount());
14030      }
14031      if (element.hasValueElement()) {
14032        composeDecimal("value", element.getValueElement());
14033      }
14034      composeElementClose(element);
14035      xml.exit(FHIR_NS, name);
14036    }
14037  }
14038
14039  protected void composeClaimResponseAddedItemComponent(String name, ClaimResponse.AddedItemComponent element)
14040      throws IOException {
14041    if (element != null) {
14042      composeElementAttributes(element);
14043      xml.enter(FHIR_NS, name);
14044      composeBackboneElements(element);
14045      if (element.hasSequenceLinkId()) {
14046        for (PositiveIntType e : element.getSequenceLinkId())
14047          composePositiveInt("sequenceLinkId", e);
14048      }
14049      if (element.hasService()) {
14050        composeCoding("service", element.getService());
14051      }
14052      if (element.hasFee()) {
14053        composeMoney("fee", element.getFee());
14054      }
14055      if (element.hasNoteNumberLinkId()) {
14056        for (PositiveIntType e : element.getNoteNumberLinkId())
14057          composePositiveInt("noteNumberLinkId", e);
14058      }
14059      if (element.hasAdjudication()) {
14060        for (ClaimResponse.AddedItemAdjudicationComponent e : element.getAdjudication())
14061          composeClaimResponseAddedItemAdjudicationComponent("adjudication", e);
14062      }
14063      if (element.hasDetail()) {
14064        for (ClaimResponse.AddedItemsDetailComponent e : element.getDetail())
14065          composeClaimResponseAddedItemsDetailComponent("detail", e);
14066      }
14067      composeElementClose(element);
14068      xml.exit(FHIR_NS, name);
14069    }
14070  }
14071
14072  protected void composeClaimResponseAddedItemAdjudicationComponent(String name,
14073      ClaimResponse.AddedItemAdjudicationComponent element) throws IOException {
14074    if (element != null) {
14075      composeElementAttributes(element);
14076      xml.enter(FHIR_NS, name);
14077      composeBackboneElements(element);
14078      if (element.hasCode()) {
14079        composeCoding("code", element.getCode());
14080      }
14081      if (element.hasAmount()) {
14082        composeMoney("amount", element.getAmount());
14083      }
14084      if (element.hasValueElement()) {
14085        composeDecimal("value", element.getValueElement());
14086      }
14087      composeElementClose(element);
14088      xml.exit(FHIR_NS, name);
14089    }
14090  }
14091
14092  protected void composeClaimResponseAddedItemsDetailComponent(String name,
14093      ClaimResponse.AddedItemsDetailComponent element) throws IOException {
14094    if (element != null) {
14095      composeElementAttributes(element);
14096      xml.enter(FHIR_NS, name);
14097      composeBackboneElements(element);
14098      if (element.hasService()) {
14099        composeCoding("service", element.getService());
14100      }
14101      if (element.hasFee()) {
14102        composeMoney("fee", element.getFee());
14103      }
14104      if (element.hasAdjudication()) {
14105        for (ClaimResponse.AddedItemDetailAdjudicationComponent e : element.getAdjudication())
14106          composeClaimResponseAddedItemDetailAdjudicationComponent("adjudication", e);
14107      }
14108      composeElementClose(element);
14109      xml.exit(FHIR_NS, name);
14110    }
14111  }
14112
14113  protected void composeClaimResponseAddedItemDetailAdjudicationComponent(String name,
14114      ClaimResponse.AddedItemDetailAdjudicationComponent element) throws IOException {
14115    if (element != null) {
14116      composeElementAttributes(element);
14117      xml.enter(FHIR_NS, name);
14118      composeBackboneElements(element);
14119      if (element.hasCode()) {
14120        composeCoding("code", element.getCode());
14121      }
14122      if (element.hasAmount()) {
14123        composeMoney("amount", element.getAmount());
14124      }
14125      if (element.hasValueElement()) {
14126        composeDecimal("value", element.getValueElement());
14127      }
14128      composeElementClose(element);
14129      xml.exit(FHIR_NS, name);
14130    }
14131  }
14132
14133  protected void composeClaimResponseErrorsComponent(String name, ClaimResponse.ErrorsComponent element)
14134      throws IOException {
14135    if (element != null) {
14136      composeElementAttributes(element);
14137      xml.enter(FHIR_NS, name);
14138      composeBackboneElements(element);
14139      if (element.hasSequenceLinkIdElement()) {
14140        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
14141      }
14142      if (element.hasDetailSequenceLinkIdElement()) {
14143        composePositiveInt("detailSequenceLinkId", element.getDetailSequenceLinkIdElement());
14144      }
14145      if (element.hasSubdetailSequenceLinkIdElement()) {
14146        composePositiveInt("subdetailSequenceLinkId", element.getSubdetailSequenceLinkIdElement());
14147      }
14148      if (element.hasCode()) {
14149        composeCoding("code", element.getCode());
14150      }
14151      composeElementClose(element);
14152      xml.exit(FHIR_NS, name);
14153    }
14154  }
14155
14156  protected void composeClaimResponseNotesComponent(String name, ClaimResponse.NotesComponent element)
14157      throws IOException {
14158    if (element != null) {
14159      composeElementAttributes(element);
14160      xml.enter(FHIR_NS, name);
14161      composeBackboneElements(element);
14162      if (element.hasNumberElement()) {
14163        composePositiveInt("number", element.getNumberElement());
14164      }
14165      if (element.hasType()) {
14166        composeCoding("type", element.getType());
14167      }
14168      if (element.hasTextElement()) {
14169        composeString("text", element.getTextElement());
14170      }
14171      composeElementClose(element);
14172      xml.exit(FHIR_NS, name);
14173    }
14174  }
14175
14176  protected void composeClaimResponseCoverageComponent(String name, ClaimResponse.CoverageComponent element)
14177      throws IOException {
14178    if (element != null) {
14179      composeElementAttributes(element);
14180      xml.enter(FHIR_NS, name);
14181      composeBackboneElements(element);
14182      if (element.hasSequenceElement()) {
14183        composePositiveInt("sequence", element.getSequenceElement());
14184      }
14185      if (element.hasFocalElement()) {
14186        composeBoolean("focal", element.getFocalElement());
14187      }
14188      if (element.hasCoverage()) {
14189        composeReference("coverage", element.getCoverage());
14190      }
14191      if (element.hasBusinessArrangementElement()) {
14192        composeString("businessArrangement", element.getBusinessArrangementElement());
14193      }
14194      if (element.hasRelationship()) {
14195        composeCoding("relationship", element.getRelationship());
14196      }
14197      if (element.hasPreAuthRef()) {
14198        for (StringType e : element.getPreAuthRef())
14199          composeString("preAuthRef", e);
14200      }
14201      if (element.hasClaimResponse()) {
14202        composeReference("claimResponse", element.getClaimResponse());
14203      }
14204      if (element.hasOriginalRuleset()) {
14205        composeCoding("originalRuleset", element.getOriginalRuleset());
14206      }
14207      composeElementClose(element);
14208      xml.exit(FHIR_NS, name);
14209    }
14210  }
14211
14212  protected void composeClinicalImpression(String name, ClinicalImpression element) throws IOException {
14213    if (element != null) {
14214      composeDomainResourceAttributes(element);
14215      xml.enter(FHIR_NS, name);
14216      composeDomainResourceElements(element);
14217      if (element.hasPatient()) {
14218        composeReference("patient", element.getPatient());
14219      }
14220      if (element.hasAssessor()) {
14221        composeReference("assessor", element.getAssessor());
14222      }
14223      if (element.hasStatusElement())
14224        composeEnumeration("status", element.getStatusElement(),
14225            new ClinicalImpression.ClinicalImpressionStatusEnumFactory());
14226      if (element.hasDateElement()) {
14227        composeDateTime("date", element.getDateElement());
14228      }
14229      if (element.hasDescriptionElement()) {
14230        composeString("description", element.getDescriptionElement());
14231      }
14232      if (element.hasPrevious()) {
14233        composeReference("previous", element.getPrevious());
14234      }
14235      if (element.hasProblem()) {
14236        for (Reference e : element.getProblem())
14237          composeReference("problem", e);
14238      }
14239      if (element.hasTrigger()) {
14240        composeType("trigger", element.getTrigger());
14241      }
14242      if (element.hasInvestigations()) {
14243        for (ClinicalImpression.ClinicalImpressionInvestigationsComponent e : element.getInvestigations())
14244          composeClinicalImpressionClinicalImpressionInvestigationsComponent("investigations", e);
14245      }
14246      if (element.hasProtocolElement()) {
14247        composeUri("protocol", element.getProtocolElement());
14248      }
14249      if (element.hasSummaryElement()) {
14250        composeString("summary", element.getSummaryElement());
14251      }
14252      if (element.hasFinding()) {
14253        for (ClinicalImpression.ClinicalImpressionFindingComponent e : element.getFinding())
14254          composeClinicalImpressionClinicalImpressionFindingComponent("finding", e);
14255      }
14256      if (element.hasResolved()) {
14257        for (CodeableConcept e : element.getResolved())
14258          composeCodeableConcept("resolved", e);
14259      }
14260      if (element.hasRuledOut()) {
14261        for (ClinicalImpression.ClinicalImpressionRuledOutComponent e : element.getRuledOut())
14262          composeClinicalImpressionClinicalImpressionRuledOutComponent("ruledOut", e);
14263      }
14264      if (element.hasPrognosisElement()) {
14265        composeString("prognosis", element.getPrognosisElement());
14266      }
14267      if (element.hasPlan()) {
14268        for (Reference e : element.getPlan())
14269          composeReference("plan", e);
14270      }
14271      if (element.hasAction()) {
14272        for (Reference e : element.getAction())
14273          composeReference("action", e);
14274      }
14275      composeElementClose(element);
14276      xml.exit(FHIR_NS, name);
14277    }
14278  }
14279
14280  protected void composeClinicalImpressionClinicalImpressionInvestigationsComponent(String name,
14281      ClinicalImpression.ClinicalImpressionInvestigationsComponent element) throws IOException {
14282    if (element != null) {
14283      composeElementAttributes(element);
14284      xml.enter(FHIR_NS, name);
14285      composeBackboneElements(element);
14286      if (element.hasCode()) {
14287        composeCodeableConcept("code", element.getCode());
14288      }
14289      if (element.hasItem()) {
14290        for (Reference e : element.getItem())
14291          composeReference("item", e);
14292      }
14293      composeElementClose(element);
14294      xml.exit(FHIR_NS, name);
14295    }
14296  }
14297
14298  protected void composeClinicalImpressionClinicalImpressionFindingComponent(String name,
14299      ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
14300    if (element != null) {
14301      composeElementAttributes(element);
14302      xml.enter(FHIR_NS, name);
14303      composeBackboneElements(element);
14304      if (element.hasItem()) {
14305        composeCodeableConcept("item", element.getItem());
14306      }
14307      if (element.hasCauseElement()) {
14308        composeString("cause", element.getCauseElement());
14309      }
14310      composeElementClose(element);
14311      xml.exit(FHIR_NS, name);
14312    }
14313  }
14314
14315  protected void composeClinicalImpressionClinicalImpressionRuledOutComponent(String name,
14316      ClinicalImpression.ClinicalImpressionRuledOutComponent element) throws IOException {
14317    if (element != null) {
14318      composeElementAttributes(element);
14319      xml.enter(FHIR_NS, name);
14320      composeBackboneElements(element);
14321      if (element.hasItem()) {
14322        composeCodeableConcept("item", element.getItem());
14323      }
14324      if (element.hasReasonElement()) {
14325        composeString("reason", element.getReasonElement());
14326      }
14327      composeElementClose(element);
14328      xml.exit(FHIR_NS, name);
14329    }
14330  }
14331
14332  protected void composeCommunication(String name, Communication element) throws IOException {
14333    if (element != null) {
14334      composeDomainResourceAttributes(element);
14335      xml.enter(FHIR_NS, name);
14336      composeDomainResourceElements(element);
14337      if (element.hasIdentifier()) {
14338        for (Identifier e : element.getIdentifier())
14339          composeIdentifier("identifier", e);
14340      }
14341      if (element.hasCategory()) {
14342        composeCodeableConcept("category", element.getCategory());
14343      }
14344      if (element.hasSender()) {
14345        composeReference("sender", element.getSender());
14346      }
14347      if (element.hasRecipient()) {
14348        for (Reference e : element.getRecipient())
14349          composeReference("recipient", e);
14350      }
14351      if (element.hasPayload()) {
14352        for (Communication.CommunicationPayloadComponent e : element.getPayload())
14353          composeCommunicationCommunicationPayloadComponent("payload", e);
14354      }
14355      if (element.hasMedium()) {
14356        for (CodeableConcept e : element.getMedium())
14357          composeCodeableConcept("medium", e);
14358      }
14359      if (element.hasStatusElement())
14360        composeEnumeration("status", element.getStatusElement(), new Communication.CommunicationStatusEnumFactory());
14361      if (element.hasEncounter()) {
14362        composeReference("encounter", element.getEncounter());
14363      }
14364      if (element.hasSentElement()) {
14365        composeDateTime("sent", element.getSentElement());
14366      }
14367      if (element.hasReceivedElement()) {
14368        composeDateTime("received", element.getReceivedElement());
14369      }
14370      if (element.hasReason()) {
14371        for (CodeableConcept e : element.getReason())
14372          composeCodeableConcept("reason", e);
14373      }
14374      if (element.hasSubject()) {
14375        composeReference("subject", element.getSubject());
14376      }
14377      if (element.hasRequestDetail()) {
14378        composeReference("requestDetail", element.getRequestDetail());
14379      }
14380      composeElementClose(element);
14381      xml.exit(FHIR_NS, name);
14382    }
14383  }
14384
14385  protected void composeCommunicationCommunicationPayloadComponent(String name,
14386      Communication.CommunicationPayloadComponent element) throws IOException {
14387    if (element != null) {
14388      composeElementAttributes(element);
14389      xml.enter(FHIR_NS, name);
14390      composeBackboneElements(element);
14391      if (element.hasContent()) {
14392        composeType("content", element.getContent());
14393      }
14394      composeElementClose(element);
14395      xml.exit(FHIR_NS, name);
14396    }
14397  }
14398
14399  protected void composeCommunicationRequest(String name, CommunicationRequest element) throws IOException {
14400    if (element != null) {
14401      composeDomainResourceAttributes(element);
14402      xml.enter(FHIR_NS, name);
14403      composeDomainResourceElements(element);
14404      if (element.hasIdentifier()) {
14405        for (Identifier e : element.getIdentifier())
14406          composeIdentifier("identifier", e);
14407      }
14408      if (element.hasCategory()) {
14409        composeCodeableConcept("category", element.getCategory());
14410      }
14411      if (element.hasSender()) {
14412        composeReference("sender", element.getSender());
14413      }
14414      if (element.hasRecipient()) {
14415        for (Reference e : element.getRecipient())
14416          composeReference("recipient", e);
14417      }
14418      if (element.hasPayload()) {
14419        for (CommunicationRequest.CommunicationRequestPayloadComponent e : element.getPayload())
14420          composeCommunicationRequestCommunicationRequestPayloadComponent("payload", e);
14421      }
14422      if (element.hasMedium()) {
14423        for (CodeableConcept e : element.getMedium())
14424          composeCodeableConcept("medium", e);
14425      }
14426      if (element.hasRequester()) {
14427        composeReference("requester", element.getRequester());
14428      }
14429      if (element.hasStatusElement())
14430        composeEnumeration("status", element.getStatusElement(),
14431            new CommunicationRequest.CommunicationRequestStatusEnumFactory());
14432      if (element.hasEncounter()) {
14433        composeReference("encounter", element.getEncounter());
14434      }
14435      if (element.hasScheduled()) {
14436        composeType("scheduled", element.getScheduled());
14437      }
14438      if (element.hasReason()) {
14439        for (CodeableConcept e : element.getReason())
14440          composeCodeableConcept("reason", e);
14441      }
14442      if (element.hasRequestedOnElement()) {
14443        composeDateTime("requestedOn", element.getRequestedOnElement());
14444      }
14445      if (element.hasSubject()) {
14446        composeReference("subject", element.getSubject());
14447      }
14448      if (element.hasPriority()) {
14449        composeCodeableConcept("priority", element.getPriority());
14450      }
14451      composeElementClose(element);
14452      xml.exit(FHIR_NS, name);
14453    }
14454  }
14455
14456  protected void composeCommunicationRequestCommunicationRequestPayloadComponent(String name,
14457      CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
14458    if (element != null) {
14459      composeElementAttributes(element);
14460      xml.enter(FHIR_NS, name);
14461      composeBackboneElements(element);
14462      if (element.hasContent()) {
14463        composeType("content", element.getContent());
14464      }
14465      composeElementClose(element);
14466      xml.exit(FHIR_NS, name);
14467    }
14468  }
14469
14470  protected void composeComposition(String name, Composition element) throws IOException {
14471    if (element != null) {
14472      composeDomainResourceAttributes(element);
14473      xml.enter(FHIR_NS, name);
14474      composeDomainResourceElements(element);
14475      if (element.hasIdentifier()) {
14476        composeIdentifier("identifier", element.getIdentifier());
14477      }
14478      if (element.hasDateElement()) {
14479        composeDateTime("date", element.getDateElement());
14480      }
14481      if (element.hasType()) {
14482        composeCodeableConcept("type", element.getType());
14483      }
14484      if (element.hasClass_()) {
14485        composeCodeableConcept("class", element.getClass_());
14486      }
14487      if (element.hasTitleElement()) {
14488        composeString("title", element.getTitleElement());
14489      }
14490      if (element.hasStatusElement())
14491        composeEnumeration("status", element.getStatusElement(), new Composition.CompositionStatusEnumFactory());
14492      if (element.hasConfidentialityElement()) {
14493        composeCode("confidentiality", element.getConfidentialityElement());
14494      }
14495      if (element.hasSubject()) {
14496        composeReference("subject", element.getSubject());
14497      }
14498      if (element.hasAuthor()) {
14499        for (Reference e : element.getAuthor())
14500          composeReference("author", e);
14501      }
14502      if (element.hasAttester()) {
14503        for (Composition.CompositionAttesterComponent e : element.getAttester())
14504          composeCompositionCompositionAttesterComponent("attester", e);
14505      }
14506      if (element.hasCustodian()) {
14507        composeReference("custodian", element.getCustodian());
14508      }
14509      if (element.hasEvent()) {
14510        for (Composition.CompositionEventComponent e : element.getEvent())
14511          composeCompositionCompositionEventComponent("event", e);
14512      }
14513      if (element.hasEncounter()) {
14514        composeReference("encounter", element.getEncounter());
14515      }
14516      if (element.hasSection()) {
14517        for (Composition.SectionComponent e : element.getSection())
14518          composeCompositionSectionComponent("section", e);
14519      }
14520      composeElementClose(element);
14521      xml.exit(FHIR_NS, name);
14522    }
14523  }
14524
14525  protected void composeCompositionCompositionAttesterComponent(String name,
14526      Composition.CompositionAttesterComponent element) throws IOException {
14527    if (element != null) {
14528      composeElementAttributes(element);
14529      xml.enter(FHIR_NS, name);
14530      composeBackboneElements(element);
14531      if (element.hasMode())
14532        for (Enumeration<Composition.CompositionAttestationMode> e : element.getMode())
14533          composeEnumeration("mode", e, new Composition.CompositionAttestationModeEnumFactory());
14534      if (element.hasTimeElement()) {
14535        composeDateTime("time", element.getTimeElement());
14536      }
14537      if (element.hasParty()) {
14538        composeReference("party", element.getParty());
14539      }
14540      composeElementClose(element);
14541      xml.exit(FHIR_NS, name);
14542    }
14543  }
14544
14545  protected void composeCompositionCompositionEventComponent(String name, Composition.CompositionEventComponent element)
14546      throws IOException {
14547    if (element != null) {
14548      composeElementAttributes(element);
14549      xml.enter(FHIR_NS, name);
14550      composeBackboneElements(element);
14551      if (element.hasCode()) {
14552        for (CodeableConcept e : element.getCode())
14553          composeCodeableConcept("code", e);
14554      }
14555      if (element.hasPeriod()) {
14556        composePeriod("period", element.getPeriod());
14557      }
14558      if (element.hasDetail()) {
14559        for (Reference e : element.getDetail())
14560          composeReference("detail", e);
14561      }
14562      composeElementClose(element);
14563      xml.exit(FHIR_NS, name);
14564    }
14565  }
14566
14567  protected void composeCompositionSectionComponent(String name, Composition.SectionComponent element)
14568      throws IOException {
14569    if (element != null) {
14570      composeElementAttributes(element);
14571      xml.enter(FHIR_NS, name);
14572      composeBackboneElements(element);
14573      if (element.hasTitleElement()) {
14574        composeString("title", element.getTitleElement());
14575      }
14576      if (element.hasCode()) {
14577        composeCodeableConcept("code", element.getCode());
14578      }
14579      if (element.hasText()) {
14580        composeNarrative("text", element.getText());
14581      }
14582      if (element.hasModeElement()) {
14583        composeCode("mode", element.getModeElement());
14584      }
14585      if (element.hasOrderedBy()) {
14586        composeCodeableConcept("orderedBy", element.getOrderedBy());
14587      }
14588      if (element.hasEntry()) {
14589        for (Reference e : element.getEntry())
14590          composeReference("entry", e);
14591      }
14592      if (element.hasEmptyReason()) {
14593        composeCodeableConcept("emptyReason", element.getEmptyReason());
14594      }
14595      if (element.hasSection()) {
14596        for (Composition.SectionComponent e : element.getSection())
14597          composeCompositionSectionComponent("section", e);
14598      }
14599      composeElementClose(element);
14600      xml.exit(FHIR_NS, name);
14601    }
14602  }
14603
14604  protected void composeConceptMap(String name, ConceptMap element) throws IOException {
14605    if (element != null) {
14606      composeDomainResourceAttributes(element);
14607      xml.enter(FHIR_NS, name);
14608      composeDomainResourceElements(element);
14609      if (element.hasUrlElement()) {
14610        composeUri("url", element.getUrlElement());
14611      }
14612      if (element.hasIdentifier()) {
14613        composeIdentifier("identifier", element.getIdentifier());
14614      }
14615      if (element.hasVersionElement()) {
14616        composeString("version", element.getVersionElement());
14617      }
14618      if (element.hasNameElement()) {
14619        composeString("name", element.getNameElement());
14620      }
14621      if (element.hasStatusElement())
14622        composeEnumeration("status", element.getStatusElement(),
14623            new Enumerations.ConformanceResourceStatusEnumFactory());
14624      if (element.hasExperimentalElement()) {
14625        composeBoolean("experimental", element.getExperimentalElement());
14626      }
14627      if (element.hasPublisherElement()) {
14628        composeString("publisher", element.getPublisherElement());
14629      }
14630      if (element.hasContact()) {
14631        for (ConceptMap.ConceptMapContactComponent e : element.getContact())
14632          composeConceptMapConceptMapContactComponent("contact", e);
14633      }
14634      if (element.hasDateElement()) {
14635        composeDateTime("date", element.getDateElement());
14636      }
14637      if (element.hasDescriptionElement()) {
14638        composeString("description", element.getDescriptionElement());
14639      }
14640      if (element.hasUseContext()) {
14641        for (CodeableConcept e : element.getUseContext())
14642          composeCodeableConcept("useContext", e);
14643      }
14644      if (element.hasRequirementsElement()) {
14645        composeString("requirements", element.getRequirementsElement());
14646      }
14647      if (element.hasCopyrightElement()) {
14648        composeString("copyright", element.getCopyrightElement());
14649      }
14650      if (element.hasSource()) {
14651        composeType("source", element.getSource());
14652      }
14653      if (element.hasTarget()) {
14654        composeType("target", element.getTarget());
14655      }
14656      if (element.hasElement()) {
14657        for (ConceptMap.SourceElementComponent e : element.getElement())
14658          composeConceptMapSourceElementComponent("element", e);
14659      }
14660      composeElementClose(element);
14661      xml.exit(FHIR_NS, name);
14662    }
14663  }
14664
14665  protected void composeConceptMapConceptMapContactComponent(String name, ConceptMap.ConceptMapContactComponent element)
14666      throws IOException {
14667    if (element != null) {
14668      composeElementAttributes(element);
14669      xml.enter(FHIR_NS, name);
14670      composeBackboneElements(element);
14671      if (element.hasNameElement()) {
14672        composeString("name", element.getNameElement());
14673      }
14674      if (element.hasTelecom()) {
14675        for (ContactPoint e : element.getTelecom())
14676          composeContactPoint("telecom", e);
14677      }
14678      composeElementClose(element);
14679      xml.exit(FHIR_NS, name);
14680    }
14681  }
14682
14683  protected void composeConceptMapSourceElementComponent(String name, ConceptMap.SourceElementComponent element)
14684      throws IOException {
14685    if (element != null) {
14686      composeElementAttributes(element);
14687      xml.enter(FHIR_NS, name);
14688      composeBackboneElements(element);
14689      if (element.hasCodeSystemElement()) {
14690        composeUri("codeSystem", element.getCodeSystemElement());
14691      }
14692      if (element.hasCodeElement()) {
14693        composeCode("code", element.getCodeElement());
14694      }
14695      if (element.hasTarget()) {
14696        for (ConceptMap.TargetElementComponent e : element.getTarget())
14697          composeConceptMapTargetElementComponent("target", e);
14698      }
14699      composeElementClose(element);
14700      xml.exit(FHIR_NS, name);
14701    }
14702  }
14703
14704  protected void composeConceptMapTargetElementComponent(String name, ConceptMap.TargetElementComponent element)
14705      throws IOException {
14706    if (element != null) {
14707      composeElementAttributes(element);
14708      xml.enter(FHIR_NS, name);
14709      composeBackboneElements(element);
14710      if (element.hasCodeSystemElement()) {
14711        composeUri("codeSystem", element.getCodeSystemElement());
14712      }
14713      if (element.hasCodeElement()) {
14714        composeCode("code", element.getCodeElement());
14715      }
14716      if (element.hasEquivalenceElement())
14717        composeEnumeration("equivalence", element.getEquivalenceElement(),
14718            new Enumerations.ConceptMapEquivalenceEnumFactory());
14719      if (element.hasCommentsElement()) {
14720        composeString("comments", element.getCommentsElement());
14721      }
14722      if (element.hasDependsOn()) {
14723        for (ConceptMap.OtherElementComponent e : element.getDependsOn())
14724          composeConceptMapOtherElementComponent("dependsOn", e);
14725      }
14726      if (element.hasProduct()) {
14727        for (ConceptMap.OtherElementComponent e : element.getProduct())
14728          composeConceptMapOtherElementComponent("product", e);
14729      }
14730      composeElementClose(element);
14731      xml.exit(FHIR_NS, name);
14732    }
14733  }
14734
14735  protected void composeConceptMapOtherElementComponent(String name, ConceptMap.OtherElementComponent element)
14736      throws IOException {
14737    if (element != null) {
14738      composeElementAttributes(element);
14739      xml.enter(FHIR_NS, name);
14740      composeBackboneElements(element);
14741      if (element.hasElementElement()) {
14742        composeUri("element", element.getElementElement());
14743      }
14744      if (element.hasCodeSystemElement()) {
14745        composeUri("codeSystem", element.getCodeSystemElement());
14746      }
14747      if (element.hasCodeElement()) {
14748        composeString("code", element.getCodeElement());
14749      }
14750      composeElementClose(element);
14751      xml.exit(FHIR_NS, name);
14752    }
14753  }
14754
14755  protected void composeCondition(String name, Condition element) throws IOException {
14756    if (element != null) {
14757      composeDomainResourceAttributes(element);
14758      xml.enter(FHIR_NS, name);
14759      composeDomainResourceElements(element);
14760      if (element.hasIdentifier()) {
14761        for (Identifier e : element.getIdentifier())
14762          composeIdentifier("identifier", e);
14763      }
14764      if (element.hasPatient()) {
14765        composeReference("patient", element.getPatient());
14766      }
14767      if (element.hasEncounter()) {
14768        composeReference("encounter", element.getEncounter());
14769      }
14770      if (element.hasAsserter()) {
14771        composeReference("asserter", element.getAsserter());
14772      }
14773      if (element.hasDateRecordedElement()) {
14774        composeDate("dateRecorded", element.getDateRecordedElement());
14775      }
14776      if (element.hasCode()) {
14777        composeCodeableConcept("code", element.getCode());
14778      }
14779      if (element.hasCategory()) {
14780        composeCodeableConcept("category", element.getCategory());
14781      }
14782      if (element.hasClinicalStatusElement()) {
14783        composeCode("clinicalStatus", element.getClinicalStatusElement());
14784      }
14785      if (element.hasVerificationStatusElement())
14786        composeEnumeration("verificationStatus", element.getVerificationStatusElement(),
14787            new Condition.ConditionVerificationStatusEnumFactory());
14788      if (element.hasSeverity()) {
14789        composeCodeableConcept("severity", element.getSeverity());
14790      }
14791      if (element.hasOnset()) {
14792        composeType("onset", element.getOnset());
14793      }
14794      if (element.hasAbatement()) {
14795        composeType("abatement", element.getAbatement());
14796      }
14797      if (element.hasStage()) {
14798        composeConditionConditionStageComponent("stage", element.getStage());
14799      }
14800      if (element.hasEvidence()) {
14801        for (Condition.ConditionEvidenceComponent e : element.getEvidence())
14802          composeConditionConditionEvidenceComponent("evidence", e);
14803      }
14804      if (element.hasBodySite()) {
14805        for (CodeableConcept e : element.getBodySite())
14806          composeCodeableConcept("bodySite", e);
14807      }
14808      if (element.hasNotesElement()) {
14809        composeString("notes", element.getNotesElement());
14810      }
14811      composeElementClose(element);
14812      xml.exit(FHIR_NS, name);
14813    }
14814  }
14815
14816  protected void composeConditionConditionStageComponent(String name, Condition.ConditionStageComponent element)
14817      throws IOException {
14818    if (element != null) {
14819      composeElementAttributes(element);
14820      xml.enter(FHIR_NS, name);
14821      composeBackboneElements(element);
14822      if (element.hasSummary()) {
14823        composeCodeableConcept("summary", element.getSummary());
14824      }
14825      if (element.hasAssessment()) {
14826        for (Reference e : element.getAssessment())
14827          composeReference("assessment", e);
14828      }
14829      composeElementClose(element);
14830      xml.exit(FHIR_NS, name);
14831    }
14832  }
14833
14834  protected void composeConditionConditionEvidenceComponent(String name, Condition.ConditionEvidenceComponent element)
14835      throws IOException {
14836    if (element != null) {
14837      composeElementAttributes(element);
14838      xml.enter(FHIR_NS, name);
14839      composeBackboneElements(element);
14840      if (element.hasCode()) {
14841        composeCodeableConcept("code", element.getCode());
14842      }
14843      if (element.hasDetail()) {
14844        for (Reference e : element.getDetail())
14845          composeReference("detail", e);
14846      }
14847      composeElementClose(element);
14848      xml.exit(FHIR_NS, name);
14849    }
14850  }
14851
14852  protected void composeConformance(String name, Conformance element) throws IOException {
14853    if (element != null) {
14854      composeDomainResourceAttributes(element);
14855      xml.enter(FHIR_NS, name);
14856      composeDomainResourceElements(element);
14857      if (element.hasUrlElement()) {
14858        composeUri("url", element.getUrlElement());
14859      }
14860      if (element.hasVersionElement()) {
14861        composeString("version", element.getVersionElement());
14862      }
14863      if (element.hasNameElement()) {
14864        composeString("name", element.getNameElement());
14865      }
14866      if (element.hasStatusElement())
14867        composeEnumeration("status", element.getStatusElement(),
14868            new Enumerations.ConformanceResourceStatusEnumFactory());
14869      if (element.hasExperimentalElement()) {
14870        composeBoolean("experimental", element.getExperimentalElement());
14871      }
14872      if (element.hasPublisherElement()) {
14873        composeString("publisher", element.getPublisherElement());
14874      }
14875      if (element.hasContact()) {
14876        for (Conformance.ConformanceContactComponent e : element.getContact())
14877          composeConformanceConformanceContactComponent("contact", e);
14878      }
14879      if (element.hasDateElement()) {
14880        composeDateTime("date", element.getDateElement());
14881      }
14882      if (element.hasDescriptionElement()) {
14883        composeString("description", element.getDescriptionElement());
14884      }
14885      if (element.hasRequirementsElement()) {
14886        composeString("requirements", element.getRequirementsElement());
14887      }
14888      if (element.hasCopyrightElement()) {
14889        composeString("copyright", element.getCopyrightElement());
14890      }
14891      if (element.hasKindElement())
14892        composeEnumeration("kind", element.getKindElement(), new Conformance.ConformanceStatementKindEnumFactory());
14893      if (element.hasSoftware()) {
14894        composeConformanceConformanceSoftwareComponent("software", element.getSoftware());
14895      }
14896      if (element.hasImplementation()) {
14897        composeConformanceConformanceImplementationComponent("implementation", element.getImplementation());
14898      }
14899      if (element.hasFhirVersionElement()) {
14900        composeId("fhirVersion", element.getFhirVersionElement());
14901      }
14902      if (element.hasAcceptUnknownElement())
14903        composeEnumeration("acceptUnknown", element.getAcceptUnknownElement(),
14904            new Conformance.UnknownContentCodeEnumFactory());
14905      if (element.hasFormat()) {
14906        for (CodeType e : element.getFormat())
14907          composeCode("format", e);
14908      }
14909      if (element.hasProfile()) {
14910        for (Reference e : element.getProfile())
14911          composeReference("profile", e);
14912      }
14913      if (element.hasRest()) {
14914        for (Conformance.ConformanceRestComponent e : element.getRest())
14915          composeConformanceConformanceRestComponent("rest", e);
14916      }
14917      if (element.hasMessaging()) {
14918        for (Conformance.ConformanceMessagingComponent e : element.getMessaging())
14919          composeConformanceConformanceMessagingComponent("messaging", e);
14920      }
14921      if (element.hasDocument()) {
14922        for (Conformance.ConformanceDocumentComponent e : element.getDocument())
14923          composeConformanceConformanceDocumentComponent("document", e);
14924      }
14925      composeElementClose(element);
14926      xml.exit(FHIR_NS, name);
14927    }
14928  }
14929
14930  protected void composeConformanceConformanceContactComponent(String name,
14931      Conformance.ConformanceContactComponent element) throws IOException {
14932    if (element != null) {
14933      composeElementAttributes(element);
14934      xml.enter(FHIR_NS, name);
14935      composeBackboneElements(element);
14936      if (element.hasNameElement()) {
14937        composeString("name", element.getNameElement());
14938      }
14939      if (element.hasTelecom()) {
14940        for (ContactPoint e : element.getTelecom())
14941          composeContactPoint("telecom", e);
14942      }
14943      composeElementClose(element);
14944      xml.exit(FHIR_NS, name);
14945    }
14946  }
14947
14948  protected void composeConformanceConformanceSoftwareComponent(String name,
14949      Conformance.ConformanceSoftwareComponent element) throws IOException {
14950    if (element != null) {
14951      composeElementAttributes(element);
14952      xml.enter(FHIR_NS, name);
14953      composeBackboneElements(element);
14954      if (element.hasNameElement()) {
14955        composeString("name", element.getNameElement());
14956      }
14957      if (element.hasVersionElement()) {
14958        composeString("version", element.getVersionElement());
14959      }
14960      if (element.hasReleaseDateElement()) {
14961        composeDateTime("releaseDate", element.getReleaseDateElement());
14962      }
14963      composeElementClose(element);
14964      xml.exit(FHIR_NS, name);
14965    }
14966  }
14967
14968  protected void composeConformanceConformanceImplementationComponent(String name,
14969      Conformance.ConformanceImplementationComponent element) throws IOException {
14970    if (element != null) {
14971      composeElementAttributes(element);
14972      xml.enter(FHIR_NS, name);
14973      composeBackboneElements(element);
14974      if (element.hasDescriptionElement()) {
14975        composeString("description", element.getDescriptionElement());
14976      }
14977      if (element.hasUrlElement()) {
14978        composeUri("url", element.getUrlElement());
14979      }
14980      composeElementClose(element);
14981      xml.exit(FHIR_NS, name);
14982    }
14983  }
14984
14985  protected void composeConformanceConformanceRestComponent(String name, Conformance.ConformanceRestComponent element)
14986      throws IOException {
14987    if (element != null) {
14988      composeElementAttributes(element);
14989      xml.enter(FHIR_NS, name);
14990      composeBackboneElements(element);
14991      if (element.hasModeElement())
14992        composeEnumeration("mode", element.getModeElement(), new Conformance.RestfulConformanceModeEnumFactory());
14993      if (element.hasDocumentationElement()) {
14994        composeString("documentation", element.getDocumentationElement());
14995      }
14996      if (element.hasSecurity()) {
14997        composeConformanceConformanceRestSecurityComponent("security", element.getSecurity());
14998      }
14999      if (element.hasResource()) {
15000        for (Conformance.ConformanceRestResourceComponent e : element.getResource())
15001          composeConformanceConformanceRestResourceComponent("resource", e);
15002      }
15003      if (element.hasInteraction()) {
15004        for (Conformance.SystemInteractionComponent e : element.getInteraction())
15005          composeConformanceSystemInteractionComponent("interaction", e);
15006      }
15007      if (element.hasTransactionModeElement())
15008        composeEnumeration("transactionMode", element.getTransactionModeElement(),
15009            new Conformance.TransactionModeEnumFactory());
15010      if (element.hasSearchParam()) {
15011        for (Conformance.ConformanceRestResourceSearchParamComponent e : element.getSearchParam())
15012          composeConformanceConformanceRestResourceSearchParamComponent("searchParam", e);
15013      }
15014      if (element.hasOperation()) {
15015        for (Conformance.ConformanceRestOperationComponent e : element.getOperation())
15016          composeConformanceConformanceRestOperationComponent("operation", e);
15017      }
15018      if (element.hasCompartment()) {
15019        for (UriType e : element.getCompartment())
15020          composeUri("compartment", e);
15021      }
15022      composeElementClose(element);
15023      xml.exit(FHIR_NS, name);
15024    }
15025  }
15026
15027  protected void composeConformanceConformanceRestSecurityComponent(String name,
15028      Conformance.ConformanceRestSecurityComponent element) throws IOException {
15029    if (element != null) {
15030      composeElementAttributes(element);
15031      xml.enter(FHIR_NS, name);
15032      composeBackboneElements(element);
15033      if (element.hasCorsElement()) {
15034        composeBoolean("cors", element.getCorsElement());
15035      }
15036      if (element.hasService()) {
15037        for (CodeableConcept e : element.getService())
15038          composeCodeableConcept("service", e);
15039      }
15040      if (element.hasDescriptionElement()) {
15041        composeString("description", element.getDescriptionElement());
15042      }
15043      if (element.hasCertificate()) {
15044        for (Conformance.ConformanceRestSecurityCertificateComponent e : element.getCertificate())
15045          composeConformanceConformanceRestSecurityCertificateComponent("certificate", e);
15046      }
15047      composeElementClose(element);
15048      xml.exit(FHIR_NS, name);
15049    }
15050  }
15051
15052  protected void composeConformanceConformanceRestSecurityCertificateComponent(String name,
15053      Conformance.ConformanceRestSecurityCertificateComponent element) throws IOException {
15054    if (element != null) {
15055      composeElementAttributes(element);
15056      xml.enter(FHIR_NS, name);
15057      composeBackboneElements(element);
15058      if (element.hasTypeElement()) {
15059        composeCode("type", element.getTypeElement());
15060      }
15061      if (element.hasBlobElement()) {
15062        composeBase64Binary("blob", element.getBlobElement());
15063      }
15064      composeElementClose(element);
15065      xml.exit(FHIR_NS, name);
15066    }
15067  }
15068
15069  protected void composeConformanceConformanceRestResourceComponent(String name,
15070      Conformance.ConformanceRestResourceComponent element) throws IOException {
15071    if (element != null) {
15072      composeElementAttributes(element);
15073      xml.enter(FHIR_NS, name);
15074      composeBackboneElements(element);
15075      if (element.hasTypeElement()) {
15076        composeCode("type", element.getTypeElement());
15077      }
15078      if (element.hasProfile()) {
15079        composeReference("profile", element.getProfile());
15080      }
15081      if (element.hasInteraction()) {
15082        for (Conformance.ResourceInteractionComponent e : element.getInteraction())
15083          composeConformanceResourceInteractionComponent("interaction", e);
15084      }
15085      if (element.hasVersioningElement())
15086        composeEnumeration("versioning", element.getVersioningElement(),
15087            new Conformance.ResourceVersionPolicyEnumFactory());
15088      if (element.hasReadHistoryElement()) {
15089        composeBoolean("readHistory", element.getReadHistoryElement());
15090      }
15091      if (element.hasUpdateCreateElement()) {
15092        composeBoolean("updateCreate", element.getUpdateCreateElement());
15093      }
15094      if (element.hasConditionalCreateElement()) {
15095        composeBoolean("conditionalCreate", element.getConditionalCreateElement());
15096      }
15097      if (element.hasConditionalUpdateElement()) {
15098        composeBoolean("conditionalUpdate", element.getConditionalUpdateElement());
15099      }
15100      if (element.hasConditionalDeleteElement())
15101        composeEnumeration("conditionalDelete", element.getConditionalDeleteElement(),
15102            new Conformance.ConditionalDeleteStatusEnumFactory());
15103      if (element.hasSearchInclude()) {
15104        for (StringType e : element.getSearchInclude())
15105          composeString("searchInclude", e);
15106      }
15107      if (element.hasSearchRevInclude()) {
15108        for (StringType e : element.getSearchRevInclude())
15109          composeString("searchRevInclude", e);
15110      }
15111      if (element.hasSearchParam()) {
15112        for (Conformance.ConformanceRestResourceSearchParamComponent e : element.getSearchParam())
15113          composeConformanceConformanceRestResourceSearchParamComponent("searchParam", e);
15114      }
15115      composeElementClose(element);
15116      xml.exit(FHIR_NS, name);
15117    }
15118  }
15119
15120  protected void composeConformanceResourceInteractionComponent(String name,
15121      Conformance.ResourceInteractionComponent element) throws IOException {
15122    if (element != null) {
15123      composeElementAttributes(element);
15124      xml.enter(FHIR_NS, name);
15125      composeBackboneElements(element);
15126      if (element.hasCodeElement())
15127        composeEnumeration("code", element.getCodeElement(), new Conformance.TypeRestfulInteractionEnumFactory());
15128      if (element.hasDocumentationElement()) {
15129        composeString("documentation", element.getDocumentationElement());
15130      }
15131      composeElementClose(element);
15132      xml.exit(FHIR_NS, name);
15133    }
15134  }
15135
15136  protected void composeConformanceConformanceRestResourceSearchParamComponent(String name,
15137      Conformance.ConformanceRestResourceSearchParamComponent element) throws IOException {
15138    if (element != null) {
15139      composeElementAttributes(element);
15140      xml.enter(FHIR_NS, name);
15141      composeBackboneElements(element);
15142      if (element.hasNameElement()) {
15143        composeString("name", element.getNameElement());
15144      }
15145      if (element.hasDefinitionElement()) {
15146        composeUri("definition", element.getDefinitionElement());
15147      }
15148      if (element.hasTypeElement())
15149        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
15150      if (element.hasDocumentationElement()) {
15151        composeString("documentation", element.getDocumentationElement());
15152      }
15153      if (element.hasTarget()) {
15154        for (CodeType e : element.getTarget())
15155          composeCode("target", e);
15156      }
15157      if (element.hasModifier())
15158        for (Enumeration<Conformance.SearchModifierCode> e : element.getModifier())
15159          composeEnumeration("modifier", e, new Conformance.SearchModifierCodeEnumFactory());
15160      if (element.hasChain()) {
15161        for (StringType e : element.getChain())
15162          composeString("chain", e);
15163      }
15164      composeElementClose(element);
15165      xml.exit(FHIR_NS, name);
15166    }
15167  }
15168
15169  protected void composeConformanceSystemInteractionComponent(String name,
15170      Conformance.SystemInteractionComponent element) throws IOException {
15171    if (element != null) {
15172      composeElementAttributes(element);
15173      xml.enter(FHIR_NS, name);
15174      composeBackboneElements(element);
15175      if (element.hasCodeElement())
15176        composeEnumeration("code", element.getCodeElement(), new Conformance.SystemRestfulInteractionEnumFactory());
15177      if (element.hasDocumentationElement()) {
15178        composeString("documentation", element.getDocumentationElement());
15179      }
15180      composeElementClose(element);
15181      xml.exit(FHIR_NS, name);
15182    }
15183  }
15184
15185  protected void composeConformanceConformanceRestOperationComponent(String name,
15186      Conformance.ConformanceRestOperationComponent element) throws IOException {
15187    if (element != null) {
15188      composeElementAttributes(element);
15189      xml.enter(FHIR_NS, name);
15190      composeBackboneElements(element);
15191      if (element.hasNameElement()) {
15192        composeString("name", element.getNameElement());
15193      }
15194      if (element.hasDefinition()) {
15195        composeReference("definition", element.getDefinition());
15196      }
15197      composeElementClose(element);
15198      xml.exit(FHIR_NS, name);
15199    }
15200  }
15201
15202  protected void composeConformanceConformanceMessagingComponent(String name,
15203      Conformance.ConformanceMessagingComponent element) throws IOException {
15204    if (element != null) {
15205      composeElementAttributes(element);
15206      xml.enter(FHIR_NS, name);
15207      composeBackboneElements(element);
15208      if (element.hasEndpoint()) {
15209        for (Conformance.ConformanceMessagingEndpointComponent e : element.getEndpoint())
15210          composeConformanceConformanceMessagingEndpointComponent("endpoint", e);
15211      }
15212      if (element.hasReliableCacheElement()) {
15213        composeUnsignedInt("reliableCache", element.getReliableCacheElement());
15214      }
15215      if (element.hasDocumentationElement()) {
15216        composeString("documentation", element.getDocumentationElement());
15217      }
15218      if (element.hasEvent()) {
15219        for (Conformance.ConformanceMessagingEventComponent e : element.getEvent())
15220          composeConformanceConformanceMessagingEventComponent("event", e);
15221      }
15222      composeElementClose(element);
15223      xml.exit(FHIR_NS, name);
15224    }
15225  }
15226
15227  protected void composeConformanceConformanceMessagingEndpointComponent(String name,
15228      Conformance.ConformanceMessagingEndpointComponent element) throws IOException {
15229    if (element != null) {
15230      composeElementAttributes(element);
15231      xml.enter(FHIR_NS, name);
15232      composeBackboneElements(element);
15233      if (element.hasProtocol()) {
15234        composeCoding("protocol", element.getProtocol());
15235      }
15236      if (element.hasAddressElement()) {
15237        composeUri("address", element.getAddressElement());
15238      }
15239      composeElementClose(element);
15240      xml.exit(FHIR_NS, name);
15241    }
15242  }
15243
15244  protected void composeConformanceConformanceMessagingEventComponent(String name,
15245      Conformance.ConformanceMessagingEventComponent element) throws IOException {
15246    if (element != null) {
15247      composeElementAttributes(element);
15248      xml.enter(FHIR_NS, name);
15249      composeBackboneElements(element);
15250      if (element.hasCode()) {
15251        composeCoding("code", element.getCode());
15252      }
15253      if (element.hasCategoryElement())
15254        composeEnumeration("category", element.getCategoryElement(),
15255            new Conformance.MessageSignificanceCategoryEnumFactory());
15256      if (element.hasModeElement())
15257        composeEnumeration("mode", element.getModeElement(), new Conformance.ConformanceEventModeEnumFactory());
15258      if (element.hasFocusElement()) {
15259        composeCode("focus", element.getFocusElement());
15260      }
15261      if (element.hasRequest()) {
15262        composeReference("request", element.getRequest());
15263      }
15264      if (element.hasResponse()) {
15265        composeReference("response", element.getResponse());
15266      }
15267      if (element.hasDocumentationElement()) {
15268        composeString("documentation", element.getDocumentationElement());
15269      }
15270      composeElementClose(element);
15271      xml.exit(FHIR_NS, name);
15272    }
15273  }
15274
15275  protected void composeConformanceConformanceDocumentComponent(String name,
15276      Conformance.ConformanceDocumentComponent element) throws IOException {
15277    if (element != null) {
15278      composeElementAttributes(element);
15279      xml.enter(FHIR_NS, name);
15280      composeBackboneElements(element);
15281      if (element.hasModeElement())
15282        composeEnumeration("mode", element.getModeElement(), new Conformance.DocumentModeEnumFactory());
15283      if (element.hasDocumentationElement()) {
15284        composeString("documentation", element.getDocumentationElement());
15285      }
15286      if (element.hasProfile()) {
15287        composeReference("profile", element.getProfile());
15288      }
15289      composeElementClose(element);
15290      xml.exit(FHIR_NS, name);
15291    }
15292  }
15293
15294  protected void composeContract(String name, Contract element) throws IOException {
15295    if (element != null) {
15296      composeDomainResourceAttributes(element);
15297      xml.enter(FHIR_NS, name);
15298      composeDomainResourceElements(element);
15299      if (element.hasIdentifier()) {
15300        composeIdentifier("identifier", element.getIdentifier());
15301      }
15302      if (element.hasIssuedElement()) {
15303        composeDateTime("issued", element.getIssuedElement());
15304      }
15305      if (element.hasApplies()) {
15306        composePeriod("applies", element.getApplies());
15307      }
15308      if (element.hasSubject()) {
15309        for (Reference e : element.getSubject())
15310          composeReference("subject", e);
15311      }
15312      if (element.hasAuthority()) {
15313        for (Reference e : element.getAuthority())
15314          composeReference("authority", e);
15315      }
15316      if (element.hasDomain()) {
15317        for (Reference e : element.getDomain())
15318          composeReference("domain", e);
15319      }
15320      if (element.hasType()) {
15321        composeCodeableConcept("type", element.getType());
15322      }
15323      if (element.hasSubType()) {
15324        for (CodeableConcept e : element.getSubType())
15325          composeCodeableConcept("subType", e);
15326      }
15327      if (element.hasAction()) {
15328        for (CodeableConcept e : element.getAction())
15329          composeCodeableConcept("action", e);
15330      }
15331      if (element.hasActionReason()) {
15332        for (CodeableConcept e : element.getActionReason())
15333          composeCodeableConcept("actionReason", e);
15334      }
15335      if (element.hasActor()) {
15336        for (Contract.ActorComponent e : element.getActor())
15337          composeContractActorComponent("actor", e);
15338      }
15339      if (element.hasValuedItem()) {
15340        for (Contract.ValuedItemComponent e : element.getValuedItem())
15341          composeContractValuedItemComponent("valuedItem", e);
15342      }
15343      if (element.hasSigner()) {
15344        for (Contract.SignatoryComponent e : element.getSigner())
15345          composeContractSignatoryComponent("signer", e);
15346      }
15347      if (element.hasTerm()) {
15348        for (Contract.TermComponent e : element.getTerm())
15349          composeContractTermComponent("term", e);
15350      }
15351      if (element.hasBinding()) {
15352        composeType("binding", element.getBinding());
15353      }
15354      if (element.hasFriendly()) {
15355        for (Contract.FriendlyLanguageComponent e : element.getFriendly())
15356          composeContractFriendlyLanguageComponent("friendly", e);
15357      }
15358      if (element.hasLegal()) {
15359        for (Contract.LegalLanguageComponent e : element.getLegal())
15360          composeContractLegalLanguageComponent("legal", e);
15361      }
15362      if (element.hasRule()) {
15363        for (Contract.ComputableLanguageComponent e : element.getRule())
15364          composeContractComputableLanguageComponent("rule", e);
15365      }
15366      composeElementClose(element);
15367      xml.exit(FHIR_NS, name);
15368    }
15369  }
15370
15371  protected void composeContractActorComponent(String name, Contract.ActorComponent element) throws IOException {
15372    if (element != null) {
15373      composeElementAttributes(element);
15374      xml.enter(FHIR_NS, name);
15375      composeBackboneElements(element);
15376      if (element.hasEntity()) {
15377        composeReference("entity", element.getEntity());
15378      }
15379      if (element.hasRole()) {
15380        for (CodeableConcept e : element.getRole())
15381          composeCodeableConcept("role", e);
15382      }
15383      composeElementClose(element);
15384      xml.exit(FHIR_NS, name);
15385    }
15386  }
15387
15388  protected void composeContractValuedItemComponent(String name, Contract.ValuedItemComponent element)
15389      throws IOException {
15390    if (element != null) {
15391      composeElementAttributes(element);
15392      xml.enter(FHIR_NS, name);
15393      composeBackboneElements(element);
15394      if (element.hasEntity()) {
15395        composeType("entity", element.getEntity());
15396      }
15397      if (element.hasIdentifier()) {
15398        composeIdentifier("identifier", element.getIdentifier());
15399      }
15400      if (element.hasEffectiveTimeElement()) {
15401        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
15402      }
15403      if (element.hasQuantity()) {
15404        composeSimpleQuantity("quantity", element.getQuantity());
15405      }
15406      if (element.hasUnitPrice()) {
15407        composeMoney("unitPrice", element.getUnitPrice());
15408      }
15409      if (element.hasFactorElement()) {
15410        composeDecimal("factor", element.getFactorElement());
15411      }
15412      if (element.hasPointsElement()) {
15413        composeDecimal("points", element.getPointsElement());
15414      }
15415      if (element.hasNet()) {
15416        composeMoney("net", element.getNet());
15417      }
15418      composeElementClose(element);
15419      xml.exit(FHIR_NS, name);
15420    }
15421  }
15422
15423  protected void composeContractSignatoryComponent(String name, Contract.SignatoryComponent element)
15424      throws IOException {
15425    if (element != null) {
15426      composeElementAttributes(element);
15427      xml.enter(FHIR_NS, name);
15428      composeBackboneElements(element);
15429      if (element.hasType()) {
15430        composeCoding("type", element.getType());
15431      }
15432      if (element.hasParty()) {
15433        composeReference("party", element.getParty());
15434      }
15435      if (element.hasSignatureElement()) {
15436        composeString("signature", element.getSignatureElement());
15437      }
15438      composeElementClose(element);
15439      xml.exit(FHIR_NS, name);
15440    }
15441  }
15442
15443  protected void composeContractTermComponent(String name, Contract.TermComponent element) throws IOException {
15444    if (element != null) {
15445      composeElementAttributes(element);
15446      xml.enter(FHIR_NS, name);
15447      composeBackboneElements(element);
15448      if (element.hasIdentifier()) {
15449        composeIdentifier("identifier", element.getIdentifier());
15450      }
15451      if (element.hasIssuedElement()) {
15452        composeDateTime("issued", element.getIssuedElement());
15453      }
15454      if (element.hasApplies()) {
15455        composePeriod("applies", element.getApplies());
15456      }
15457      if (element.hasType()) {
15458        composeCodeableConcept("type", element.getType());
15459      }
15460      if (element.hasSubType()) {
15461        composeCodeableConcept("subType", element.getSubType());
15462      }
15463      if (element.hasSubject()) {
15464        composeReference("subject", element.getSubject());
15465      }
15466      if (element.hasAction()) {
15467        for (CodeableConcept e : element.getAction())
15468          composeCodeableConcept("action", e);
15469      }
15470      if (element.hasActionReason()) {
15471        for (CodeableConcept e : element.getActionReason())
15472          composeCodeableConcept("actionReason", e);
15473      }
15474      if (element.hasActor()) {
15475        for (Contract.TermActorComponent e : element.getActor())
15476          composeContractTermActorComponent("actor", e);
15477      }
15478      if (element.hasTextElement()) {
15479        composeString("text", element.getTextElement());
15480      }
15481      if (element.hasValuedItem()) {
15482        for (Contract.TermValuedItemComponent e : element.getValuedItem())
15483          composeContractTermValuedItemComponent("valuedItem", e);
15484      }
15485      if (element.hasGroup()) {
15486        for (Contract.TermComponent e : element.getGroup())
15487          composeContractTermComponent("group", e);
15488      }
15489      composeElementClose(element);
15490      xml.exit(FHIR_NS, name);
15491    }
15492  }
15493
15494  protected void composeContractTermActorComponent(String name, Contract.TermActorComponent element)
15495      throws IOException {
15496    if (element != null) {
15497      composeElementAttributes(element);
15498      xml.enter(FHIR_NS, name);
15499      composeBackboneElements(element);
15500      if (element.hasEntity()) {
15501        composeReference("entity", element.getEntity());
15502      }
15503      if (element.hasRole()) {
15504        for (CodeableConcept e : element.getRole())
15505          composeCodeableConcept("role", e);
15506      }
15507      composeElementClose(element);
15508      xml.exit(FHIR_NS, name);
15509    }
15510  }
15511
15512  protected void composeContractTermValuedItemComponent(String name, Contract.TermValuedItemComponent element)
15513      throws IOException {
15514    if (element != null) {
15515      composeElementAttributes(element);
15516      xml.enter(FHIR_NS, name);
15517      composeBackboneElements(element);
15518      if (element.hasEntity()) {
15519        composeType("entity", element.getEntity());
15520      }
15521      if (element.hasIdentifier()) {
15522        composeIdentifier("identifier", element.getIdentifier());
15523      }
15524      if (element.hasEffectiveTimeElement()) {
15525        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
15526      }
15527      if (element.hasQuantity()) {
15528        composeSimpleQuantity("quantity", element.getQuantity());
15529      }
15530      if (element.hasUnitPrice()) {
15531        composeMoney("unitPrice", element.getUnitPrice());
15532      }
15533      if (element.hasFactorElement()) {
15534        composeDecimal("factor", element.getFactorElement());
15535      }
15536      if (element.hasPointsElement()) {
15537        composeDecimal("points", element.getPointsElement());
15538      }
15539      if (element.hasNet()) {
15540        composeMoney("net", element.getNet());
15541      }
15542      composeElementClose(element);
15543      xml.exit(FHIR_NS, name);
15544    }
15545  }
15546
15547  protected void composeContractFriendlyLanguageComponent(String name, Contract.FriendlyLanguageComponent element)
15548      throws IOException {
15549    if (element != null) {
15550      composeElementAttributes(element);
15551      xml.enter(FHIR_NS, name);
15552      composeBackboneElements(element);
15553      if (element.hasContent()) {
15554        composeType("content", element.getContent());
15555      }
15556      composeElementClose(element);
15557      xml.exit(FHIR_NS, name);
15558    }
15559  }
15560
15561  protected void composeContractLegalLanguageComponent(String name, Contract.LegalLanguageComponent element)
15562      throws IOException {
15563    if (element != null) {
15564      composeElementAttributes(element);
15565      xml.enter(FHIR_NS, name);
15566      composeBackboneElements(element);
15567      if (element.hasContent()) {
15568        composeType("content", element.getContent());
15569      }
15570      composeElementClose(element);
15571      xml.exit(FHIR_NS, name);
15572    }
15573  }
15574
15575  protected void composeContractComputableLanguageComponent(String name, Contract.ComputableLanguageComponent element)
15576      throws IOException {
15577    if (element != null) {
15578      composeElementAttributes(element);
15579      xml.enter(FHIR_NS, name);
15580      composeBackboneElements(element);
15581      if (element.hasContent()) {
15582        composeType("content", element.getContent());
15583      }
15584      composeElementClose(element);
15585      xml.exit(FHIR_NS, name);
15586    }
15587  }
15588
15589  protected void composeCoverage(String name, Coverage element) throws IOException {
15590    if (element != null) {
15591      composeDomainResourceAttributes(element);
15592      xml.enter(FHIR_NS, name);
15593      composeDomainResourceElements(element);
15594      if (element.hasIssuer()) {
15595        composeReference("issuer", element.getIssuer());
15596      }
15597      if (element.hasBin()) {
15598        composeIdentifier("bin", element.getBin());
15599      }
15600      if (element.hasPeriod()) {
15601        composePeriod("period", element.getPeriod());
15602      }
15603      if (element.hasType()) {
15604        composeCoding("type", element.getType());
15605      }
15606      if (element.hasSubscriberId()) {
15607        composeIdentifier("subscriberId", element.getSubscriberId());
15608      }
15609      if (element.hasIdentifier()) {
15610        for (Identifier e : element.getIdentifier())
15611          composeIdentifier("identifier", e);
15612      }
15613      if (element.hasGroupElement()) {
15614        composeString("group", element.getGroupElement());
15615      }
15616      if (element.hasPlanElement()) {
15617        composeString("plan", element.getPlanElement());
15618      }
15619      if (element.hasSubPlanElement()) {
15620        composeString("subPlan", element.getSubPlanElement());
15621      }
15622      if (element.hasDependentElement()) {
15623        composePositiveInt("dependent", element.getDependentElement());
15624      }
15625      if (element.hasSequenceElement()) {
15626        composePositiveInt("sequence", element.getSequenceElement());
15627      }
15628      if (element.hasSubscriber()) {
15629        composeReference("subscriber", element.getSubscriber());
15630      }
15631      if (element.hasNetwork()) {
15632        composeIdentifier("network", element.getNetwork());
15633      }
15634      if (element.hasContract()) {
15635        for (Reference e : element.getContract())
15636          composeReference("contract", e);
15637      }
15638      composeElementClose(element);
15639      xml.exit(FHIR_NS, name);
15640    }
15641  }
15642
15643  protected void composeDataElement(String name, DataElement element) throws IOException {
15644    if (element != null) {
15645      composeDomainResourceAttributes(element);
15646      xml.enter(FHIR_NS, name);
15647      composeDomainResourceElements(element);
15648      if (element.hasUrlElement()) {
15649        composeUri("url", element.getUrlElement());
15650      }
15651      if (element.hasIdentifier()) {
15652        for (Identifier e : element.getIdentifier())
15653          composeIdentifier("identifier", e);
15654      }
15655      if (element.hasVersionElement()) {
15656        composeString("version", element.getVersionElement());
15657      }
15658      if (element.hasNameElement()) {
15659        composeString("name", element.getNameElement());
15660      }
15661      if (element.hasStatusElement())
15662        composeEnumeration("status", element.getStatusElement(),
15663            new Enumerations.ConformanceResourceStatusEnumFactory());
15664      if (element.hasExperimentalElement()) {
15665        composeBoolean("experimental", element.getExperimentalElement());
15666      }
15667      if (element.hasPublisherElement()) {
15668        composeString("publisher", element.getPublisherElement());
15669      }
15670      if (element.hasContact()) {
15671        for (DataElement.DataElementContactComponent e : element.getContact())
15672          composeDataElementDataElementContactComponent("contact", e);
15673      }
15674      if (element.hasDateElement()) {
15675        composeDateTime("date", element.getDateElement());
15676      }
15677      if (element.hasUseContext()) {
15678        for (CodeableConcept e : element.getUseContext())
15679          composeCodeableConcept("useContext", e);
15680      }
15681      if (element.hasCopyrightElement()) {
15682        composeString("copyright", element.getCopyrightElement());
15683      }
15684      if (element.hasStringencyElement())
15685        composeEnumeration("stringency", element.getStringencyElement(),
15686            new DataElement.DataElementStringencyEnumFactory());
15687      if (element.hasMapping()) {
15688        for (DataElement.DataElementMappingComponent e : element.getMapping())
15689          composeDataElementDataElementMappingComponent("mapping", e);
15690      }
15691      if (element.hasElement()) {
15692        for (ElementDefinition e : element.getElement())
15693          composeElementDefinition("element", e);
15694      }
15695      composeElementClose(element);
15696      xml.exit(FHIR_NS, name);
15697    }
15698  }
15699
15700  protected void composeDataElementDataElementContactComponent(String name,
15701      DataElement.DataElementContactComponent element) throws IOException {
15702    if (element != null) {
15703      composeElementAttributes(element);
15704      xml.enter(FHIR_NS, name);
15705      composeBackboneElements(element);
15706      if (element.hasNameElement()) {
15707        composeString("name", element.getNameElement());
15708      }
15709      if (element.hasTelecom()) {
15710        for (ContactPoint e : element.getTelecom())
15711          composeContactPoint("telecom", e);
15712      }
15713      composeElementClose(element);
15714      xml.exit(FHIR_NS, name);
15715    }
15716  }
15717
15718  protected void composeDataElementDataElementMappingComponent(String name,
15719      DataElement.DataElementMappingComponent element) throws IOException {
15720    if (element != null) {
15721      composeElementAttributes(element);
15722      xml.enter(FHIR_NS, name);
15723      composeBackboneElements(element);
15724      if (element.hasIdentityElement()) {
15725        composeId("identity", element.getIdentityElement());
15726      }
15727      if (element.hasUriElement()) {
15728        composeUri("uri", element.getUriElement());
15729      }
15730      if (element.hasNameElement()) {
15731        composeString("name", element.getNameElement());
15732      }
15733      if (element.hasCommentsElement()) {
15734        composeString("comments", element.getCommentsElement());
15735      }
15736      composeElementClose(element);
15737      xml.exit(FHIR_NS, name);
15738    }
15739  }
15740
15741  protected void composeDetectedIssue(String name, DetectedIssue element) throws IOException {
15742    if (element != null) {
15743      composeDomainResourceAttributes(element);
15744      xml.enter(FHIR_NS, name);
15745      composeDomainResourceElements(element);
15746      if (element.hasPatient()) {
15747        composeReference("patient", element.getPatient());
15748      }
15749      if (element.hasCategory()) {
15750        composeCodeableConcept("category", element.getCategory());
15751      }
15752      if (element.hasSeverityElement())
15753        composeEnumeration("severity", element.getSeverityElement(),
15754            new DetectedIssue.DetectedIssueSeverityEnumFactory());
15755      if (element.hasImplicated()) {
15756        for (Reference e : element.getImplicated())
15757          composeReference("implicated", e);
15758      }
15759      if (element.hasDetailElement()) {
15760        composeString("detail", element.getDetailElement());
15761      }
15762      if (element.hasDateElement()) {
15763        composeDateTime("date", element.getDateElement());
15764      }
15765      if (element.hasAuthor()) {
15766        composeReference("author", element.getAuthor());
15767      }
15768      if (element.hasIdentifier()) {
15769        composeIdentifier("identifier", element.getIdentifier());
15770      }
15771      if (element.hasReferenceElement()) {
15772        composeUri("reference", element.getReferenceElement());
15773      }
15774      if (element.hasMitigation()) {
15775        for (DetectedIssue.DetectedIssueMitigationComponent e : element.getMitigation())
15776          composeDetectedIssueDetectedIssueMitigationComponent("mitigation", e);
15777      }
15778      composeElementClose(element);
15779      xml.exit(FHIR_NS, name);
15780    }
15781  }
15782
15783  protected void composeDetectedIssueDetectedIssueMitigationComponent(String name,
15784      DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
15785    if (element != null) {
15786      composeElementAttributes(element);
15787      xml.enter(FHIR_NS, name);
15788      composeBackboneElements(element);
15789      if (element.hasAction()) {
15790        composeCodeableConcept("action", element.getAction());
15791      }
15792      if (element.hasDateElement()) {
15793        composeDateTime("date", element.getDateElement());
15794      }
15795      if (element.hasAuthor()) {
15796        composeReference("author", element.getAuthor());
15797      }
15798      composeElementClose(element);
15799      xml.exit(FHIR_NS, name);
15800    }
15801  }
15802
15803  protected void composeDevice(String name, Device element) throws IOException {
15804    if (element != null) {
15805      composeDomainResourceAttributes(element);
15806      xml.enter(FHIR_NS, name);
15807      composeDomainResourceElements(element);
15808      if (element.hasIdentifier()) {
15809        for (Identifier e : element.getIdentifier())
15810          composeIdentifier("identifier", e);
15811      }
15812      if (element.hasType()) {
15813        composeCodeableConcept("type", element.getType());
15814      }
15815      if (element.hasNote()) {
15816        for (Annotation e : element.getNote())
15817          composeAnnotation("note", e);
15818      }
15819      if (element.hasStatusElement())
15820        composeEnumeration("status", element.getStatusElement(), new Device.DeviceStatusEnumFactory());
15821      if (element.hasManufacturerElement()) {
15822        composeString("manufacturer", element.getManufacturerElement());
15823      }
15824      if (element.hasModelElement()) {
15825        composeString("model", element.getModelElement());
15826      }
15827      if (element.hasVersionElement()) {
15828        composeString("version", element.getVersionElement());
15829      }
15830      if (element.hasManufactureDateElement()) {
15831        composeDateTime("manufactureDate", element.getManufactureDateElement());
15832      }
15833      if (element.hasExpiryElement()) {
15834        composeDateTime("expiry", element.getExpiryElement());
15835      }
15836      if (element.hasUdiElement()) {
15837        composeString("udi", element.getUdiElement());
15838      }
15839      if (element.hasLotNumberElement()) {
15840        composeString("lotNumber", element.getLotNumberElement());
15841      }
15842      if (element.hasOwner()) {
15843        composeReference("owner", element.getOwner());
15844      }
15845      if (element.hasLocation()) {
15846        composeReference("location", element.getLocation());
15847      }
15848      if (element.hasPatient()) {
15849        composeReference("patient", element.getPatient());
15850      }
15851      if (element.hasContact()) {
15852        for (ContactPoint e : element.getContact())
15853          composeContactPoint("contact", e);
15854      }
15855      if (element.hasUrlElement()) {
15856        composeUri("url", element.getUrlElement());
15857      }
15858      composeElementClose(element);
15859      xml.exit(FHIR_NS, name);
15860    }
15861  }
15862
15863  protected void composeDeviceComponent(String name, DeviceComponent element) throws IOException {
15864    if (element != null) {
15865      composeDomainResourceAttributes(element);
15866      xml.enter(FHIR_NS, name);
15867      composeDomainResourceElements(element);
15868      if (element.hasType()) {
15869        composeCodeableConcept("type", element.getType());
15870      }
15871      if (element.hasIdentifier()) {
15872        composeIdentifier("identifier", element.getIdentifier());
15873      }
15874      if (element.hasLastSystemChangeElement()) {
15875        composeInstant("lastSystemChange", element.getLastSystemChangeElement());
15876      }
15877      if (element.hasSource()) {
15878        composeReference("source", element.getSource());
15879      }
15880      if (element.hasParent()) {
15881        composeReference("parent", element.getParent());
15882      }
15883      if (element.hasOperationalStatus()) {
15884        for (CodeableConcept e : element.getOperationalStatus())
15885          composeCodeableConcept("operationalStatus", e);
15886      }
15887      if (element.hasParameterGroup()) {
15888        composeCodeableConcept("parameterGroup", element.getParameterGroup());
15889      }
15890      if (element.hasMeasurementPrincipleElement())
15891        composeEnumeration("measurementPrinciple", element.getMeasurementPrincipleElement(),
15892            new DeviceComponent.MeasmntPrincipleEnumFactory());
15893      if (element.hasProductionSpecification()) {
15894        for (DeviceComponent.DeviceComponentProductionSpecificationComponent e : element.getProductionSpecification())
15895          composeDeviceComponentDeviceComponentProductionSpecificationComponent("productionSpecification", e);
15896      }
15897      if (element.hasLanguageCode()) {
15898        composeCodeableConcept("languageCode", element.getLanguageCode());
15899      }
15900      composeElementClose(element);
15901      xml.exit(FHIR_NS, name);
15902    }
15903  }
15904
15905  protected void composeDeviceComponentDeviceComponentProductionSpecificationComponent(String name,
15906      DeviceComponent.DeviceComponentProductionSpecificationComponent element) throws IOException {
15907    if (element != null) {
15908      composeElementAttributes(element);
15909      xml.enter(FHIR_NS, name);
15910      composeBackboneElements(element);
15911      if (element.hasSpecType()) {
15912        composeCodeableConcept("specType", element.getSpecType());
15913      }
15914      if (element.hasComponentId()) {
15915        composeIdentifier("componentId", element.getComponentId());
15916      }
15917      if (element.hasProductionSpecElement()) {
15918        composeString("productionSpec", element.getProductionSpecElement());
15919      }
15920      composeElementClose(element);
15921      xml.exit(FHIR_NS, name);
15922    }
15923  }
15924
15925  protected void composeDeviceMetric(String name, DeviceMetric element) throws IOException {
15926    if (element != null) {
15927      composeDomainResourceAttributes(element);
15928      xml.enter(FHIR_NS, name);
15929      composeDomainResourceElements(element);
15930      if (element.hasType()) {
15931        composeCodeableConcept("type", element.getType());
15932      }
15933      if (element.hasIdentifier()) {
15934        composeIdentifier("identifier", element.getIdentifier());
15935      }
15936      if (element.hasUnit()) {
15937        composeCodeableConcept("unit", element.getUnit());
15938      }
15939      if (element.hasSource()) {
15940        composeReference("source", element.getSource());
15941      }
15942      if (element.hasParent()) {
15943        composeReference("parent", element.getParent());
15944      }
15945      if (element.hasOperationalStatusElement())
15946        composeEnumeration("operationalStatus", element.getOperationalStatusElement(),
15947            new DeviceMetric.DeviceMetricOperationalStatusEnumFactory());
15948      if (element.hasColorElement())
15949        composeEnumeration("color", element.getColorElement(), new DeviceMetric.DeviceMetricColorEnumFactory());
15950      if (element.hasCategoryElement())
15951        composeEnumeration("category", element.getCategoryElement(),
15952            new DeviceMetric.DeviceMetricCategoryEnumFactory());
15953      if (element.hasMeasurementPeriod()) {
15954        composeTiming("measurementPeriod", element.getMeasurementPeriod());
15955      }
15956      if (element.hasCalibration()) {
15957        for (DeviceMetric.DeviceMetricCalibrationComponent e : element.getCalibration())
15958          composeDeviceMetricDeviceMetricCalibrationComponent("calibration", e);
15959      }
15960      composeElementClose(element);
15961      xml.exit(FHIR_NS, name);
15962    }
15963  }
15964
15965  protected void composeDeviceMetricDeviceMetricCalibrationComponent(String name,
15966      DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
15967    if (element != null) {
15968      composeElementAttributes(element);
15969      xml.enter(FHIR_NS, name);
15970      composeBackboneElements(element);
15971      if (element.hasTypeElement())
15972        composeEnumeration("type", element.getTypeElement(), new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory());
15973      if (element.hasStateElement())
15974        composeEnumeration("state", element.getStateElement(),
15975            new DeviceMetric.DeviceMetricCalibrationStateEnumFactory());
15976      if (element.hasTimeElement()) {
15977        composeInstant("time", element.getTimeElement());
15978      }
15979      composeElementClose(element);
15980      xml.exit(FHIR_NS, name);
15981    }
15982  }
15983
15984  protected void composeDeviceUseRequest(String name, DeviceUseRequest element) throws IOException {
15985    if (element != null) {
15986      composeDomainResourceAttributes(element);
15987      xml.enter(FHIR_NS, name);
15988      composeDomainResourceElements(element);
15989      if (element.hasBodySite()) {
15990        composeType("bodySite", element.getBodySite());
15991      }
15992      if (element.hasStatusElement())
15993        composeEnumeration("status", element.getStatusElement(),
15994            new DeviceUseRequest.DeviceUseRequestStatusEnumFactory());
15995      if (element.hasDevice()) {
15996        composeReference("device", element.getDevice());
15997      }
15998      if (element.hasEncounter()) {
15999        composeReference("encounter", element.getEncounter());
16000      }
16001      if (element.hasIdentifier()) {
16002        for (Identifier e : element.getIdentifier())
16003          composeIdentifier("identifier", e);
16004      }
16005      if (element.hasIndication()) {
16006        for (CodeableConcept e : element.getIndication())
16007          composeCodeableConcept("indication", e);
16008      }
16009      if (element.hasNotes()) {
16010        for (StringType e : element.getNotes())
16011          composeString("notes", e);
16012      }
16013      if (element.hasPrnReason()) {
16014        for (CodeableConcept e : element.getPrnReason())
16015          composeCodeableConcept("prnReason", e);
16016      }
16017      if (element.hasOrderedOnElement()) {
16018        composeDateTime("orderedOn", element.getOrderedOnElement());
16019      }
16020      if (element.hasRecordedOnElement()) {
16021        composeDateTime("recordedOn", element.getRecordedOnElement());
16022      }
16023      if (element.hasSubject()) {
16024        composeReference("subject", element.getSubject());
16025      }
16026      if (element.hasTiming()) {
16027        composeType("timing", element.getTiming());
16028      }
16029      if (element.hasPriorityElement())
16030        composeEnumeration("priority", element.getPriorityElement(),
16031            new DeviceUseRequest.DeviceUseRequestPriorityEnumFactory());
16032      composeElementClose(element);
16033      xml.exit(FHIR_NS, name);
16034    }
16035  }
16036
16037  protected void composeDeviceUseStatement(String name, DeviceUseStatement element) throws IOException {
16038    if (element != null) {
16039      composeDomainResourceAttributes(element);
16040      xml.enter(FHIR_NS, name);
16041      composeDomainResourceElements(element);
16042      if (element.hasBodySite()) {
16043        composeType("bodySite", element.getBodySite());
16044      }
16045      if (element.hasWhenUsed()) {
16046        composePeriod("whenUsed", element.getWhenUsed());
16047      }
16048      if (element.hasDevice()) {
16049        composeReference("device", element.getDevice());
16050      }
16051      if (element.hasIdentifier()) {
16052        for (Identifier e : element.getIdentifier())
16053          composeIdentifier("identifier", e);
16054      }
16055      if (element.hasIndication()) {
16056        for (CodeableConcept e : element.getIndication())
16057          composeCodeableConcept("indication", e);
16058      }
16059      if (element.hasNotes()) {
16060        for (StringType e : element.getNotes())
16061          composeString("notes", e);
16062      }
16063      if (element.hasRecordedOnElement()) {
16064        composeDateTime("recordedOn", element.getRecordedOnElement());
16065      }
16066      if (element.hasSubject()) {
16067        composeReference("subject", element.getSubject());
16068      }
16069      if (element.hasTiming()) {
16070        composeType("timing", element.getTiming());
16071      }
16072      composeElementClose(element);
16073      xml.exit(FHIR_NS, name);
16074    }
16075  }
16076
16077  protected void composeDiagnosticOrder(String name, DiagnosticOrder element) throws IOException {
16078    if (element != null) {
16079      composeDomainResourceAttributes(element);
16080      xml.enter(FHIR_NS, name);
16081      composeDomainResourceElements(element);
16082      if (element.hasSubject()) {
16083        composeReference("subject", element.getSubject());
16084      }
16085      if (element.hasOrderer()) {
16086        composeReference("orderer", element.getOrderer());
16087      }
16088      if (element.hasIdentifier()) {
16089        for (Identifier e : element.getIdentifier())
16090          composeIdentifier("identifier", e);
16091      }
16092      if (element.hasEncounter()) {
16093        composeReference("encounter", element.getEncounter());
16094      }
16095      if (element.hasReason()) {
16096        for (CodeableConcept e : element.getReason())
16097          composeCodeableConcept("reason", e);
16098      }
16099      if (element.hasSupportingInformation()) {
16100        for (Reference e : element.getSupportingInformation())
16101          composeReference("supportingInformation", e);
16102      }
16103      if (element.hasSpecimen()) {
16104        for (Reference e : element.getSpecimen())
16105          composeReference("specimen", e);
16106      }
16107      if (element.hasStatusElement())
16108        composeEnumeration("status", element.getStatusElement(),
16109            new DiagnosticOrder.DiagnosticOrderStatusEnumFactory());
16110      if (element.hasPriorityElement())
16111        composeEnumeration("priority", element.getPriorityElement(),
16112            new DiagnosticOrder.DiagnosticOrderPriorityEnumFactory());
16113      if (element.hasEvent()) {
16114        for (DiagnosticOrder.DiagnosticOrderEventComponent e : element.getEvent())
16115          composeDiagnosticOrderDiagnosticOrderEventComponent("event", e);
16116      }
16117      if (element.hasItem()) {
16118        for (DiagnosticOrder.DiagnosticOrderItemComponent e : element.getItem())
16119          composeDiagnosticOrderDiagnosticOrderItemComponent("item", e);
16120      }
16121      if (element.hasNote()) {
16122        for (Annotation e : element.getNote())
16123          composeAnnotation("note", e);
16124      }
16125      composeElementClose(element);
16126      xml.exit(FHIR_NS, name);
16127    }
16128  }
16129
16130  protected void composeDiagnosticOrderDiagnosticOrderEventComponent(String name,
16131      DiagnosticOrder.DiagnosticOrderEventComponent element) throws IOException {
16132    if (element != null) {
16133      composeElementAttributes(element);
16134      xml.enter(FHIR_NS, name);
16135      composeBackboneElements(element);
16136      if (element.hasStatusElement())
16137        composeEnumeration("status", element.getStatusElement(),
16138            new DiagnosticOrder.DiagnosticOrderStatusEnumFactory());
16139      if (element.hasDescription()) {
16140        composeCodeableConcept("description", element.getDescription());
16141      }
16142      if (element.hasDateTimeElement()) {
16143        composeDateTime("dateTime", element.getDateTimeElement());
16144      }
16145      if (element.hasActor()) {
16146        composeReference("actor", element.getActor());
16147      }
16148      composeElementClose(element);
16149      xml.exit(FHIR_NS, name);
16150    }
16151  }
16152
16153  protected void composeDiagnosticOrderDiagnosticOrderItemComponent(String name,
16154      DiagnosticOrder.DiagnosticOrderItemComponent element) throws IOException {
16155    if (element != null) {
16156      composeElementAttributes(element);
16157      xml.enter(FHIR_NS, name);
16158      composeBackboneElements(element);
16159      if (element.hasCode()) {
16160        composeCodeableConcept("code", element.getCode());
16161      }
16162      if (element.hasSpecimen()) {
16163        for (Reference e : element.getSpecimen())
16164          composeReference("specimen", e);
16165      }
16166      if (element.hasBodySite()) {
16167        composeCodeableConcept("bodySite", element.getBodySite());
16168      }
16169      if (element.hasStatusElement())
16170        composeEnumeration("status", element.getStatusElement(),
16171            new DiagnosticOrder.DiagnosticOrderStatusEnumFactory());
16172      if (element.hasEvent()) {
16173        for (DiagnosticOrder.DiagnosticOrderEventComponent e : element.getEvent())
16174          composeDiagnosticOrderDiagnosticOrderEventComponent("event", e);
16175      }
16176      composeElementClose(element);
16177      xml.exit(FHIR_NS, name);
16178    }
16179  }
16180
16181  protected void composeDiagnosticReport(String name, DiagnosticReport element) throws IOException {
16182    if (element != null) {
16183      composeDomainResourceAttributes(element);
16184      xml.enter(FHIR_NS, name);
16185      composeDomainResourceElements(element);
16186      if (element.hasIdentifier()) {
16187        for (Identifier e : element.getIdentifier())
16188          composeIdentifier("identifier", e);
16189      }
16190      if (element.hasStatusElement())
16191        composeEnumeration("status", element.getStatusElement(),
16192            new DiagnosticReport.DiagnosticReportStatusEnumFactory());
16193      if (element.hasCategory()) {
16194        composeCodeableConcept("category", element.getCategory());
16195      }
16196      if (element.hasCode()) {
16197        composeCodeableConcept("code", element.getCode());
16198      }
16199      if (element.hasSubject()) {
16200        composeReference("subject", element.getSubject());
16201      }
16202      if (element.hasEncounter()) {
16203        composeReference("encounter", element.getEncounter());
16204      }
16205      if (element.hasEffective()) {
16206        composeType("effective", element.getEffective());
16207      }
16208      if (element.hasIssuedElement()) {
16209        composeInstant("issued", element.getIssuedElement());
16210      }
16211      if (element.hasPerformer()) {
16212        composeReference("performer", element.getPerformer());
16213      }
16214      if (element.hasRequest()) {
16215        for (Reference e : element.getRequest())
16216          composeReference("request", e);
16217      }
16218      if (element.hasSpecimen()) {
16219        for (Reference e : element.getSpecimen())
16220          composeReference("specimen", e);
16221      }
16222      if (element.hasResult()) {
16223        for (Reference e : element.getResult())
16224          composeReference("result", e);
16225      }
16226      if (element.hasImagingStudy()) {
16227        for (Reference e : element.getImagingStudy())
16228          composeReference("imagingStudy", e);
16229      }
16230      if (element.hasImage()) {
16231        for (DiagnosticReport.DiagnosticReportImageComponent e : element.getImage())
16232          composeDiagnosticReportDiagnosticReportImageComponent("image", e);
16233      }
16234      if (element.hasConclusionElement()) {
16235        composeString("conclusion", element.getConclusionElement());
16236      }
16237      if (element.hasCodedDiagnosis()) {
16238        for (CodeableConcept e : element.getCodedDiagnosis())
16239          composeCodeableConcept("codedDiagnosis", e);
16240      }
16241      if (element.hasPresentedForm()) {
16242        for (Attachment e : element.getPresentedForm())
16243          composeAttachment("presentedForm", e);
16244      }
16245      composeElementClose(element);
16246      xml.exit(FHIR_NS, name);
16247    }
16248  }
16249
16250  protected void composeDiagnosticReportDiagnosticReportImageComponent(String name,
16251      DiagnosticReport.DiagnosticReportImageComponent element) throws IOException {
16252    if (element != null) {
16253      composeElementAttributes(element);
16254      xml.enter(FHIR_NS, name);
16255      composeBackboneElements(element);
16256      if (element.hasCommentElement()) {
16257        composeString("comment", element.getCommentElement());
16258      }
16259      if (element.hasLink()) {
16260        composeReference("link", element.getLink());
16261      }
16262      composeElementClose(element);
16263      xml.exit(FHIR_NS, name);
16264    }
16265  }
16266
16267  protected void composeDocumentManifest(String name, DocumentManifest element) throws IOException {
16268    if (element != null) {
16269      composeDomainResourceAttributes(element);
16270      xml.enter(FHIR_NS, name);
16271      composeDomainResourceElements(element);
16272      if (element.hasMasterIdentifier()) {
16273        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
16274      }
16275      if (element.hasIdentifier()) {
16276        for (Identifier e : element.getIdentifier())
16277          composeIdentifier("identifier", e);
16278      }
16279      if (element.hasSubject()) {
16280        composeReference("subject", element.getSubject());
16281      }
16282      if (element.hasRecipient()) {
16283        for (Reference e : element.getRecipient())
16284          composeReference("recipient", e);
16285      }
16286      if (element.hasType()) {
16287        composeCodeableConcept("type", element.getType());
16288      }
16289      if (element.hasAuthor()) {
16290        for (Reference e : element.getAuthor())
16291          composeReference("author", e);
16292      }
16293      if (element.hasCreatedElement()) {
16294        composeDateTime("created", element.getCreatedElement());
16295      }
16296      if (element.hasSourceElement()) {
16297        composeUri("source", element.getSourceElement());
16298      }
16299      if (element.hasStatusElement())
16300        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
16301      if (element.hasDescriptionElement()) {
16302        composeString("description", element.getDescriptionElement());
16303      }
16304      if (element.hasContent()) {
16305        for (DocumentManifest.DocumentManifestContentComponent e : element.getContent())
16306          composeDocumentManifestDocumentManifestContentComponent("content", e);
16307      }
16308      if (element.hasRelated()) {
16309        for (DocumentManifest.DocumentManifestRelatedComponent e : element.getRelated())
16310          composeDocumentManifestDocumentManifestRelatedComponent("related", e);
16311      }
16312      composeElementClose(element);
16313      xml.exit(FHIR_NS, name);
16314    }
16315  }
16316
16317  protected void composeDocumentManifestDocumentManifestContentComponent(String name,
16318      DocumentManifest.DocumentManifestContentComponent element) throws IOException {
16319    if (element != null) {
16320      composeElementAttributes(element);
16321      xml.enter(FHIR_NS, name);
16322      composeBackboneElements(element);
16323      if (element.hasP()) {
16324        composeType("p", element.getP());
16325      }
16326      composeElementClose(element);
16327      xml.exit(FHIR_NS, name);
16328    }
16329  }
16330
16331  protected void composeDocumentManifestDocumentManifestRelatedComponent(String name,
16332      DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
16333    if (element != null) {
16334      composeElementAttributes(element);
16335      xml.enter(FHIR_NS, name);
16336      composeBackboneElements(element);
16337      if (element.hasIdentifier()) {
16338        composeIdentifier("identifier", element.getIdentifier());
16339      }
16340      if (element.hasRef()) {
16341        composeReference("ref", element.getRef());
16342      }
16343      composeElementClose(element);
16344      xml.exit(FHIR_NS, name);
16345    }
16346  }
16347
16348  protected void composeDocumentReference(String name, DocumentReference element) throws IOException {
16349    if (element != null) {
16350      composeDomainResourceAttributes(element);
16351      xml.enter(FHIR_NS, name);
16352      composeDomainResourceElements(element);
16353      if (element.hasMasterIdentifier()) {
16354        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
16355      }
16356      if (element.hasIdentifier()) {
16357        for (Identifier e : element.getIdentifier())
16358          composeIdentifier("identifier", e);
16359      }
16360      if (element.hasSubject()) {
16361        composeReference("subject", element.getSubject());
16362      }
16363      if (element.hasType()) {
16364        composeCodeableConcept("type", element.getType());
16365      }
16366      if (element.hasClass_()) {
16367        composeCodeableConcept("class", element.getClass_());
16368      }
16369      if (element.hasAuthor()) {
16370        for (Reference e : element.getAuthor())
16371          composeReference("author", e);
16372      }
16373      if (element.hasCustodian()) {
16374        composeReference("custodian", element.getCustodian());
16375      }
16376      if (element.hasAuthenticator()) {
16377        composeReference("authenticator", element.getAuthenticator());
16378      }
16379      if (element.hasCreatedElement()) {
16380        composeDateTime("created", element.getCreatedElement());
16381      }
16382      if (element.hasIndexedElement()) {
16383        composeInstant("indexed", element.getIndexedElement());
16384      }
16385      if (element.hasStatusElement())
16386        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
16387      if (element.hasDocStatus()) {
16388        composeCodeableConcept("docStatus", element.getDocStatus());
16389      }
16390      if (element.hasRelatesTo()) {
16391        for (DocumentReference.DocumentReferenceRelatesToComponent e : element.getRelatesTo())
16392          composeDocumentReferenceDocumentReferenceRelatesToComponent("relatesTo", e);
16393      }
16394      if (element.hasDescriptionElement()) {
16395        composeString("description", element.getDescriptionElement());
16396      }
16397      if (element.hasSecurityLabel()) {
16398        for (CodeableConcept e : element.getSecurityLabel())
16399          composeCodeableConcept("securityLabel", e);
16400      }
16401      if (element.hasContent()) {
16402        for (DocumentReference.DocumentReferenceContentComponent e : element.getContent())
16403          composeDocumentReferenceDocumentReferenceContentComponent("content", e);
16404      }
16405      if (element.hasContext()) {
16406        composeDocumentReferenceDocumentReferenceContextComponent("context", element.getContext());
16407      }
16408      composeElementClose(element);
16409      xml.exit(FHIR_NS, name);
16410    }
16411  }
16412
16413  protected void composeDocumentReferenceDocumentReferenceRelatesToComponent(String name,
16414      DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
16415    if (element != null) {
16416      composeElementAttributes(element);
16417      xml.enter(FHIR_NS, name);
16418      composeBackboneElements(element);
16419      if (element.hasCodeElement())
16420        composeEnumeration("code", element.getCodeElement(),
16421            new DocumentReference.DocumentRelationshipTypeEnumFactory());
16422      if (element.hasTarget()) {
16423        composeReference("target", element.getTarget());
16424      }
16425      composeElementClose(element);
16426      xml.exit(FHIR_NS, name);
16427    }
16428  }
16429
16430  protected void composeDocumentReferenceDocumentReferenceContentComponent(String name,
16431      DocumentReference.DocumentReferenceContentComponent element) throws IOException {
16432    if (element != null) {
16433      composeElementAttributes(element);
16434      xml.enter(FHIR_NS, name);
16435      composeBackboneElements(element);
16436      if (element.hasAttachment()) {
16437        composeAttachment("attachment", element.getAttachment());
16438      }
16439      if (element.hasFormat()) {
16440        for (Coding e : element.getFormat())
16441          composeCoding("format", e);
16442      }
16443      composeElementClose(element);
16444      xml.exit(FHIR_NS, name);
16445    }
16446  }
16447
16448  protected void composeDocumentReferenceDocumentReferenceContextComponent(String name,
16449      DocumentReference.DocumentReferenceContextComponent element) throws IOException {
16450    if (element != null) {
16451      composeElementAttributes(element);
16452      xml.enter(FHIR_NS, name);
16453      composeBackboneElements(element);
16454      if (element.hasEncounter()) {
16455        composeReference("encounter", element.getEncounter());
16456      }
16457      if (element.hasEvent()) {
16458        for (CodeableConcept e : element.getEvent())
16459          composeCodeableConcept("event", e);
16460      }
16461      if (element.hasPeriod()) {
16462        composePeriod("period", element.getPeriod());
16463      }
16464      if (element.hasFacilityType()) {
16465        composeCodeableConcept("facilityType", element.getFacilityType());
16466      }
16467      if (element.hasPracticeSetting()) {
16468        composeCodeableConcept("practiceSetting", element.getPracticeSetting());
16469      }
16470      if (element.hasSourcePatientInfo()) {
16471        composeReference("sourcePatientInfo", element.getSourcePatientInfo());
16472      }
16473      if (element.hasRelated()) {
16474        for (DocumentReference.DocumentReferenceContextRelatedComponent e : element.getRelated())
16475          composeDocumentReferenceDocumentReferenceContextRelatedComponent("related", e);
16476      }
16477      composeElementClose(element);
16478      xml.exit(FHIR_NS, name);
16479    }
16480  }
16481
16482  protected void composeDocumentReferenceDocumentReferenceContextRelatedComponent(String name,
16483      DocumentReference.DocumentReferenceContextRelatedComponent element) throws IOException {
16484    if (element != null) {
16485      composeElementAttributes(element);
16486      xml.enter(FHIR_NS, name);
16487      composeBackboneElements(element);
16488      if (element.hasIdentifier()) {
16489        composeIdentifier("identifier", element.getIdentifier());
16490      }
16491      if (element.hasRef()) {
16492        composeReference("ref", element.getRef());
16493      }
16494      composeElementClose(element);
16495      xml.exit(FHIR_NS, name);
16496    }
16497  }
16498
16499  protected void composeEligibilityRequest(String name, EligibilityRequest element) throws IOException {
16500    if (element != null) {
16501      composeDomainResourceAttributes(element);
16502      xml.enter(FHIR_NS, name);
16503      composeDomainResourceElements(element);
16504      if (element.hasIdentifier()) {
16505        for (Identifier e : element.getIdentifier())
16506          composeIdentifier("identifier", e);
16507      }
16508      if (element.hasRuleset()) {
16509        composeCoding("ruleset", element.getRuleset());
16510      }
16511      if (element.hasOriginalRuleset()) {
16512        composeCoding("originalRuleset", element.getOriginalRuleset());
16513      }
16514      if (element.hasCreatedElement()) {
16515        composeDateTime("created", element.getCreatedElement());
16516      }
16517      if (element.hasTarget()) {
16518        composeReference("target", element.getTarget());
16519      }
16520      if (element.hasProvider()) {
16521        composeReference("provider", element.getProvider());
16522      }
16523      if (element.hasOrganization()) {
16524        composeReference("organization", element.getOrganization());
16525      }
16526      composeElementClose(element);
16527      xml.exit(FHIR_NS, name);
16528    }
16529  }
16530
16531  protected void composeEligibilityResponse(String name, EligibilityResponse element) throws IOException {
16532    if (element != null) {
16533      composeDomainResourceAttributes(element);
16534      xml.enter(FHIR_NS, name);
16535      composeDomainResourceElements(element);
16536      if (element.hasIdentifier()) {
16537        for (Identifier e : element.getIdentifier())
16538          composeIdentifier("identifier", e);
16539      }
16540      if (element.hasRequest()) {
16541        composeReference("request", element.getRequest());
16542      }
16543      if (element.hasOutcomeElement())
16544        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
16545      if (element.hasDispositionElement()) {
16546        composeString("disposition", element.getDispositionElement());
16547      }
16548      if (element.hasRuleset()) {
16549        composeCoding("ruleset", element.getRuleset());
16550      }
16551      if (element.hasOriginalRuleset()) {
16552        composeCoding("originalRuleset", element.getOriginalRuleset());
16553      }
16554      if (element.hasCreatedElement()) {
16555        composeDateTime("created", element.getCreatedElement());
16556      }
16557      if (element.hasOrganization()) {
16558        composeReference("organization", element.getOrganization());
16559      }
16560      if (element.hasRequestProvider()) {
16561        composeReference("requestProvider", element.getRequestProvider());
16562      }
16563      if (element.hasRequestOrganization()) {
16564        composeReference("requestOrganization", element.getRequestOrganization());
16565      }
16566      composeElementClose(element);
16567      xml.exit(FHIR_NS, name);
16568    }
16569  }
16570
16571  protected void composeEncounter(String name, Encounter element) throws IOException {
16572    if (element != null) {
16573      composeDomainResourceAttributes(element);
16574      xml.enter(FHIR_NS, name);
16575      composeDomainResourceElements(element);
16576      if (element.hasIdentifier()) {
16577        for (Identifier e : element.getIdentifier())
16578          composeIdentifier("identifier", e);
16579      }
16580      if (element.hasStatusElement())
16581        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStateEnumFactory());
16582      if (element.hasStatusHistory()) {
16583        for (Encounter.EncounterStatusHistoryComponent e : element.getStatusHistory())
16584          composeEncounterEncounterStatusHistoryComponent("statusHistory", e);
16585      }
16586      if (element.hasClass_Element())
16587        composeEnumeration("class", element.getClass_Element(), new Encounter.EncounterClassEnumFactory());
16588      if (element.hasType()) {
16589        for (CodeableConcept e : element.getType())
16590          composeCodeableConcept("type", e);
16591      }
16592      if (element.hasPriority()) {
16593        composeCodeableConcept("priority", element.getPriority());
16594      }
16595      if (element.hasPatient()) {
16596        composeReference("patient", element.getPatient());
16597      }
16598      if (element.hasEpisodeOfCare()) {
16599        for (Reference e : element.getEpisodeOfCare())
16600          composeReference("episodeOfCare", e);
16601      }
16602      if (element.hasIncomingReferral()) {
16603        for (Reference e : element.getIncomingReferral())
16604          composeReference("incomingReferral", e);
16605      }
16606      if (element.hasParticipant()) {
16607        for (Encounter.EncounterParticipantComponent e : element.getParticipant())
16608          composeEncounterEncounterParticipantComponent("participant", e);
16609      }
16610      if (element.hasAppointment()) {
16611        composeReference("appointment", element.getAppointment());
16612      }
16613      if (element.hasPeriod()) {
16614        composePeriod("period", element.getPeriod());
16615      }
16616      if (element.hasLength()) {
16617        composeDuration("length", element.getLength());
16618      }
16619      if (element.hasReason()) {
16620        for (CodeableConcept e : element.getReason())
16621          composeCodeableConcept("reason", e);
16622      }
16623      if (element.hasIndication()) {
16624        for (Reference e : element.getIndication())
16625          composeReference("indication", e);
16626      }
16627      if (element.hasHospitalization()) {
16628        composeEncounterEncounterHospitalizationComponent("hospitalization", element.getHospitalization());
16629      }
16630      if (element.hasLocation()) {
16631        for (Encounter.EncounterLocationComponent e : element.getLocation())
16632          composeEncounterEncounterLocationComponent("location", e);
16633      }
16634      if (element.hasServiceProvider()) {
16635        composeReference("serviceProvider", element.getServiceProvider());
16636      }
16637      if (element.hasPartOf()) {
16638        composeReference("partOf", element.getPartOf());
16639      }
16640      composeElementClose(element);
16641      xml.exit(FHIR_NS, name);
16642    }
16643  }
16644
16645  protected void composeEncounterEncounterStatusHistoryComponent(String name,
16646      Encounter.EncounterStatusHistoryComponent element) throws IOException {
16647    if (element != null) {
16648      composeElementAttributes(element);
16649      xml.enter(FHIR_NS, name);
16650      composeBackboneElements(element);
16651      if (element.hasStatusElement())
16652        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStateEnumFactory());
16653      if (element.hasPeriod()) {
16654        composePeriod("period", element.getPeriod());
16655      }
16656      composeElementClose(element);
16657      xml.exit(FHIR_NS, name);
16658    }
16659  }
16660
16661  protected void composeEncounterEncounterParticipantComponent(String name,
16662      Encounter.EncounterParticipantComponent element) throws IOException {
16663    if (element != null) {
16664      composeElementAttributes(element);
16665      xml.enter(FHIR_NS, name);
16666      composeBackboneElements(element);
16667      if (element.hasType()) {
16668        for (CodeableConcept e : element.getType())
16669          composeCodeableConcept("type", e);
16670      }
16671      if (element.hasPeriod()) {
16672        composePeriod("period", element.getPeriod());
16673      }
16674      if (element.hasIndividual()) {
16675        composeReference("individual", element.getIndividual());
16676      }
16677      composeElementClose(element);
16678      xml.exit(FHIR_NS, name);
16679    }
16680  }
16681
16682  protected void composeEncounterEncounterHospitalizationComponent(String name,
16683      Encounter.EncounterHospitalizationComponent element) throws IOException {
16684    if (element != null) {
16685      composeElementAttributes(element);
16686      xml.enter(FHIR_NS, name);
16687      composeBackboneElements(element);
16688      if (element.hasPreAdmissionIdentifier()) {
16689        composeIdentifier("preAdmissionIdentifier", element.getPreAdmissionIdentifier());
16690      }
16691      if (element.hasOrigin()) {
16692        composeReference("origin", element.getOrigin());
16693      }
16694      if (element.hasAdmitSource()) {
16695        composeCodeableConcept("admitSource", element.getAdmitSource());
16696      }
16697      if (element.hasAdmittingDiagnosis()) {
16698        for (Reference e : element.getAdmittingDiagnosis())
16699          composeReference("admittingDiagnosis", e);
16700      }
16701      if (element.hasReAdmission()) {
16702        composeCodeableConcept("reAdmission", element.getReAdmission());
16703      }
16704      if (element.hasDietPreference()) {
16705        for (CodeableConcept e : element.getDietPreference())
16706          composeCodeableConcept("dietPreference", e);
16707      }
16708      if (element.hasSpecialCourtesy()) {
16709        for (CodeableConcept e : element.getSpecialCourtesy())
16710          composeCodeableConcept("specialCourtesy", e);
16711      }
16712      if (element.hasSpecialArrangement()) {
16713        for (CodeableConcept e : element.getSpecialArrangement())
16714          composeCodeableConcept("specialArrangement", e);
16715      }
16716      if (element.hasDestination()) {
16717        composeReference("destination", element.getDestination());
16718      }
16719      if (element.hasDischargeDisposition()) {
16720        composeCodeableConcept("dischargeDisposition", element.getDischargeDisposition());
16721      }
16722      if (element.hasDischargeDiagnosis()) {
16723        for (Reference e : element.getDischargeDiagnosis())
16724          composeReference("dischargeDiagnosis", e);
16725      }
16726      composeElementClose(element);
16727      xml.exit(FHIR_NS, name);
16728    }
16729  }
16730
16731  protected void composeEncounterEncounterLocationComponent(String name, Encounter.EncounterLocationComponent element)
16732      throws IOException {
16733    if (element != null) {
16734      composeElementAttributes(element);
16735      xml.enter(FHIR_NS, name);
16736      composeBackboneElements(element);
16737      if (element.hasLocation()) {
16738        composeReference("location", element.getLocation());
16739      }
16740      if (element.hasStatusElement())
16741        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterLocationStatusEnumFactory());
16742      if (element.hasPeriod()) {
16743        composePeriod("period", element.getPeriod());
16744      }
16745      composeElementClose(element);
16746      xml.exit(FHIR_NS, name);
16747    }
16748  }
16749
16750  protected void composeEnrollmentRequest(String name, EnrollmentRequest element) throws IOException {
16751    if (element != null) {
16752      composeDomainResourceAttributes(element);
16753      xml.enter(FHIR_NS, name);
16754      composeDomainResourceElements(element);
16755      if (element.hasIdentifier()) {
16756        for (Identifier e : element.getIdentifier())
16757          composeIdentifier("identifier", e);
16758      }
16759      if (element.hasRuleset()) {
16760        composeCoding("ruleset", element.getRuleset());
16761      }
16762      if (element.hasOriginalRuleset()) {
16763        composeCoding("originalRuleset", element.getOriginalRuleset());
16764      }
16765      if (element.hasCreatedElement()) {
16766        composeDateTime("created", element.getCreatedElement());
16767      }
16768      if (element.hasTarget()) {
16769        composeReference("target", element.getTarget());
16770      }
16771      if (element.hasProvider()) {
16772        composeReference("provider", element.getProvider());
16773      }
16774      if (element.hasOrganization()) {
16775        composeReference("organization", element.getOrganization());
16776      }
16777      if (element.hasSubject()) {
16778        composeReference("subject", element.getSubject());
16779      }
16780      if (element.hasCoverage()) {
16781        composeReference("coverage", element.getCoverage());
16782      }
16783      if (element.hasRelationship()) {
16784        composeCoding("relationship", element.getRelationship());
16785      }
16786      composeElementClose(element);
16787      xml.exit(FHIR_NS, name);
16788    }
16789  }
16790
16791  protected void composeEnrollmentResponse(String name, EnrollmentResponse element) throws IOException {
16792    if (element != null) {
16793      composeDomainResourceAttributes(element);
16794      xml.enter(FHIR_NS, name);
16795      composeDomainResourceElements(element);
16796      if (element.hasIdentifier()) {
16797        for (Identifier e : element.getIdentifier())
16798          composeIdentifier("identifier", e);
16799      }
16800      if (element.hasRequest()) {
16801        composeReference("request", element.getRequest());
16802      }
16803      if (element.hasOutcomeElement())
16804        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
16805      if (element.hasDispositionElement()) {
16806        composeString("disposition", element.getDispositionElement());
16807      }
16808      if (element.hasRuleset()) {
16809        composeCoding("ruleset", element.getRuleset());
16810      }
16811      if (element.hasOriginalRuleset()) {
16812        composeCoding("originalRuleset", element.getOriginalRuleset());
16813      }
16814      if (element.hasCreatedElement()) {
16815        composeDateTime("created", element.getCreatedElement());
16816      }
16817      if (element.hasOrganization()) {
16818        composeReference("organization", element.getOrganization());
16819      }
16820      if (element.hasRequestProvider()) {
16821        composeReference("requestProvider", element.getRequestProvider());
16822      }
16823      if (element.hasRequestOrganization()) {
16824        composeReference("requestOrganization", element.getRequestOrganization());
16825      }
16826      composeElementClose(element);
16827      xml.exit(FHIR_NS, name);
16828    }
16829  }
16830
16831  protected void composeEpisodeOfCare(String name, EpisodeOfCare element) throws IOException {
16832    if (element != null) {
16833      composeDomainResourceAttributes(element);
16834      xml.enter(FHIR_NS, name);
16835      composeDomainResourceElements(element);
16836      if (element.hasIdentifier()) {
16837        for (Identifier e : element.getIdentifier())
16838          composeIdentifier("identifier", e);
16839      }
16840      if (element.hasStatusElement())
16841        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
16842      if (element.hasStatusHistory()) {
16843        for (EpisodeOfCare.EpisodeOfCareStatusHistoryComponent e : element.getStatusHistory())
16844          composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent("statusHistory", e);
16845      }
16846      if (element.hasType()) {
16847        for (CodeableConcept e : element.getType())
16848          composeCodeableConcept("type", e);
16849      }
16850      if (element.hasCondition()) {
16851        for (Reference e : element.getCondition())
16852          composeReference("condition", e);
16853      }
16854      if (element.hasPatient()) {
16855        composeReference("patient", element.getPatient());
16856      }
16857      if (element.hasManagingOrganization()) {
16858        composeReference("managingOrganization", element.getManagingOrganization());
16859      }
16860      if (element.hasPeriod()) {
16861        composePeriod("period", element.getPeriod());
16862      }
16863      if (element.hasReferralRequest()) {
16864        for (Reference e : element.getReferralRequest())
16865          composeReference("referralRequest", e);
16866      }
16867      if (element.hasCareManager()) {
16868        composeReference("careManager", element.getCareManager());
16869      }
16870      if (element.hasCareTeam()) {
16871        for (EpisodeOfCare.EpisodeOfCareCareTeamComponent e : element.getCareTeam())
16872          composeEpisodeOfCareEpisodeOfCareCareTeamComponent("careTeam", e);
16873      }
16874      composeElementClose(element);
16875      xml.exit(FHIR_NS, name);
16876    }
16877  }
16878
16879  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(String name,
16880      EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
16881    if (element != null) {
16882      composeElementAttributes(element);
16883      xml.enter(FHIR_NS, name);
16884      composeBackboneElements(element);
16885      if (element.hasStatusElement())
16886        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
16887      if (element.hasPeriod()) {
16888        composePeriod("period", element.getPeriod());
16889      }
16890      composeElementClose(element);
16891      xml.exit(FHIR_NS, name);
16892    }
16893  }
16894
16895  protected void composeEpisodeOfCareEpisodeOfCareCareTeamComponent(String name,
16896      EpisodeOfCare.EpisodeOfCareCareTeamComponent element) throws IOException {
16897    if (element != null) {
16898      composeElementAttributes(element);
16899      xml.enter(FHIR_NS, name);
16900      composeBackboneElements(element);
16901      if (element.hasRole()) {
16902        for (CodeableConcept e : element.getRole())
16903          composeCodeableConcept("role", e);
16904      }
16905      if (element.hasPeriod()) {
16906        composePeriod("period", element.getPeriod());
16907      }
16908      if (element.hasMember()) {
16909        composeReference("member", element.getMember());
16910      }
16911      composeElementClose(element);
16912      xml.exit(FHIR_NS, name);
16913    }
16914  }
16915
16916  protected void composeExplanationOfBenefit(String name, ExplanationOfBenefit element) throws IOException {
16917    if (element != null) {
16918      composeDomainResourceAttributes(element);
16919      xml.enter(FHIR_NS, name);
16920      composeDomainResourceElements(element);
16921      if (element.hasIdentifier()) {
16922        for (Identifier e : element.getIdentifier())
16923          composeIdentifier("identifier", e);
16924      }
16925      if (element.hasRequest()) {
16926        composeReference("request", element.getRequest());
16927      }
16928      if (element.hasOutcomeElement())
16929        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
16930      if (element.hasDispositionElement()) {
16931        composeString("disposition", element.getDispositionElement());
16932      }
16933      if (element.hasRuleset()) {
16934        composeCoding("ruleset", element.getRuleset());
16935      }
16936      if (element.hasOriginalRuleset()) {
16937        composeCoding("originalRuleset", element.getOriginalRuleset());
16938      }
16939      if (element.hasCreatedElement()) {
16940        composeDateTime("created", element.getCreatedElement());
16941      }
16942      if (element.hasOrganization()) {
16943        composeReference("organization", element.getOrganization());
16944      }
16945      if (element.hasRequestProvider()) {
16946        composeReference("requestProvider", element.getRequestProvider());
16947      }
16948      if (element.hasRequestOrganization()) {
16949        composeReference("requestOrganization", element.getRequestOrganization());
16950      }
16951      composeElementClose(element);
16952      xml.exit(FHIR_NS, name);
16953    }
16954  }
16955
16956  protected void composeFamilyMemberHistory(String name, FamilyMemberHistory element) throws IOException {
16957    if (element != null) {
16958      composeDomainResourceAttributes(element);
16959      xml.enter(FHIR_NS, name);
16960      composeDomainResourceElements(element);
16961      if (element.hasIdentifier()) {
16962        for (Identifier e : element.getIdentifier())
16963          composeIdentifier("identifier", e);
16964      }
16965      if (element.hasPatient()) {
16966        composeReference("patient", element.getPatient());
16967      }
16968      if (element.hasDateElement()) {
16969        composeDateTime("date", element.getDateElement());
16970      }
16971      if (element.hasStatusElement())
16972        composeEnumeration("status", element.getStatusElement(),
16973            new FamilyMemberHistory.FamilyHistoryStatusEnumFactory());
16974      if (element.hasNameElement()) {
16975        composeString("name", element.getNameElement());
16976      }
16977      if (element.hasRelationship()) {
16978        composeCodeableConcept("relationship", element.getRelationship());
16979      }
16980      if (element.hasGenderElement())
16981        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
16982      if (element.hasBorn()) {
16983        composeType("born", element.getBorn());
16984      }
16985      if (element.hasAge()) {
16986        composeType("age", element.getAge());
16987      }
16988      if (element.hasDeceased()) {
16989        composeType("deceased", element.getDeceased());
16990      }
16991      if (element.hasNote()) {
16992        composeAnnotation("note", element.getNote());
16993      }
16994      if (element.hasCondition()) {
16995        for (FamilyMemberHistory.FamilyMemberHistoryConditionComponent e : element.getCondition())
16996          composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent("condition", e);
16997      }
16998      composeElementClose(element);
16999      xml.exit(FHIR_NS, name);
17000    }
17001  }
17002
17003  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(String name,
17004      FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
17005    if (element != null) {
17006      composeElementAttributes(element);
17007      xml.enter(FHIR_NS, name);
17008      composeBackboneElements(element);
17009      if (element.hasCode()) {
17010        composeCodeableConcept("code", element.getCode());
17011      }
17012      if (element.hasOutcome()) {
17013        composeCodeableConcept("outcome", element.getOutcome());
17014      }
17015      if (element.hasOnset()) {
17016        composeType("onset", element.getOnset());
17017      }
17018      if (element.hasNote()) {
17019        composeAnnotation("note", element.getNote());
17020      }
17021      composeElementClose(element);
17022      xml.exit(FHIR_NS, name);
17023    }
17024  }
17025
17026  protected void composeFlag(String name, Flag element) throws IOException {
17027    if (element != null) {
17028      composeDomainResourceAttributes(element);
17029      xml.enter(FHIR_NS, name);
17030      composeDomainResourceElements(element);
17031      if (element.hasIdentifier()) {
17032        for (Identifier e : element.getIdentifier())
17033          composeIdentifier("identifier", e);
17034      }
17035      if (element.hasCategory()) {
17036        composeCodeableConcept("category", element.getCategory());
17037      }
17038      if (element.hasStatusElement())
17039        composeEnumeration("status", element.getStatusElement(), new Flag.FlagStatusEnumFactory());
17040      if (element.hasPeriod()) {
17041        composePeriod("period", element.getPeriod());
17042      }
17043      if (element.hasSubject()) {
17044        composeReference("subject", element.getSubject());
17045      }
17046      if (element.hasEncounter()) {
17047        composeReference("encounter", element.getEncounter());
17048      }
17049      if (element.hasAuthor()) {
17050        composeReference("author", element.getAuthor());
17051      }
17052      if (element.hasCode()) {
17053        composeCodeableConcept("code", element.getCode());
17054      }
17055      composeElementClose(element);
17056      xml.exit(FHIR_NS, name);
17057    }
17058  }
17059
17060  protected void composeGoal(String name, Goal element) throws IOException {
17061    if (element != null) {
17062      composeDomainResourceAttributes(element);
17063      xml.enter(FHIR_NS, name);
17064      composeDomainResourceElements(element);
17065      if (element.hasIdentifier()) {
17066        for (Identifier e : element.getIdentifier())
17067          composeIdentifier("identifier", e);
17068      }
17069      if (element.hasSubject()) {
17070        composeReference("subject", element.getSubject());
17071      }
17072      if (element.hasStart()) {
17073        composeType("start", element.getStart());
17074      }
17075      if (element.hasTarget()) {
17076        composeType("target", element.getTarget());
17077      }
17078      if (element.hasCategory()) {
17079        for (CodeableConcept e : element.getCategory())
17080          composeCodeableConcept("category", e);
17081      }
17082      if (element.hasDescriptionElement()) {
17083        composeString("description", element.getDescriptionElement());
17084      }
17085      if (element.hasStatusElement())
17086        composeEnumeration("status", element.getStatusElement(), new Goal.GoalStatusEnumFactory());
17087      if (element.hasStatusDateElement()) {
17088        composeDate("statusDate", element.getStatusDateElement());
17089      }
17090      if (element.hasStatusReason()) {
17091        composeCodeableConcept("statusReason", element.getStatusReason());
17092      }
17093      if (element.hasAuthor()) {
17094        composeReference("author", element.getAuthor());
17095      }
17096      if (element.hasPriority()) {
17097        composeCodeableConcept("priority", element.getPriority());
17098      }
17099      if (element.hasAddresses()) {
17100        for (Reference e : element.getAddresses())
17101          composeReference("addresses", e);
17102      }
17103      if (element.hasNote()) {
17104        for (Annotation e : element.getNote())
17105          composeAnnotation("note", e);
17106      }
17107      if (element.hasOutcome()) {
17108        for (Goal.GoalOutcomeComponent e : element.getOutcome())
17109          composeGoalGoalOutcomeComponent("outcome", e);
17110      }
17111      composeElementClose(element);
17112      xml.exit(FHIR_NS, name);
17113    }
17114  }
17115
17116  protected void composeGoalGoalOutcomeComponent(String name, Goal.GoalOutcomeComponent element) throws IOException {
17117    if (element != null) {
17118      composeElementAttributes(element);
17119      xml.enter(FHIR_NS, name);
17120      composeBackboneElements(element);
17121      if (element.hasResult()) {
17122        composeType("result", element.getResult());
17123      }
17124      composeElementClose(element);
17125      xml.exit(FHIR_NS, name);
17126    }
17127  }
17128
17129  protected void composeGroup(String name, Group element) throws IOException {
17130    if (element != null) {
17131      composeDomainResourceAttributes(element);
17132      xml.enter(FHIR_NS, name);
17133      composeDomainResourceElements(element);
17134      if (element.hasIdentifier()) {
17135        for (Identifier e : element.getIdentifier())
17136          composeIdentifier("identifier", e);
17137      }
17138      if (element.hasTypeElement())
17139        composeEnumeration("type", element.getTypeElement(), new Group.GroupTypeEnumFactory());
17140      if (element.hasActualElement()) {
17141        composeBoolean("actual", element.getActualElement());
17142      }
17143      if (element.hasCode()) {
17144        composeCodeableConcept("code", element.getCode());
17145      }
17146      if (element.hasNameElement()) {
17147        composeString("name", element.getNameElement());
17148      }
17149      if (element.hasQuantityElement()) {
17150        composeUnsignedInt("quantity", element.getQuantityElement());
17151      }
17152      if (element.hasCharacteristic()) {
17153        for (Group.GroupCharacteristicComponent e : element.getCharacteristic())
17154          composeGroupGroupCharacteristicComponent("characteristic", e);
17155      }
17156      if (element.hasMember()) {
17157        for (Group.GroupMemberComponent e : element.getMember())
17158          composeGroupGroupMemberComponent("member", e);
17159      }
17160      composeElementClose(element);
17161      xml.exit(FHIR_NS, name);
17162    }
17163  }
17164
17165  protected void composeGroupGroupCharacteristicComponent(String name, Group.GroupCharacteristicComponent element)
17166      throws IOException {
17167    if (element != null) {
17168      composeElementAttributes(element);
17169      xml.enter(FHIR_NS, name);
17170      composeBackboneElements(element);
17171      if (element.hasCode()) {
17172        composeCodeableConcept("code", element.getCode());
17173      }
17174      if (element.hasValue()) {
17175        composeType("value", element.getValue());
17176      }
17177      if (element.hasExcludeElement()) {
17178        composeBoolean("exclude", element.getExcludeElement());
17179      }
17180      if (element.hasPeriod()) {
17181        composePeriod("period", element.getPeriod());
17182      }
17183      composeElementClose(element);
17184      xml.exit(FHIR_NS, name);
17185    }
17186  }
17187
17188  protected void composeGroupGroupMemberComponent(String name, Group.GroupMemberComponent element) throws IOException {
17189    if (element != null) {
17190      composeElementAttributes(element);
17191      xml.enter(FHIR_NS, name);
17192      composeBackboneElements(element);
17193      if (element.hasEntity()) {
17194        composeReference("entity", element.getEntity());
17195      }
17196      if (element.hasPeriod()) {
17197        composePeriod("period", element.getPeriod());
17198      }
17199      if (element.hasInactiveElement()) {
17200        composeBoolean("inactive", element.getInactiveElement());
17201      }
17202      composeElementClose(element);
17203      xml.exit(FHIR_NS, name);
17204    }
17205  }
17206
17207  protected void composeHealthcareService(String name, HealthcareService element) throws IOException {
17208    if (element != null) {
17209      composeDomainResourceAttributes(element);
17210      xml.enter(FHIR_NS, name);
17211      composeDomainResourceElements(element);
17212      if (element.hasIdentifier()) {
17213        for (Identifier e : element.getIdentifier())
17214          composeIdentifier("identifier", e);
17215      }
17216      if (element.hasProvidedBy()) {
17217        composeReference("providedBy", element.getProvidedBy());
17218      }
17219      if (element.hasServiceCategory()) {
17220        composeCodeableConcept("serviceCategory", element.getServiceCategory());
17221      }
17222      if (element.hasServiceType()) {
17223        for (HealthcareService.ServiceTypeComponent e : element.getServiceType())
17224          composeHealthcareServiceServiceTypeComponent("serviceType", e);
17225      }
17226      if (element.hasLocation()) {
17227        composeReference("location", element.getLocation());
17228      }
17229      if (element.hasServiceNameElement()) {
17230        composeString("serviceName", element.getServiceNameElement());
17231      }
17232      if (element.hasCommentElement()) {
17233        composeString("comment", element.getCommentElement());
17234      }
17235      if (element.hasExtraDetailsElement()) {
17236        composeString("extraDetails", element.getExtraDetailsElement());
17237      }
17238      if (element.hasPhoto()) {
17239        composeAttachment("photo", element.getPhoto());
17240      }
17241      if (element.hasTelecom()) {
17242        for (ContactPoint e : element.getTelecom())
17243          composeContactPoint("telecom", e);
17244      }
17245      if (element.hasCoverageArea()) {
17246        for (Reference e : element.getCoverageArea())
17247          composeReference("coverageArea", e);
17248      }
17249      if (element.hasServiceProvisionCode()) {
17250        for (CodeableConcept e : element.getServiceProvisionCode())
17251          composeCodeableConcept("serviceProvisionCode", e);
17252      }
17253      if (element.hasEligibility()) {
17254        composeCodeableConcept("eligibility", element.getEligibility());
17255      }
17256      if (element.hasEligibilityNoteElement()) {
17257        composeString("eligibilityNote", element.getEligibilityNoteElement());
17258      }
17259      if (element.hasProgramName()) {
17260        for (StringType e : element.getProgramName())
17261          composeString("programName", e);
17262      }
17263      if (element.hasCharacteristic()) {
17264        for (CodeableConcept e : element.getCharacteristic())
17265          composeCodeableConcept("characteristic", e);
17266      }
17267      if (element.hasReferralMethod()) {
17268        for (CodeableConcept e : element.getReferralMethod())
17269          composeCodeableConcept("referralMethod", e);
17270      }
17271      if (element.hasPublicKeyElement()) {
17272        composeString("publicKey", element.getPublicKeyElement());
17273      }
17274      if (element.hasAppointmentRequiredElement()) {
17275        composeBoolean("appointmentRequired", element.getAppointmentRequiredElement());
17276      }
17277      if (element.hasAvailableTime()) {
17278        for (HealthcareService.HealthcareServiceAvailableTimeComponent e : element.getAvailableTime())
17279          composeHealthcareServiceHealthcareServiceAvailableTimeComponent("availableTime", e);
17280      }
17281      if (element.hasNotAvailable()) {
17282        for (HealthcareService.HealthcareServiceNotAvailableComponent e : element.getNotAvailable())
17283          composeHealthcareServiceHealthcareServiceNotAvailableComponent("notAvailable", e);
17284      }
17285      if (element.hasAvailabilityExceptionsElement()) {
17286        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
17287      }
17288      composeElementClose(element);
17289      xml.exit(FHIR_NS, name);
17290    }
17291  }
17292
17293  protected void composeHealthcareServiceServiceTypeComponent(String name,
17294      HealthcareService.ServiceTypeComponent element) throws IOException {
17295    if (element != null) {
17296      composeElementAttributes(element);
17297      xml.enter(FHIR_NS, name);
17298      composeBackboneElements(element);
17299      if (element.hasType()) {
17300        composeCodeableConcept("type", element.getType());
17301      }
17302      if (element.hasSpecialty()) {
17303        for (CodeableConcept e : element.getSpecialty())
17304          composeCodeableConcept("specialty", e);
17305      }
17306      composeElementClose(element);
17307      xml.exit(FHIR_NS, name);
17308    }
17309  }
17310
17311  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponent(String name,
17312      HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
17313    if (element != null) {
17314      composeElementAttributes(element);
17315      xml.enter(FHIR_NS, name);
17316      composeBackboneElements(element);
17317      if (element.hasDaysOfWeek())
17318        for (Enumeration<HealthcareService.DaysOfWeek> e : element.getDaysOfWeek())
17319          composeEnumeration("daysOfWeek", e, new HealthcareService.DaysOfWeekEnumFactory());
17320      if (element.hasAllDayElement()) {
17321        composeBoolean("allDay", element.getAllDayElement());
17322      }
17323      if (element.hasAvailableStartTimeElement()) {
17324        composeTime("availableStartTime", element.getAvailableStartTimeElement());
17325      }
17326      if (element.hasAvailableEndTimeElement()) {
17327        composeTime("availableEndTime", element.getAvailableEndTimeElement());
17328      }
17329      composeElementClose(element);
17330      xml.exit(FHIR_NS, name);
17331    }
17332  }
17333
17334  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponent(String name,
17335      HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
17336    if (element != null) {
17337      composeElementAttributes(element);
17338      xml.enter(FHIR_NS, name);
17339      composeBackboneElements(element);
17340      if (element.hasDescriptionElement()) {
17341        composeString("description", element.getDescriptionElement());
17342      }
17343      if (element.hasDuring()) {
17344        composePeriod("during", element.getDuring());
17345      }
17346      composeElementClose(element);
17347      xml.exit(FHIR_NS, name);
17348    }
17349  }
17350
17351  protected void composeImagingObjectSelection(String name, ImagingObjectSelection element) throws IOException {
17352    if (element != null) {
17353      composeDomainResourceAttributes(element);
17354      xml.enter(FHIR_NS, name);
17355      composeDomainResourceElements(element);
17356      if (element.hasUidElement()) {
17357        composeOid("uid", element.getUidElement());
17358      }
17359      if (element.hasPatient()) {
17360        composeReference("patient", element.getPatient());
17361      }
17362      if (element.hasTitle()) {
17363        composeCodeableConcept("title", element.getTitle());
17364      }
17365      if (element.hasDescriptionElement()) {
17366        composeString("description", element.getDescriptionElement());
17367      }
17368      if (element.hasAuthor()) {
17369        composeReference("author", element.getAuthor());
17370      }
17371      if (element.hasAuthoringTimeElement()) {
17372        composeDateTime("authoringTime", element.getAuthoringTimeElement());
17373      }
17374      if (element.hasStudy()) {
17375        for (ImagingObjectSelection.StudyComponent e : element.getStudy())
17376          composeImagingObjectSelectionStudyComponent("study", e);
17377      }
17378      composeElementClose(element);
17379      xml.exit(FHIR_NS, name);
17380    }
17381  }
17382
17383  protected void composeImagingObjectSelectionStudyComponent(String name, ImagingObjectSelection.StudyComponent element)
17384      throws IOException {
17385    if (element != null) {
17386      composeElementAttributes(element);
17387      xml.enter(FHIR_NS, name);
17388      composeBackboneElements(element);
17389      if (element.hasUidElement()) {
17390        composeOid("uid", element.getUidElement());
17391      }
17392      if (element.hasUrlElement()) {
17393        composeUri("url", element.getUrlElement());
17394      }
17395      if (element.hasImagingStudy()) {
17396        composeReference("imagingStudy", element.getImagingStudy());
17397      }
17398      if (element.hasSeries()) {
17399        for (ImagingObjectSelection.SeriesComponent e : element.getSeries())
17400          composeImagingObjectSelectionSeriesComponent("series", e);
17401      }
17402      composeElementClose(element);
17403      xml.exit(FHIR_NS, name);
17404    }
17405  }
17406
17407  protected void composeImagingObjectSelectionSeriesComponent(String name,
17408      ImagingObjectSelection.SeriesComponent element) throws IOException {
17409    if (element != null) {
17410      composeElementAttributes(element);
17411      xml.enter(FHIR_NS, name);
17412      composeBackboneElements(element);
17413      if (element.hasUidElement()) {
17414        composeOid("uid", element.getUidElement());
17415      }
17416      if (element.hasUrlElement()) {
17417        composeUri("url", element.getUrlElement());
17418      }
17419      if (element.hasInstance()) {
17420        for (ImagingObjectSelection.InstanceComponent e : element.getInstance())
17421          composeImagingObjectSelectionInstanceComponent("instance", e);
17422      }
17423      composeElementClose(element);
17424      xml.exit(FHIR_NS, name);
17425    }
17426  }
17427
17428  protected void composeImagingObjectSelectionInstanceComponent(String name,
17429      ImagingObjectSelection.InstanceComponent element) throws IOException {
17430    if (element != null) {
17431      composeElementAttributes(element);
17432      xml.enter(FHIR_NS, name);
17433      composeBackboneElements(element);
17434      if (element.hasSopClassElement()) {
17435        composeOid("sopClass", element.getSopClassElement());
17436      }
17437      if (element.hasUidElement()) {
17438        composeOid("uid", element.getUidElement());
17439      }
17440      if (element.hasUrlElement()) {
17441        composeUri("url", element.getUrlElement());
17442      }
17443      if (element.hasFrames()) {
17444        for (ImagingObjectSelection.FramesComponent e : element.getFrames())
17445          composeImagingObjectSelectionFramesComponent("frames", e);
17446      }
17447      composeElementClose(element);
17448      xml.exit(FHIR_NS, name);
17449    }
17450  }
17451
17452  protected void composeImagingObjectSelectionFramesComponent(String name,
17453      ImagingObjectSelection.FramesComponent element) throws IOException {
17454    if (element != null) {
17455      composeElementAttributes(element);
17456      xml.enter(FHIR_NS, name);
17457      composeBackboneElements(element);
17458      if (element.hasFrameNumbers()) {
17459        for (UnsignedIntType e : element.getFrameNumbers())
17460          composeUnsignedInt("frameNumbers", e);
17461      }
17462      if (element.hasUrlElement()) {
17463        composeUri("url", element.getUrlElement());
17464      }
17465      composeElementClose(element);
17466      xml.exit(FHIR_NS, name);
17467    }
17468  }
17469
17470  protected void composeImagingStudy(String name, ImagingStudy element) throws IOException {
17471    if (element != null) {
17472      composeDomainResourceAttributes(element);
17473      xml.enter(FHIR_NS, name);
17474      composeDomainResourceElements(element);
17475      if (element.hasStartedElement()) {
17476        composeDateTime("started", element.getStartedElement());
17477      }
17478      if (element.hasPatient()) {
17479        composeReference("patient", element.getPatient());
17480      }
17481      if (element.hasUidElement()) {
17482        composeOid("uid", element.getUidElement());
17483      }
17484      if (element.hasAccession()) {
17485        composeIdentifier("accession", element.getAccession());
17486      }
17487      if (element.hasIdentifier()) {
17488        for (Identifier e : element.getIdentifier())
17489          composeIdentifier("identifier", e);
17490      }
17491      if (element.hasOrder()) {
17492        for (Reference e : element.getOrder())
17493          composeReference("order", e);
17494      }
17495      if (element.hasModalityList()) {
17496        for (Coding e : element.getModalityList())
17497          composeCoding("modalityList", e);
17498      }
17499      if (element.hasReferrer()) {
17500        composeReference("referrer", element.getReferrer());
17501      }
17502      if (element.hasAvailabilityElement())
17503        composeEnumeration("availability", element.getAvailabilityElement(),
17504            new ImagingStudy.InstanceAvailabilityEnumFactory());
17505      if (element.hasUrlElement()) {
17506        composeUri("url", element.getUrlElement());
17507      }
17508      if (element.hasNumberOfSeriesElement()) {
17509        composeUnsignedInt("numberOfSeries", element.getNumberOfSeriesElement());
17510      }
17511      if (element.hasNumberOfInstancesElement()) {
17512        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
17513      }
17514      if (element.hasProcedure()) {
17515        for (Reference e : element.getProcedure())
17516          composeReference("procedure", e);
17517      }
17518      if (element.hasInterpreter()) {
17519        composeReference("interpreter", element.getInterpreter());
17520      }
17521      if (element.hasDescriptionElement()) {
17522        composeString("description", element.getDescriptionElement());
17523      }
17524      if (element.hasSeries()) {
17525        for (ImagingStudy.ImagingStudySeriesComponent e : element.getSeries())
17526          composeImagingStudyImagingStudySeriesComponent("series", e);
17527      }
17528      composeElementClose(element);
17529      xml.exit(FHIR_NS, name);
17530    }
17531  }
17532
17533  protected void composeImagingStudyImagingStudySeriesComponent(String name,
17534      ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
17535    if (element != null) {
17536      composeElementAttributes(element);
17537      xml.enter(FHIR_NS, name);
17538      composeBackboneElements(element);
17539      if (element.hasNumberElement()) {
17540        composeUnsignedInt("number", element.getNumberElement());
17541      }
17542      if (element.hasModality()) {
17543        composeCoding("modality", element.getModality());
17544      }
17545      if (element.hasUidElement()) {
17546        composeOid("uid", element.getUidElement());
17547      }
17548      if (element.hasDescriptionElement()) {
17549        composeString("description", element.getDescriptionElement());
17550      }
17551      if (element.hasNumberOfInstancesElement()) {
17552        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
17553      }
17554      if (element.hasAvailabilityElement())
17555        composeEnumeration("availability", element.getAvailabilityElement(),
17556            new ImagingStudy.InstanceAvailabilityEnumFactory());
17557      if (element.hasUrlElement()) {
17558        composeUri("url", element.getUrlElement());
17559      }
17560      if (element.hasBodySite()) {
17561        composeCoding("bodySite", element.getBodySite());
17562      }
17563      if (element.hasLaterality()) {
17564        composeCoding("laterality", element.getLaterality());
17565      }
17566      if (element.hasStartedElement()) {
17567        composeDateTime("started", element.getStartedElement());
17568      }
17569      if (element.hasInstance()) {
17570        for (ImagingStudy.ImagingStudySeriesInstanceComponent e : element.getInstance())
17571          composeImagingStudyImagingStudySeriesInstanceComponent("instance", e);
17572      }
17573      composeElementClose(element);
17574      xml.exit(FHIR_NS, name);
17575    }
17576  }
17577
17578  protected void composeImagingStudyImagingStudySeriesInstanceComponent(String name,
17579      ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
17580    if (element != null) {
17581      composeElementAttributes(element);
17582      xml.enter(FHIR_NS, name);
17583      composeBackboneElements(element);
17584      if (element.hasNumberElement()) {
17585        composeUnsignedInt("number", element.getNumberElement());
17586      }
17587      if (element.hasUidElement()) {
17588        composeOid("uid", element.getUidElement());
17589      }
17590      if (element.hasSopClassElement()) {
17591        composeOid("sopClass", element.getSopClassElement());
17592      }
17593      if (element.hasTypeElement()) {
17594        composeString("type", element.getTypeElement());
17595      }
17596      if (element.hasTitleElement()) {
17597        composeString("title", element.getTitleElement());
17598      }
17599      if (element.hasContent()) {
17600        for (Attachment e : element.getContent())
17601          composeAttachment("content", e);
17602      }
17603      composeElementClose(element);
17604      xml.exit(FHIR_NS, name);
17605    }
17606  }
17607
17608  protected void composeImmunization(String name, Immunization element) throws IOException {
17609    if (element != null) {
17610      composeDomainResourceAttributes(element);
17611      xml.enter(FHIR_NS, name);
17612      composeDomainResourceElements(element);
17613      if (element.hasIdentifier()) {
17614        for (Identifier e : element.getIdentifier())
17615          composeIdentifier("identifier", e);
17616      }
17617      if (element.hasStatusElement()) {
17618        composeCode("status", element.getStatusElement());
17619      }
17620      if (element.hasDateElement()) {
17621        composeDateTime("date", element.getDateElement());
17622      }
17623      if (element.hasVaccineCode()) {
17624        composeCodeableConcept("vaccineCode", element.getVaccineCode());
17625      }
17626      if (element.hasPatient()) {
17627        composeReference("patient", element.getPatient());
17628      }
17629      if (element.hasWasNotGivenElement()) {
17630        composeBoolean("wasNotGiven", element.getWasNotGivenElement());
17631      }
17632      if (element.hasReportedElement()) {
17633        composeBoolean("reported", element.getReportedElement());
17634      }
17635      if (element.hasPerformer()) {
17636        composeReference("performer", element.getPerformer());
17637      }
17638      if (element.hasRequester()) {
17639        composeReference("requester", element.getRequester());
17640      }
17641      if (element.hasEncounter()) {
17642        composeReference("encounter", element.getEncounter());
17643      }
17644      if (element.hasManufacturer()) {
17645        composeReference("manufacturer", element.getManufacturer());
17646      }
17647      if (element.hasLocation()) {
17648        composeReference("location", element.getLocation());
17649      }
17650      if (element.hasLotNumberElement()) {
17651        composeString("lotNumber", element.getLotNumberElement());
17652      }
17653      if (element.hasExpirationDateElement()) {
17654        composeDate("expirationDate", element.getExpirationDateElement());
17655      }
17656      if (element.hasSite()) {
17657        composeCodeableConcept("site", element.getSite());
17658      }
17659      if (element.hasRoute()) {
17660        composeCodeableConcept("route", element.getRoute());
17661      }
17662      if (element.hasDoseQuantity()) {
17663        composeSimpleQuantity("doseQuantity", element.getDoseQuantity());
17664      }
17665      if (element.hasNote()) {
17666        for (Annotation e : element.getNote())
17667          composeAnnotation("note", e);
17668      }
17669      if (element.hasExplanation()) {
17670        composeImmunizationImmunizationExplanationComponent("explanation", element.getExplanation());
17671      }
17672      if (element.hasReaction()) {
17673        for (Immunization.ImmunizationReactionComponent e : element.getReaction())
17674          composeImmunizationImmunizationReactionComponent("reaction", e);
17675      }
17676      if (element.hasVaccinationProtocol()) {
17677        for (Immunization.ImmunizationVaccinationProtocolComponent e : element.getVaccinationProtocol())
17678          composeImmunizationImmunizationVaccinationProtocolComponent("vaccinationProtocol", e);
17679      }
17680      composeElementClose(element);
17681      xml.exit(FHIR_NS, name);
17682    }
17683  }
17684
17685  protected void composeImmunizationImmunizationExplanationComponent(String name,
17686      Immunization.ImmunizationExplanationComponent element) throws IOException {
17687    if (element != null) {
17688      composeElementAttributes(element);
17689      xml.enter(FHIR_NS, name);
17690      composeBackboneElements(element);
17691      if (element.hasReason()) {
17692        for (CodeableConcept e : element.getReason())
17693          composeCodeableConcept("reason", e);
17694      }
17695      if (element.hasReasonNotGiven()) {
17696        for (CodeableConcept e : element.getReasonNotGiven())
17697          composeCodeableConcept("reasonNotGiven", e);
17698      }
17699      composeElementClose(element);
17700      xml.exit(FHIR_NS, name);
17701    }
17702  }
17703
17704  protected void composeImmunizationImmunizationReactionComponent(String name,
17705      Immunization.ImmunizationReactionComponent element) throws IOException {
17706    if (element != null) {
17707      composeElementAttributes(element);
17708      xml.enter(FHIR_NS, name);
17709      composeBackboneElements(element);
17710      if (element.hasDateElement()) {
17711        composeDateTime("date", element.getDateElement());
17712      }
17713      if (element.hasDetail()) {
17714        composeReference("detail", element.getDetail());
17715      }
17716      if (element.hasReportedElement()) {
17717        composeBoolean("reported", element.getReportedElement());
17718      }
17719      composeElementClose(element);
17720      xml.exit(FHIR_NS, name);
17721    }
17722  }
17723
17724  protected void composeImmunizationImmunizationVaccinationProtocolComponent(String name,
17725      Immunization.ImmunizationVaccinationProtocolComponent element) throws IOException {
17726    if (element != null) {
17727      composeElementAttributes(element);
17728      xml.enter(FHIR_NS, name);
17729      composeBackboneElements(element);
17730      if (element.hasDoseSequenceElement()) {
17731        composePositiveInt("doseSequence", element.getDoseSequenceElement());
17732      }
17733      if (element.hasDescriptionElement()) {
17734        composeString("description", element.getDescriptionElement());
17735      }
17736      if (element.hasAuthority()) {
17737        composeReference("authority", element.getAuthority());
17738      }
17739      if (element.hasSeriesElement()) {
17740        composeString("series", element.getSeriesElement());
17741      }
17742      if (element.hasSeriesDosesElement()) {
17743        composePositiveInt("seriesDoses", element.getSeriesDosesElement());
17744      }
17745      if (element.hasTargetDisease()) {
17746        for (CodeableConcept e : element.getTargetDisease())
17747          composeCodeableConcept("targetDisease", e);
17748      }
17749      if (element.hasDoseStatus()) {
17750        composeCodeableConcept("doseStatus", element.getDoseStatus());
17751      }
17752      if (element.hasDoseStatusReason()) {
17753        composeCodeableConcept("doseStatusReason", element.getDoseStatusReason());
17754      }
17755      composeElementClose(element);
17756      xml.exit(FHIR_NS, name);
17757    }
17758  }
17759
17760  protected void composeImmunizationRecommendation(String name, ImmunizationRecommendation element) throws IOException {
17761    if (element != null) {
17762      composeDomainResourceAttributes(element);
17763      xml.enter(FHIR_NS, name);
17764      composeDomainResourceElements(element);
17765      if (element.hasIdentifier()) {
17766        for (Identifier e : element.getIdentifier())
17767          composeIdentifier("identifier", e);
17768      }
17769      if (element.hasPatient()) {
17770        composeReference("patient", element.getPatient());
17771      }
17772      if (element.hasRecommendation()) {
17773        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent e : element
17774            .getRecommendation())
17775          composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent("recommendation", e);
17776      }
17777      composeElementClose(element);
17778      xml.exit(FHIR_NS, name);
17779    }
17780  }
17781
17782  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(String name,
17783      ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
17784    if (element != null) {
17785      composeElementAttributes(element);
17786      xml.enter(FHIR_NS, name);
17787      composeBackboneElements(element);
17788      if (element.hasDateElement()) {
17789        composeDateTime("date", element.getDateElement());
17790      }
17791      if (element.hasVaccineCode()) {
17792        composeCodeableConcept("vaccineCode", element.getVaccineCode());
17793      }
17794      if (element.hasDoseNumberElement()) {
17795        composePositiveInt("doseNumber", element.getDoseNumberElement());
17796      }
17797      if (element.hasForecastStatus()) {
17798        composeCodeableConcept("forecastStatus", element.getForecastStatus());
17799      }
17800      if (element.hasDateCriterion()) {
17801        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent e : element
17802            .getDateCriterion())
17803          composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(
17804              "dateCriterion", e);
17805      }
17806      if (element.hasProtocol()) {
17807        composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent("protocol",
17808            element.getProtocol());
17809      }
17810      if (element.hasSupportingImmunization()) {
17811        for (Reference e : element.getSupportingImmunization())
17812          composeReference("supportingImmunization", e);
17813      }
17814      if (element.hasSupportingPatientInformation()) {
17815        for (Reference e : element.getSupportingPatientInformation())
17816          composeReference("supportingPatientInformation", e);
17817      }
17818      composeElementClose(element);
17819      xml.exit(FHIR_NS, name);
17820    }
17821  }
17822
17823  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(
17824      String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element)
17825      throws IOException {
17826    if (element != null) {
17827      composeElementAttributes(element);
17828      xml.enter(FHIR_NS, name);
17829      composeBackboneElements(element);
17830      if (element.hasCode()) {
17831        composeCodeableConcept("code", element.getCode());
17832      }
17833      if (element.hasValueElement()) {
17834        composeDateTime("value", element.getValueElement());
17835      }
17836      composeElementClose(element);
17837      xml.exit(FHIR_NS, name);
17838    }
17839  }
17840
17841  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(String name,
17842      ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent element) throws IOException {
17843    if (element != null) {
17844      composeElementAttributes(element);
17845      xml.enter(FHIR_NS, name);
17846      composeBackboneElements(element);
17847      if (element.hasDoseSequenceElement()) {
17848        composeInteger("doseSequence", element.getDoseSequenceElement());
17849      }
17850      if (element.hasDescriptionElement()) {
17851        composeString("description", element.getDescriptionElement());
17852      }
17853      if (element.hasAuthority()) {
17854        composeReference("authority", element.getAuthority());
17855      }
17856      if (element.hasSeriesElement()) {
17857        composeString("series", element.getSeriesElement());
17858      }
17859      composeElementClose(element);
17860      xml.exit(FHIR_NS, name);
17861    }
17862  }
17863
17864  protected void composeImplementationGuide(String name, ImplementationGuide element) throws IOException {
17865    if (element != null) {
17866      composeDomainResourceAttributes(element);
17867      xml.enter(FHIR_NS, name);
17868      composeDomainResourceElements(element);
17869      if (element.hasUrlElement()) {
17870        composeUri("url", element.getUrlElement());
17871      }
17872      if (element.hasVersionElement()) {
17873        composeString("version", element.getVersionElement());
17874      }
17875      if (element.hasNameElement()) {
17876        composeString("name", element.getNameElement());
17877      }
17878      if (element.hasStatusElement())
17879        composeEnumeration("status", element.getStatusElement(),
17880            new Enumerations.ConformanceResourceStatusEnumFactory());
17881      if (element.hasExperimentalElement()) {
17882        composeBoolean("experimental", element.getExperimentalElement());
17883      }
17884      if (element.hasPublisherElement()) {
17885        composeString("publisher", element.getPublisherElement());
17886      }
17887      if (element.hasContact()) {
17888        for (ImplementationGuide.ImplementationGuideContactComponent e : element.getContact())
17889          composeImplementationGuideImplementationGuideContactComponent("contact", e);
17890      }
17891      if (element.hasDateElement()) {
17892        composeDateTime("date", element.getDateElement());
17893      }
17894      if (element.hasDescriptionElement()) {
17895        composeString("description", element.getDescriptionElement());
17896      }
17897      if (element.hasUseContext()) {
17898        for (CodeableConcept e : element.getUseContext())
17899          composeCodeableConcept("useContext", e);
17900      }
17901      if (element.hasCopyrightElement()) {
17902        composeString("copyright", element.getCopyrightElement());
17903      }
17904      if (element.hasFhirVersionElement()) {
17905        composeId("fhirVersion", element.getFhirVersionElement());
17906      }
17907      if (element.hasDependency()) {
17908        for (ImplementationGuide.ImplementationGuideDependencyComponent e : element.getDependency())
17909          composeImplementationGuideImplementationGuideDependencyComponent("dependency", e);
17910      }
17911      if (element.hasPackage()) {
17912        for (ImplementationGuide.ImplementationGuidePackageComponent e : element.getPackage())
17913          composeImplementationGuideImplementationGuidePackageComponent("package", e);
17914      }
17915      if (element.hasGlobal()) {
17916        for (ImplementationGuide.ImplementationGuideGlobalComponent e : element.getGlobal())
17917          composeImplementationGuideImplementationGuideGlobalComponent("global", e);
17918      }
17919      if (element.hasBinary()) {
17920        for (UriType e : element.getBinary())
17921          composeUri("binary", e);
17922      }
17923      if (element.hasPage()) {
17924        composeImplementationGuideImplementationGuidePageComponent("page", element.getPage());
17925      }
17926      composeElementClose(element);
17927      xml.exit(FHIR_NS, name);
17928    }
17929  }
17930
17931  protected void composeImplementationGuideImplementationGuideContactComponent(String name,
17932      ImplementationGuide.ImplementationGuideContactComponent element) throws IOException {
17933    if (element != null) {
17934      composeElementAttributes(element);
17935      xml.enter(FHIR_NS, name);
17936      composeBackboneElements(element);
17937      if (element.hasNameElement()) {
17938        composeString("name", element.getNameElement());
17939      }
17940      if (element.hasTelecom()) {
17941        for (ContactPoint e : element.getTelecom())
17942          composeContactPoint("telecom", e);
17943      }
17944      composeElementClose(element);
17945      xml.exit(FHIR_NS, name);
17946    }
17947  }
17948
17949  protected void composeImplementationGuideImplementationGuideDependencyComponent(String name,
17950      ImplementationGuide.ImplementationGuideDependencyComponent element) throws IOException {
17951    if (element != null) {
17952      composeElementAttributes(element);
17953      xml.enter(FHIR_NS, name);
17954      composeBackboneElements(element);
17955      if (element.hasTypeElement())
17956        composeEnumeration("type", element.getTypeElement(), new ImplementationGuide.GuideDependencyTypeEnumFactory());
17957      if (element.hasUriElement()) {
17958        composeUri("uri", element.getUriElement());
17959      }
17960      composeElementClose(element);
17961      xml.exit(FHIR_NS, name);
17962    }
17963  }
17964
17965  protected void composeImplementationGuideImplementationGuidePackageComponent(String name,
17966      ImplementationGuide.ImplementationGuidePackageComponent element) throws IOException {
17967    if (element != null) {
17968      composeElementAttributes(element);
17969      xml.enter(FHIR_NS, name);
17970      composeBackboneElements(element);
17971      if (element.hasNameElement()) {
17972        composeString("name", element.getNameElement());
17973      }
17974      if (element.hasDescriptionElement()) {
17975        composeString("description", element.getDescriptionElement());
17976      }
17977      if (element.hasResource()) {
17978        for (ImplementationGuide.ImplementationGuidePackageResourceComponent e : element.getResource())
17979          composeImplementationGuideImplementationGuidePackageResourceComponent("resource", e);
17980      }
17981      composeElementClose(element);
17982      xml.exit(FHIR_NS, name);
17983    }
17984  }
17985
17986  protected void composeImplementationGuideImplementationGuidePackageResourceComponent(String name,
17987      ImplementationGuide.ImplementationGuidePackageResourceComponent element) throws IOException {
17988    if (element != null) {
17989      composeElementAttributes(element);
17990      xml.enter(FHIR_NS, name);
17991      composeBackboneElements(element);
17992      if (element.hasPurposeElement())
17993        composeEnumeration("purpose", element.getPurposeElement(),
17994            new ImplementationGuide.GuideResourcePurposeEnumFactory());
17995      if (element.hasNameElement()) {
17996        composeString("name", element.getNameElement());
17997      }
17998      if (element.hasDescriptionElement()) {
17999        composeString("description", element.getDescriptionElement());
18000      }
18001      if (element.hasAcronymElement()) {
18002        composeString("acronym", element.getAcronymElement());
18003      }
18004      if (element.hasSource()) {
18005        composeType("source", element.getSource());
18006      }
18007      if (element.hasExampleFor()) {
18008        composeReference("exampleFor", element.getExampleFor());
18009      }
18010      composeElementClose(element);
18011      xml.exit(FHIR_NS, name);
18012    }
18013  }
18014
18015  protected void composeImplementationGuideImplementationGuideGlobalComponent(String name,
18016      ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
18017    if (element != null) {
18018      composeElementAttributes(element);
18019      xml.enter(FHIR_NS, name);
18020      composeBackboneElements(element);
18021      if (element.hasTypeElement()) {
18022        composeCode("type", element.getTypeElement());
18023      }
18024      if (element.hasProfile()) {
18025        composeReference("profile", element.getProfile());
18026      }
18027      composeElementClose(element);
18028      xml.exit(FHIR_NS, name);
18029    }
18030  }
18031
18032  protected void composeImplementationGuideImplementationGuidePageComponent(String name,
18033      ImplementationGuide.ImplementationGuidePageComponent element) throws IOException {
18034    if (element != null) {
18035      composeElementAttributes(element);
18036      xml.enter(FHIR_NS, name);
18037      composeBackboneElements(element);
18038      if (element.hasSourceElement()) {
18039        composeUri("source", element.getSourceElement());
18040      }
18041      if (element.hasNameElement()) {
18042        composeString("name", element.getNameElement());
18043      }
18044      if (element.hasKindElement())
18045        composeEnumeration("kind", element.getKindElement(), new ImplementationGuide.GuidePageKindEnumFactory());
18046      if (element.hasType()) {
18047        for (CodeType e : element.getType())
18048          composeCode("type", e);
18049      }
18050      if (element.hasPackage()) {
18051        for (StringType e : element.getPackage())
18052          composeString("package", e);
18053      }
18054      if (element.hasFormatElement()) {
18055        composeCode("format", element.getFormatElement());
18056      }
18057      if (element.hasPage()) {
18058        for (ImplementationGuide.ImplementationGuidePageComponent e : element.getPage())
18059          composeImplementationGuideImplementationGuidePageComponent("page", e);
18060      }
18061      composeElementClose(element);
18062      xml.exit(FHIR_NS, name);
18063    }
18064  }
18065
18066  protected void composeList_(String name, List_ element) throws IOException {
18067    if (element != null) {
18068      composeDomainResourceAttributes(element);
18069      xml.enter(FHIR_NS, name);
18070      composeDomainResourceElements(element);
18071      if (element.hasIdentifier()) {
18072        for (Identifier e : element.getIdentifier())
18073          composeIdentifier("identifier", e);
18074      }
18075      if (element.hasTitleElement()) {
18076        composeString("title", element.getTitleElement());
18077      }
18078      if (element.hasCode()) {
18079        composeCodeableConcept("code", element.getCode());
18080      }
18081      if (element.hasSubject()) {
18082        composeReference("subject", element.getSubject());
18083      }
18084      if (element.hasSource()) {
18085        composeReference("source", element.getSource());
18086      }
18087      if (element.hasEncounter()) {
18088        composeReference("encounter", element.getEncounter());
18089      }
18090      if (element.hasStatusElement())
18091        composeEnumeration("status", element.getStatusElement(), new List_.ListStatusEnumFactory());
18092      if (element.hasDateElement()) {
18093        composeDateTime("date", element.getDateElement());
18094      }
18095      if (element.hasOrderedBy()) {
18096        composeCodeableConcept("orderedBy", element.getOrderedBy());
18097      }
18098      if (element.hasModeElement())
18099        composeEnumeration("mode", element.getModeElement(), new List_.ListModeEnumFactory());
18100      if (element.hasNoteElement()) {
18101        composeString("note", element.getNoteElement());
18102      }
18103      if (element.hasEntry()) {
18104        for (List_.ListEntryComponent e : element.getEntry())
18105          composeList_ListEntryComponent("entry", e);
18106      }
18107      if (element.hasEmptyReason()) {
18108        composeCodeableConcept("emptyReason", element.getEmptyReason());
18109      }
18110      composeElementClose(element);
18111      xml.exit(FHIR_NS, name);
18112    }
18113  }
18114
18115  protected void composeList_ListEntryComponent(String name, List_.ListEntryComponent element) throws IOException {
18116    if (element != null) {
18117      composeElementAttributes(element);
18118      xml.enter(FHIR_NS, name);
18119      composeBackboneElements(element);
18120      if (element.hasFlag()) {
18121        composeCodeableConcept("flag", element.getFlag());
18122      }
18123      if (element.hasDeletedElement()) {
18124        composeBoolean("deleted", element.getDeletedElement());
18125      }
18126      if (element.hasDateElement()) {
18127        composeDateTime("date", element.getDateElement());
18128      }
18129      if (element.hasItem()) {
18130        composeReference("item", element.getItem());
18131      }
18132      composeElementClose(element);
18133      xml.exit(FHIR_NS, name);
18134    }
18135  }
18136
18137  protected void composeLocation(String name, Location element) throws IOException {
18138    if (element != null) {
18139      composeDomainResourceAttributes(element);
18140      xml.enter(FHIR_NS, name);
18141      composeDomainResourceElements(element);
18142      if (element.hasIdentifier()) {
18143        for (Identifier e : element.getIdentifier())
18144          composeIdentifier("identifier", e);
18145      }
18146      if (element.hasStatusElement())
18147        composeEnumeration("status", element.getStatusElement(), new Location.LocationStatusEnumFactory());
18148      if (element.hasNameElement()) {
18149        composeString("name", element.getNameElement());
18150      }
18151      if (element.hasDescriptionElement()) {
18152        composeString("description", element.getDescriptionElement());
18153      }
18154      if (element.hasModeElement())
18155        composeEnumeration("mode", element.getModeElement(), new Location.LocationModeEnumFactory());
18156      if (element.hasType()) {
18157        composeCodeableConcept("type", element.getType());
18158      }
18159      if (element.hasTelecom()) {
18160        for (ContactPoint e : element.getTelecom())
18161          composeContactPoint("telecom", e);
18162      }
18163      if (element.hasAddress()) {
18164        composeAddress("address", element.getAddress());
18165      }
18166      if (element.hasPhysicalType()) {
18167        composeCodeableConcept("physicalType", element.getPhysicalType());
18168      }
18169      if (element.hasPosition()) {
18170        composeLocationLocationPositionComponent("position", element.getPosition());
18171      }
18172      if (element.hasManagingOrganization()) {
18173        composeReference("managingOrganization", element.getManagingOrganization());
18174      }
18175      if (element.hasPartOf()) {
18176        composeReference("partOf", element.getPartOf());
18177      }
18178      composeElementClose(element);
18179      xml.exit(FHIR_NS, name);
18180    }
18181  }
18182
18183  protected void composeLocationLocationPositionComponent(String name, Location.LocationPositionComponent element)
18184      throws IOException {
18185    if (element != null) {
18186      composeElementAttributes(element);
18187      xml.enter(FHIR_NS, name);
18188      composeBackboneElements(element);
18189      if (element.hasLongitudeElement()) {
18190        composeDecimal("longitude", element.getLongitudeElement());
18191      }
18192      if (element.hasLatitudeElement()) {
18193        composeDecimal("latitude", element.getLatitudeElement());
18194      }
18195      if (element.hasAltitudeElement()) {
18196        composeDecimal("altitude", element.getAltitudeElement());
18197      }
18198      composeElementClose(element);
18199      xml.exit(FHIR_NS, name);
18200    }
18201  }
18202
18203  protected void composeMedia(String name, Media element) throws IOException {
18204    if (element != null) {
18205      composeDomainResourceAttributes(element);
18206      xml.enter(FHIR_NS, name);
18207      composeDomainResourceElements(element);
18208      if (element.hasTypeElement())
18209        composeEnumeration("type", element.getTypeElement(), new Media.DigitalMediaTypeEnumFactory());
18210      if (element.hasSubtype()) {
18211        composeCodeableConcept("subtype", element.getSubtype());
18212      }
18213      if (element.hasIdentifier()) {
18214        for (Identifier e : element.getIdentifier())
18215          composeIdentifier("identifier", e);
18216      }
18217      if (element.hasSubject()) {
18218        composeReference("subject", element.getSubject());
18219      }
18220      if (element.hasOperator()) {
18221        composeReference("operator", element.getOperator());
18222      }
18223      if (element.hasView()) {
18224        composeCodeableConcept("view", element.getView());
18225      }
18226      if (element.hasDeviceNameElement()) {
18227        composeString("deviceName", element.getDeviceNameElement());
18228      }
18229      if (element.hasHeightElement()) {
18230        composePositiveInt("height", element.getHeightElement());
18231      }
18232      if (element.hasWidthElement()) {
18233        composePositiveInt("width", element.getWidthElement());
18234      }
18235      if (element.hasFramesElement()) {
18236        composePositiveInt("frames", element.getFramesElement());
18237      }
18238      if (element.hasDurationElement()) {
18239        composeUnsignedInt("duration", element.getDurationElement());
18240      }
18241      if (element.hasContent()) {
18242        composeAttachment("content", element.getContent());
18243      }
18244      composeElementClose(element);
18245      xml.exit(FHIR_NS, name);
18246    }
18247  }
18248
18249  protected void composeMedication(String name, Medication element) throws IOException {
18250    if (element != null) {
18251      composeDomainResourceAttributes(element);
18252      xml.enter(FHIR_NS, name);
18253      composeDomainResourceElements(element);
18254      if (element.hasCode()) {
18255        composeCodeableConcept("code", element.getCode());
18256      }
18257      if (element.hasIsBrandElement()) {
18258        composeBoolean("isBrand", element.getIsBrandElement());
18259      }
18260      if (element.hasManufacturer()) {
18261        composeReference("manufacturer", element.getManufacturer());
18262      }
18263      if (element.hasProduct()) {
18264        composeMedicationMedicationProductComponent("product", element.getProduct());
18265      }
18266      if (element.hasPackage()) {
18267        composeMedicationMedicationPackageComponent("package", element.getPackage());
18268      }
18269      composeElementClose(element);
18270      xml.exit(FHIR_NS, name);
18271    }
18272  }
18273
18274  protected void composeMedicationMedicationProductComponent(String name, Medication.MedicationProductComponent element)
18275      throws IOException {
18276    if (element != null) {
18277      composeElementAttributes(element);
18278      xml.enter(FHIR_NS, name);
18279      composeBackboneElements(element);
18280      if (element.hasForm()) {
18281        composeCodeableConcept("form", element.getForm());
18282      }
18283      if (element.hasIngredient()) {
18284        for (Medication.MedicationProductIngredientComponent e : element.getIngredient())
18285          composeMedicationMedicationProductIngredientComponent("ingredient", e);
18286      }
18287      if (element.hasBatch()) {
18288        for (Medication.MedicationProductBatchComponent e : element.getBatch())
18289          composeMedicationMedicationProductBatchComponent("batch", e);
18290      }
18291      composeElementClose(element);
18292      xml.exit(FHIR_NS, name);
18293    }
18294  }
18295
18296  protected void composeMedicationMedicationProductIngredientComponent(String name,
18297      Medication.MedicationProductIngredientComponent element) throws IOException {
18298    if (element != null) {
18299      composeElementAttributes(element);
18300      xml.enter(FHIR_NS, name);
18301      composeBackboneElements(element);
18302      if (element.hasItem()) {
18303        composeReference("item", element.getItem());
18304      }
18305      if (element.hasAmount()) {
18306        composeRatio("amount", element.getAmount());
18307      }
18308      composeElementClose(element);
18309      xml.exit(FHIR_NS, name);
18310    }
18311  }
18312
18313  protected void composeMedicationMedicationProductBatchComponent(String name,
18314      Medication.MedicationProductBatchComponent element) throws IOException {
18315    if (element != null) {
18316      composeElementAttributes(element);
18317      xml.enter(FHIR_NS, name);
18318      composeBackboneElements(element);
18319      if (element.hasLotNumberElement()) {
18320        composeString("lotNumber", element.getLotNumberElement());
18321      }
18322      if (element.hasExpirationDateElement()) {
18323        composeDateTime("expirationDate", element.getExpirationDateElement());
18324      }
18325      composeElementClose(element);
18326      xml.exit(FHIR_NS, name);
18327    }
18328  }
18329
18330  protected void composeMedicationMedicationPackageComponent(String name, Medication.MedicationPackageComponent element)
18331      throws IOException {
18332    if (element != null) {
18333      composeElementAttributes(element);
18334      xml.enter(FHIR_NS, name);
18335      composeBackboneElements(element);
18336      if (element.hasContainer()) {
18337        composeCodeableConcept("container", element.getContainer());
18338      }
18339      if (element.hasContent()) {
18340        for (Medication.MedicationPackageContentComponent e : element.getContent())
18341          composeMedicationMedicationPackageContentComponent("content", e);
18342      }
18343      composeElementClose(element);
18344      xml.exit(FHIR_NS, name);
18345    }
18346  }
18347
18348  protected void composeMedicationMedicationPackageContentComponent(String name,
18349      Medication.MedicationPackageContentComponent element) throws IOException {
18350    if (element != null) {
18351      composeElementAttributes(element);
18352      xml.enter(FHIR_NS, name);
18353      composeBackboneElements(element);
18354      if (element.hasItem()) {
18355        composeReference("item", element.getItem());
18356      }
18357      if (element.hasAmount()) {
18358        composeSimpleQuantity("amount", element.getAmount());
18359      }
18360      composeElementClose(element);
18361      xml.exit(FHIR_NS, name);
18362    }
18363  }
18364
18365  protected void composeMedicationAdministration(String name, MedicationAdministration element) throws IOException {
18366    if (element != null) {
18367      composeDomainResourceAttributes(element);
18368      xml.enter(FHIR_NS, name);
18369      composeDomainResourceElements(element);
18370      if (element.hasIdentifier()) {
18371        for (Identifier e : element.getIdentifier())
18372          composeIdentifier("identifier", e);
18373      }
18374      if (element.hasStatusElement())
18375        composeEnumeration("status", element.getStatusElement(),
18376            new MedicationAdministration.MedicationAdministrationStatusEnumFactory());
18377      if (element.hasPatient()) {
18378        composeReference("patient", element.getPatient());
18379      }
18380      if (element.hasPractitioner()) {
18381        composeReference("practitioner", element.getPractitioner());
18382      }
18383      if (element.hasEncounter()) {
18384        composeReference("encounter", element.getEncounter());
18385      }
18386      if (element.hasPrescription()) {
18387        composeReference("prescription", element.getPrescription());
18388      }
18389      if (element.hasWasNotGivenElement()) {
18390        composeBoolean("wasNotGiven", element.getWasNotGivenElement());
18391      }
18392      if (element.hasReasonNotGiven()) {
18393        for (CodeableConcept e : element.getReasonNotGiven())
18394          composeCodeableConcept("reasonNotGiven", e);
18395      }
18396      if (element.hasReasonGiven()) {
18397        for (CodeableConcept e : element.getReasonGiven())
18398          composeCodeableConcept("reasonGiven", e);
18399      }
18400      if (element.hasEffectiveTime()) {
18401        composeType("effectiveTime", element.getEffectiveTime());
18402      }
18403      if (element.hasMedication()) {
18404        composeType("medication", element.getMedication());
18405      }
18406      if (element.hasDevice()) {
18407        for (Reference e : element.getDevice())
18408          composeReference("device", e);
18409      }
18410      if (element.hasNoteElement()) {
18411        composeString("note", element.getNoteElement());
18412      }
18413      if (element.hasDosage()) {
18414        composeMedicationAdministrationMedicationAdministrationDosageComponent("dosage", element.getDosage());
18415      }
18416      composeElementClose(element);
18417      xml.exit(FHIR_NS, name);
18418    }
18419  }
18420
18421  protected void composeMedicationAdministrationMedicationAdministrationDosageComponent(String name,
18422      MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
18423    if (element != null) {
18424      composeElementAttributes(element);
18425      xml.enter(FHIR_NS, name);
18426      composeBackboneElements(element);
18427      if (element.hasTextElement()) {
18428        composeString("text", element.getTextElement());
18429      }
18430      if (element.hasSite()) {
18431        composeType("site", element.getSite());
18432      }
18433      if (element.hasRoute()) {
18434        composeCodeableConcept("route", element.getRoute());
18435      }
18436      if (element.hasMethod()) {
18437        composeCodeableConcept("method", element.getMethod());
18438      }
18439      if (element.hasQuantity()) {
18440        composeSimpleQuantity("quantity", element.getQuantity());
18441      }
18442      if (element.hasRate()) {
18443        composeType("rate", element.getRate());
18444      }
18445      composeElementClose(element);
18446      xml.exit(FHIR_NS, name);
18447    }
18448  }
18449
18450  protected void composeMedicationDispense(String name, MedicationDispense element) throws IOException {
18451    if (element != null) {
18452      composeDomainResourceAttributes(element);
18453      xml.enter(FHIR_NS, name);
18454      composeDomainResourceElements(element);
18455      if (element.hasIdentifier()) {
18456        composeIdentifier("identifier", element.getIdentifier());
18457      }
18458      if (element.hasStatusElement())
18459        composeEnumeration("status", element.getStatusElement(),
18460            new MedicationDispense.MedicationDispenseStatusEnumFactory());
18461      if (element.hasPatient()) {
18462        composeReference("patient", element.getPatient());
18463      }
18464      if (element.hasDispenser()) {
18465        composeReference("dispenser", element.getDispenser());
18466      }
18467      if (element.hasAuthorizingPrescription()) {
18468        for (Reference e : element.getAuthorizingPrescription())
18469          composeReference("authorizingPrescription", e);
18470      }
18471      if (element.hasType()) {
18472        composeCodeableConcept("type", element.getType());
18473      }
18474      if (element.hasQuantity()) {
18475        composeSimpleQuantity("quantity", element.getQuantity());
18476      }
18477      if (element.hasDaysSupply()) {
18478        composeSimpleQuantity("daysSupply", element.getDaysSupply());
18479      }
18480      if (element.hasMedication()) {
18481        composeType("medication", element.getMedication());
18482      }
18483      if (element.hasWhenPreparedElement()) {
18484        composeDateTime("whenPrepared", element.getWhenPreparedElement());
18485      }
18486      if (element.hasWhenHandedOverElement()) {
18487        composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
18488      }
18489      if (element.hasDestination()) {
18490        composeReference("destination", element.getDestination());
18491      }
18492      if (element.hasReceiver()) {
18493        for (Reference e : element.getReceiver())
18494          composeReference("receiver", e);
18495      }
18496      if (element.hasNoteElement()) {
18497        composeString("note", element.getNoteElement());
18498      }
18499      if (element.hasDosageInstruction()) {
18500        for (MedicationDispense.MedicationDispenseDosageInstructionComponent e : element.getDosageInstruction())
18501          composeMedicationDispenseMedicationDispenseDosageInstructionComponent("dosageInstruction", e);
18502      }
18503      if (element.hasSubstitution()) {
18504        composeMedicationDispenseMedicationDispenseSubstitutionComponent("substitution", element.getSubstitution());
18505      }
18506      composeElementClose(element);
18507      xml.exit(FHIR_NS, name);
18508    }
18509  }
18510
18511  protected void composeMedicationDispenseMedicationDispenseDosageInstructionComponent(String name,
18512      MedicationDispense.MedicationDispenseDosageInstructionComponent element) throws IOException {
18513    if (element != null) {
18514      composeElementAttributes(element);
18515      xml.enter(FHIR_NS, name);
18516      composeBackboneElements(element);
18517      if (element.hasTextElement()) {
18518        composeString("text", element.getTextElement());
18519      }
18520      if (element.hasAdditionalInstructions()) {
18521        composeCodeableConcept("additionalInstructions", element.getAdditionalInstructions());
18522      }
18523      if (element.hasTiming()) {
18524        composeTiming("timing", element.getTiming());
18525      }
18526      if (element.hasAsNeeded()) {
18527        composeType("asNeeded", element.getAsNeeded());
18528      }
18529      if (element.hasSite()) {
18530        composeType("site", element.getSite());
18531      }
18532      if (element.hasRoute()) {
18533        composeCodeableConcept("route", element.getRoute());
18534      }
18535      if (element.hasMethod()) {
18536        composeCodeableConcept("method", element.getMethod());
18537      }
18538      if (element.hasDose()) {
18539        composeType("dose", element.getDose());
18540      }
18541      if (element.hasRate()) {
18542        composeType("rate", element.getRate());
18543      }
18544      if (element.hasMaxDosePerPeriod()) {
18545        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
18546      }
18547      composeElementClose(element);
18548      xml.exit(FHIR_NS, name);
18549    }
18550  }
18551
18552  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponent(String name,
18553      MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
18554    if (element != null) {
18555      composeElementAttributes(element);
18556      xml.enter(FHIR_NS, name);
18557      composeBackboneElements(element);
18558      if (element.hasType()) {
18559        composeCodeableConcept("type", element.getType());
18560      }
18561      if (element.hasReason()) {
18562        for (CodeableConcept e : element.getReason())
18563          composeCodeableConcept("reason", e);
18564      }
18565      if (element.hasResponsibleParty()) {
18566        for (Reference e : element.getResponsibleParty())
18567          composeReference("responsibleParty", e);
18568      }
18569      composeElementClose(element);
18570      xml.exit(FHIR_NS, name);
18571    }
18572  }
18573
18574  protected void composeMedicationOrder(String name, MedicationOrder element) throws IOException {
18575    if (element != null) {
18576      composeDomainResourceAttributes(element);
18577      xml.enter(FHIR_NS, name);
18578      composeDomainResourceElements(element);
18579      if (element.hasIdentifier()) {
18580        for (Identifier e : element.getIdentifier())
18581          composeIdentifier("identifier", e);
18582      }
18583      if (element.hasDateWrittenElement()) {
18584        composeDateTime("dateWritten", element.getDateWrittenElement());
18585      }
18586      if (element.hasStatusElement())
18587        composeEnumeration("status", element.getStatusElement(),
18588            new MedicationOrder.MedicationOrderStatusEnumFactory());
18589      if (element.hasDateEndedElement()) {
18590        composeDateTime("dateEnded", element.getDateEndedElement());
18591      }
18592      if (element.hasReasonEnded()) {
18593        composeCodeableConcept("reasonEnded", element.getReasonEnded());
18594      }
18595      if (element.hasPatient()) {
18596        composeReference("patient", element.getPatient());
18597      }
18598      if (element.hasPrescriber()) {
18599        composeReference("prescriber", element.getPrescriber());
18600      }
18601      if (element.hasEncounter()) {
18602        composeReference("encounter", element.getEncounter());
18603      }
18604      if (element.hasReason()) {
18605        composeType("reason", element.getReason());
18606      }
18607      if (element.hasNoteElement()) {
18608        composeString("note", element.getNoteElement());
18609      }
18610      if (element.hasMedication()) {
18611        composeType("medication", element.getMedication());
18612      }
18613      if (element.hasDosageInstruction()) {
18614        for (MedicationOrder.MedicationOrderDosageInstructionComponent e : element.getDosageInstruction())
18615          composeMedicationOrderMedicationOrderDosageInstructionComponent("dosageInstruction", e);
18616      }
18617      if (element.hasDispenseRequest()) {
18618        composeMedicationOrderMedicationOrderDispenseRequestComponent("dispenseRequest", element.getDispenseRequest());
18619      }
18620      if (element.hasSubstitution()) {
18621        composeMedicationOrderMedicationOrderSubstitutionComponent("substitution", element.getSubstitution());
18622      }
18623      if (element.hasPriorPrescription()) {
18624        composeReference("priorPrescription", element.getPriorPrescription());
18625      }
18626      composeElementClose(element);
18627      xml.exit(FHIR_NS, name);
18628    }
18629  }
18630
18631  protected void composeMedicationOrderMedicationOrderDosageInstructionComponent(String name,
18632      MedicationOrder.MedicationOrderDosageInstructionComponent element) throws IOException {
18633    if (element != null) {
18634      composeElementAttributes(element);
18635      xml.enter(FHIR_NS, name);
18636      composeBackboneElements(element);
18637      if (element.hasTextElement()) {
18638        composeString("text", element.getTextElement());
18639      }
18640      if (element.hasAdditionalInstructions()) {
18641        composeCodeableConcept("additionalInstructions", element.getAdditionalInstructions());
18642      }
18643      if (element.hasTiming()) {
18644        composeTiming("timing", element.getTiming());
18645      }
18646      if (element.hasAsNeeded()) {
18647        composeType("asNeeded", element.getAsNeeded());
18648      }
18649      if (element.hasSite()) {
18650        composeType("site", element.getSite());
18651      }
18652      if (element.hasRoute()) {
18653        composeCodeableConcept("route", element.getRoute());
18654      }
18655      if (element.hasMethod()) {
18656        composeCodeableConcept("method", element.getMethod());
18657      }
18658      if (element.hasDose()) {
18659        composeType("dose", element.getDose());
18660      }
18661      if (element.hasRate()) {
18662        composeType("rate", element.getRate());
18663      }
18664      if (element.hasMaxDosePerPeriod()) {
18665        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
18666      }
18667      composeElementClose(element);
18668      xml.exit(FHIR_NS, name);
18669    }
18670  }
18671
18672  protected void composeMedicationOrderMedicationOrderDispenseRequestComponent(String name,
18673      MedicationOrder.MedicationOrderDispenseRequestComponent element) throws IOException {
18674    if (element != null) {
18675      composeElementAttributes(element);
18676      xml.enter(FHIR_NS, name);
18677      composeBackboneElements(element);
18678      if (element.hasMedication()) {
18679        composeType("medication", element.getMedication());
18680      }
18681      if (element.hasValidityPeriod()) {
18682        composePeriod("validityPeriod", element.getValidityPeriod());
18683      }
18684      if (element.hasNumberOfRepeatsAllowedElement()) {
18685        composePositiveInt("numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement());
18686      }
18687      if (element.hasQuantity()) {
18688        composeSimpleQuantity("quantity", element.getQuantity());
18689      }
18690      if (element.hasExpectedSupplyDuration()) {
18691        composeDuration("expectedSupplyDuration", element.getExpectedSupplyDuration());
18692      }
18693      composeElementClose(element);
18694      xml.exit(FHIR_NS, name);
18695    }
18696  }
18697
18698  protected void composeMedicationOrderMedicationOrderSubstitutionComponent(String name,
18699      MedicationOrder.MedicationOrderSubstitutionComponent element) throws IOException {
18700    if (element != null) {
18701      composeElementAttributes(element);
18702      xml.enter(FHIR_NS, name);
18703      composeBackboneElements(element);
18704      if (element.hasType()) {
18705        composeCodeableConcept("type", element.getType());
18706      }
18707      if (element.hasReason()) {
18708        composeCodeableConcept("reason", element.getReason());
18709      }
18710      composeElementClose(element);
18711      xml.exit(FHIR_NS, name);
18712    }
18713  }
18714
18715  protected void composeMedicationStatement(String name, MedicationStatement element) throws IOException {
18716    if (element != null) {
18717      composeDomainResourceAttributes(element);
18718      xml.enter(FHIR_NS, name);
18719      composeDomainResourceElements(element);
18720      if (element.hasIdentifier()) {
18721        for (Identifier e : element.getIdentifier())
18722          composeIdentifier("identifier", e);
18723      }
18724      if (element.hasPatient()) {
18725        composeReference("patient", element.getPatient());
18726      }
18727      if (element.hasInformationSource()) {
18728        composeReference("informationSource", element.getInformationSource());
18729      }
18730      if (element.hasDateAssertedElement()) {
18731        composeDateTime("dateAsserted", element.getDateAssertedElement());
18732      }
18733      if (element.hasStatusElement())
18734        composeEnumeration("status", element.getStatusElement(),
18735            new MedicationStatement.MedicationStatementStatusEnumFactory());
18736      if (element.hasWasNotTakenElement()) {
18737        composeBoolean("wasNotTaken", element.getWasNotTakenElement());
18738      }
18739      if (element.hasReasonNotTaken()) {
18740        for (CodeableConcept e : element.getReasonNotTaken())
18741          composeCodeableConcept("reasonNotTaken", e);
18742      }
18743      if (element.hasReasonForUse()) {
18744        composeType("reasonForUse", element.getReasonForUse());
18745      }
18746      if (element.hasEffective()) {
18747        composeType("effective", element.getEffective());
18748      }
18749      if (element.hasNoteElement()) {
18750        composeString("note", element.getNoteElement());
18751      }
18752      if (element.hasSupportingInformation()) {
18753        for (Reference e : element.getSupportingInformation())
18754          composeReference("supportingInformation", e);
18755      }
18756      if (element.hasMedication()) {
18757        composeType("medication", element.getMedication());
18758      }
18759      if (element.hasDosage()) {
18760        for (MedicationStatement.MedicationStatementDosageComponent e : element.getDosage())
18761          composeMedicationStatementMedicationStatementDosageComponent("dosage", e);
18762      }
18763      composeElementClose(element);
18764      xml.exit(FHIR_NS, name);
18765    }
18766  }
18767
18768  protected void composeMedicationStatementMedicationStatementDosageComponent(String name,
18769      MedicationStatement.MedicationStatementDosageComponent element) throws IOException {
18770    if (element != null) {
18771      composeElementAttributes(element);
18772      xml.enter(FHIR_NS, name);
18773      composeBackboneElements(element);
18774      if (element.hasTextElement()) {
18775        composeString("text", element.getTextElement());
18776      }
18777      if (element.hasTiming()) {
18778        composeTiming("timing", element.getTiming());
18779      }
18780      if (element.hasAsNeeded()) {
18781        composeType("asNeeded", element.getAsNeeded());
18782      }
18783      if (element.hasSite()) {
18784        composeType("site", element.getSite());
18785      }
18786      if (element.hasRoute()) {
18787        composeCodeableConcept("route", element.getRoute());
18788      }
18789      if (element.hasMethod()) {
18790        composeCodeableConcept("method", element.getMethod());
18791      }
18792      if (element.hasQuantity()) {
18793        composeType("quantity", element.getQuantity());
18794      }
18795      if (element.hasRate()) {
18796        composeType("rate", element.getRate());
18797      }
18798      if (element.hasMaxDosePerPeriod()) {
18799        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
18800      }
18801      composeElementClose(element);
18802      xml.exit(FHIR_NS, name);
18803    }
18804  }
18805
18806  protected void composeMessageHeader(String name, MessageHeader element) throws IOException {
18807    if (element != null) {
18808      composeDomainResourceAttributes(element);
18809      xml.enter(FHIR_NS, name);
18810      composeDomainResourceElements(element);
18811      if (element.hasTimestampElement()) {
18812        composeInstant("timestamp", element.getTimestampElement());
18813      }
18814      if (element.hasEvent()) {
18815        composeCoding("event", element.getEvent());
18816      }
18817      if (element.hasResponse()) {
18818        composeMessageHeaderMessageHeaderResponseComponent("response", element.getResponse());
18819      }
18820      if (element.hasSource()) {
18821        composeMessageHeaderMessageSourceComponent("source", element.getSource());
18822      }
18823      if (element.hasDestination()) {
18824        for (MessageHeader.MessageDestinationComponent e : element.getDestination())
18825          composeMessageHeaderMessageDestinationComponent("destination", e);
18826      }
18827      if (element.hasEnterer()) {
18828        composeReference("enterer", element.getEnterer());
18829      }
18830      if (element.hasAuthor()) {
18831        composeReference("author", element.getAuthor());
18832      }
18833      if (element.hasReceiver()) {
18834        composeReference("receiver", element.getReceiver());
18835      }
18836      if (element.hasResponsible()) {
18837        composeReference("responsible", element.getResponsible());
18838      }
18839      if (element.hasReason()) {
18840        composeCodeableConcept("reason", element.getReason());
18841      }
18842      if (element.hasData()) {
18843        for (Reference e : element.getData())
18844          composeReference("data", e);
18845      }
18846      composeElementClose(element);
18847      xml.exit(FHIR_NS, name);
18848    }
18849  }
18850
18851  protected void composeMessageHeaderMessageHeaderResponseComponent(String name,
18852      MessageHeader.MessageHeaderResponseComponent element) throws IOException {
18853    if (element != null) {
18854      composeElementAttributes(element);
18855      xml.enter(FHIR_NS, name);
18856      composeBackboneElements(element);
18857      if (element.hasIdentifierElement()) {
18858        composeId("identifier", element.getIdentifierElement());
18859      }
18860      if (element.hasCodeElement())
18861        composeEnumeration("code", element.getCodeElement(), new MessageHeader.ResponseTypeEnumFactory());
18862      if (element.hasDetails()) {
18863        composeReference("details", element.getDetails());
18864      }
18865      composeElementClose(element);
18866      xml.exit(FHIR_NS, name);
18867    }
18868  }
18869
18870  protected void composeMessageHeaderMessageSourceComponent(String name, MessageHeader.MessageSourceComponent element)
18871      throws IOException {
18872    if (element != null) {
18873      composeElementAttributes(element);
18874      xml.enter(FHIR_NS, name);
18875      composeBackboneElements(element);
18876      if (element.hasNameElement()) {
18877        composeString("name", element.getNameElement());
18878      }
18879      if (element.hasSoftwareElement()) {
18880        composeString("software", element.getSoftwareElement());
18881      }
18882      if (element.hasVersionElement()) {
18883        composeString("version", element.getVersionElement());
18884      }
18885      if (element.hasContact()) {
18886        composeContactPoint("contact", element.getContact());
18887      }
18888      if (element.hasEndpointElement()) {
18889        composeUri("endpoint", element.getEndpointElement());
18890      }
18891      composeElementClose(element);
18892      xml.exit(FHIR_NS, name);
18893    }
18894  }
18895
18896  protected void composeMessageHeaderMessageDestinationComponent(String name,
18897      MessageHeader.MessageDestinationComponent element) throws IOException {
18898    if (element != null) {
18899      composeElementAttributes(element);
18900      xml.enter(FHIR_NS, name);
18901      composeBackboneElements(element);
18902      if (element.hasNameElement()) {
18903        composeString("name", element.getNameElement());
18904      }
18905      if (element.hasTarget()) {
18906        composeReference("target", element.getTarget());
18907      }
18908      if (element.hasEndpointElement()) {
18909        composeUri("endpoint", element.getEndpointElement());
18910      }
18911      composeElementClose(element);
18912      xml.exit(FHIR_NS, name);
18913    }
18914  }
18915
18916  protected void composeNamingSystem(String name, NamingSystem element) throws IOException {
18917    if (element != null) {
18918      composeDomainResourceAttributes(element);
18919      xml.enter(FHIR_NS, name);
18920      composeDomainResourceElements(element);
18921      if (element.hasNameElement()) {
18922        composeString("name", element.getNameElement());
18923      }
18924      if (element.hasStatusElement())
18925        composeEnumeration("status", element.getStatusElement(),
18926            new Enumerations.ConformanceResourceStatusEnumFactory());
18927      if (element.hasKindElement())
18928        composeEnumeration("kind", element.getKindElement(), new NamingSystem.NamingSystemTypeEnumFactory());
18929      if (element.hasPublisherElement()) {
18930        composeString("publisher", element.getPublisherElement());
18931      }
18932      if (element.hasContact()) {
18933        for (NamingSystem.NamingSystemContactComponent e : element.getContact())
18934          composeNamingSystemNamingSystemContactComponent("contact", e);
18935      }
18936      if (element.hasResponsibleElement()) {
18937        composeString("responsible", element.getResponsibleElement());
18938      }
18939      if (element.hasDateElement()) {
18940        composeDateTime("date", element.getDateElement());
18941      }
18942      if (element.hasType()) {
18943        composeCodeableConcept("type", element.getType());
18944      }
18945      if (element.hasDescriptionElement()) {
18946        composeString("description", element.getDescriptionElement());
18947      }
18948      if (element.hasUseContext()) {
18949        for (CodeableConcept e : element.getUseContext())
18950          composeCodeableConcept("useContext", e);
18951      }
18952      if (element.hasUsageElement()) {
18953        composeString("usage", element.getUsageElement());
18954      }
18955      if (element.hasUniqueId()) {
18956        for (NamingSystem.NamingSystemUniqueIdComponent e : element.getUniqueId())
18957          composeNamingSystemNamingSystemUniqueIdComponent("uniqueId", e);
18958      }
18959      if (element.hasReplacedBy()) {
18960        composeReference("replacedBy", element.getReplacedBy());
18961      }
18962      composeElementClose(element);
18963      xml.exit(FHIR_NS, name);
18964    }
18965  }
18966
18967  protected void composeNamingSystemNamingSystemContactComponent(String name,
18968      NamingSystem.NamingSystemContactComponent element) throws IOException {
18969    if (element != null) {
18970      composeElementAttributes(element);
18971      xml.enter(FHIR_NS, name);
18972      composeBackboneElements(element);
18973      if (element.hasNameElement()) {
18974        composeString("name", element.getNameElement());
18975      }
18976      if (element.hasTelecom()) {
18977        for (ContactPoint e : element.getTelecom())
18978          composeContactPoint("telecom", e);
18979      }
18980      composeElementClose(element);
18981      xml.exit(FHIR_NS, name);
18982    }
18983  }
18984
18985  protected void composeNamingSystemNamingSystemUniqueIdComponent(String name,
18986      NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
18987    if (element != null) {
18988      composeElementAttributes(element);
18989      xml.enter(FHIR_NS, name);
18990      composeBackboneElements(element);
18991      if (element.hasTypeElement())
18992        composeEnumeration("type", element.getTypeElement(), new NamingSystem.NamingSystemIdentifierTypeEnumFactory());
18993      if (element.hasValueElement()) {
18994        composeString("value", element.getValueElement());
18995      }
18996      if (element.hasPreferredElement()) {
18997        composeBoolean("preferred", element.getPreferredElement());
18998      }
18999      if (element.hasPeriod()) {
19000        composePeriod("period", element.getPeriod());
19001      }
19002      composeElementClose(element);
19003      xml.exit(FHIR_NS, name);
19004    }
19005  }
19006
19007  protected void composeNutritionOrder(String name, NutritionOrder element) throws IOException {
19008    if (element != null) {
19009      composeDomainResourceAttributes(element);
19010      xml.enter(FHIR_NS, name);
19011      composeDomainResourceElements(element);
19012      if (element.hasPatient()) {
19013        composeReference("patient", element.getPatient());
19014      }
19015      if (element.hasOrderer()) {
19016        composeReference("orderer", element.getOrderer());
19017      }
19018      if (element.hasIdentifier()) {
19019        for (Identifier e : element.getIdentifier())
19020          composeIdentifier("identifier", e);
19021      }
19022      if (element.hasEncounter()) {
19023        composeReference("encounter", element.getEncounter());
19024      }
19025      if (element.hasDateTimeElement()) {
19026        composeDateTime("dateTime", element.getDateTimeElement());
19027      }
19028      if (element.hasStatusElement())
19029        composeEnumeration("status", element.getStatusElement(), new NutritionOrder.NutritionOrderStatusEnumFactory());
19030      if (element.hasAllergyIntolerance()) {
19031        for (Reference e : element.getAllergyIntolerance())
19032          composeReference("allergyIntolerance", e);
19033      }
19034      if (element.hasFoodPreferenceModifier()) {
19035        for (CodeableConcept e : element.getFoodPreferenceModifier())
19036          composeCodeableConcept("foodPreferenceModifier", e);
19037      }
19038      if (element.hasExcludeFoodModifier()) {
19039        for (CodeableConcept e : element.getExcludeFoodModifier())
19040          composeCodeableConcept("excludeFoodModifier", e);
19041      }
19042      if (element.hasOralDiet()) {
19043        composeNutritionOrderNutritionOrderOralDietComponent("oralDiet", element.getOralDiet());
19044      }
19045      if (element.hasSupplement()) {
19046        for (NutritionOrder.NutritionOrderSupplementComponent e : element.getSupplement())
19047          composeNutritionOrderNutritionOrderSupplementComponent("supplement", e);
19048      }
19049      if (element.hasEnteralFormula()) {
19050        composeNutritionOrderNutritionOrderEnteralFormulaComponent("enteralFormula", element.getEnteralFormula());
19051      }
19052      composeElementClose(element);
19053      xml.exit(FHIR_NS, name);
19054    }
19055  }
19056
19057  protected void composeNutritionOrderNutritionOrderOralDietComponent(String name,
19058      NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
19059    if (element != null) {
19060      composeElementAttributes(element);
19061      xml.enter(FHIR_NS, name);
19062      composeBackboneElements(element);
19063      if (element.hasType()) {
19064        for (CodeableConcept e : element.getType())
19065          composeCodeableConcept("type", e);
19066      }
19067      if (element.hasSchedule()) {
19068        for (Timing e : element.getSchedule())
19069          composeTiming("schedule", e);
19070      }
19071      if (element.hasNutrient()) {
19072        for (NutritionOrder.NutritionOrderOralDietNutrientComponent e : element.getNutrient())
19073          composeNutritionOrderNutritionOrderOralDietNutrientComponent("nutrient", e);
19074      }
19075      if (element.hasTexture()) {
19076        for (NutritionOrder.NutritionOrderOralDietTextureComponent e : element.getTexture())
19077          composeNutritionOrderNutritionOrderOralDietTextureComponent("texture", e);
19078      }
19079      if (element.hasFluidConsistencyType()) {
19080        for (CodeableConcept e : element.getFluidConsistencyType())
19081          composeCodeableConcept("fluidConsistencyType", e);
19082      }
19083      if (element.hasInstructionElement()) {
19084        composeString("instruction", element.getInstructionElement());
19085      }
19086      composeElementClose(element);
19087      xml.exit(FHIR_NS, name);
19088    }
19089  }
19090
19091  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponent(String name,
19092      NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
19093    if (element != null) {
19094      composeElementAttributes(element);
19095      xml.enter(FHIR_NS, name);
19096      composeBackboneElements(element);
19097      if (element.hasModifier()) {
19098        composeCodeableConcept("modifier", element.getModifier());
19099      }
19100      if (element.hasAmount()) {
19101        composeSimpleQuantity("amount", element.getAmount());
19102      }
19103      composeElementClose(element);
19104      xml.exit(FHIR_NS, name);
19105    }
19106  }
19107
19108  protected void composeNutritionOrderNutritionOrderOralDietTextureComponent(String name,
19109      NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
19110    if (element != null) {
19111      composeElementAttributes(element);
19112      xml.enter(FHIR_NS, name);
19113      composeBackboneElements(element);
19114      if (element.hasModifier()) {
19115        composeCodeableConcept("modifier", element.getModifier());
19116      }
19117      if (element.hasFoodType()) {
19118        composeCodeableConcept("foodType", element.getFoodType());
19119      }
19120      composeElementClose(element);
19121      xml.exit(FHIR_NS, name);
19122    }
19123  }
19124
19125  protected void composeNutritionOrderNutritionOrderSupplementComponent(String name,
19126      NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
19127    if (element != null) {
19128      composeElementAttributes(element);
19129      xml.enter(FHIR_NS, name);
19130      composeBackboneElements(element);
19131      if (element.hasType()) {
19132        composeCodeableConcept("type", element.getType());
19133      }
19134      if (element.hasProductNameElement()) {
19135        composeString("productName", element.getProductNameElement());
19136      }
19137      if (element.hasSchedule()) {
19138        for (Timing e : element.getSchedule())
19139          composeTiming("schedule", e);
19140      }
19141      if (element.hasQuantity()) {
19142        composeSimpleQuantity("quantity", element.getQuantity());
19143      }
19144      if (element.hasInstructionElement()) {
19145        composeString("instruction", element.getInstructionElement());
19146      }
19147      composeElementClose(element);
19148      xml.exit(FHIR_NS, name);
19149    }
19150  }
19151
19152  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponent(String name,
19153      NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
19154    if (element != null) {
19155      composeElementAttributes(element);
19156      xml.enter(FHIR_NS, name);
19157      composeBackboneElements(element);
19158      if (element.hasBaseFormulaType()) {
19159        composeCodeableConcept("baseFormulaType", element.getBaseFormulaType());
19160      }
19161      if (element.hasBaseFormulaProductNameElement()) {
19162        composeString("baseFormulaProductName", element.getBaseFormulaProductNameElement());
19163      }
19164      if (element.hasAdditiveType()) {
19165        composeCodeableConcept("additiveType", element.getAdditiveType());
19166      }
19167      if (element.hasAdditiveProductNameElement()) {
19168        composeString("additiveProductName", element.getAdditiveProductNameElement());
19169      }
19170      if (element.hasCaloricDensity()) {
19171        composeSimpleQuantity("caloricDensity", element.getCaloricDensity());
19172      }
19173      if (element.hasRouteofAdministration()) {
19174        composeCodeableConcept("routeofAdministration", element.getRouteofAdministration());
19175      }
19176      if (element.hasAdministration()) {
19177        for (NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent e : element.getAdministration())
19178          composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent("administration", e);
19179      }
19180      if (element.hasMaxVolumeToDeliver()) {
19181        composeSimpleQuantity("maxVolumeToDeliver", element.getMaxVolumeToDeliver());
19182      }
19183      if (element.hasAdministrationInstructionElement()) {
19184        composeString("administrationInstruction", element.getAdministrationInstructionElement());
19185      }
19186      composeElementClose(element);
19187      xml.exit(FHIR_NS, name);
19188    }
19189  }
19190
19191  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(String name,
19192      NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
19193    if (element != null) {
19194      composeElementAttributes(element);
19195      xml.enter(FHIR_NS, name);
19196      composeBackboneElements(element);
19197      if (element.hasSchedule()) {
19198        composeTiming("schedule", element.getSchedule());
19199      }
19200      if (element.hasQuantity()) {
19201        composeSimpleQuantity("quantity", element.getQuantity());
19202      }
19203      if (element.hasRate()) {
19204        composeType("rate", element.getRate());
19205      }
19206      composeElementClose(element);
19207      xml.exit(FHIR_NS, name);
19208    }
19209  }
19210
19211  protected void composeObservation(String name, Observation element) throws IOException {
19212    if (element != null) {
19213      composeDomainResourceAttributes(element);
19214      xml.enter(FHIR_NS, name);
19215      composeDomainResourceElements(element);
19216      if (element.hasIdentifier()) {
19217        for (Identifier e : element.getIdentifier())
19218          composeIdentifier("identifier", e);
19219      }
19220      if (element.hasStatusElement())
19221        composeEnumeration("status", element.getStatusElement(), new Observation.ObservationStatusEnumFactory());
19222      if (element.hasCategory()) {
19223        composeCodeableConcept("category", element.getCategory());
19224      }
19225      if (element.hasCode()) {
19226        composeCodeableConcept("code", element.getCode());
19227      }
19228      if (element.hasSubject()) {
19229        composeReference("subject", element.getSubject());
19230      }
19231      if (element.hasEncounter()) {
19232        composeReference("encounter", element.getEncounter());
19233      }
19234      if (element.hasEffective()) {
19235        composeType("effective", element.getEffective());
19236      }
19237      if (element.hasIssuedElement()) {
19238        composeInstant("issued", element.getIssuedElement());
19239      }
19240      if (element.hasPerformer()) {
19241        for (Reference e : element.getPerformer())
19242          composeReference("performer", e);
19243      }
19244      if (element.hasValue()) {
19245        composeType("value", element.getValue());
19246      }
19247      if (element.hasDataAbsentReason()) {
19248        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
19249      }
19250      if (element.hasInterpretation()) {
19251        composeCodeableConcept("interpretation", element.getInterpretation());
19252      }
19253      if (element.hasCommentsElement()) {
19254        composeString("comments", element.getCommentsElement());
19255      }
19256      if (element.hasBodySite()) {
19257        composeCodeableConcept("bodySite", element.getBodySite());
19258      }
19259      if (element.hasMethod()) {
19260        composeCodeableConcept("method", element.getMethod());
19261      }
19262      if (element.hasSpecimen()) {
19263        composeReference("specimen", element.getSpecimen());
19264      }
19265      if (element.hasDevice()) {
19266        composeReference("device", element.getDevice());
19267      }
19268      if (element.hasReferenceRange()) {
19269        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange())
19270          composeObservationObservationReferenceRangeComponent("referenceRange", e);
19271      }
19272      if (element.hasRelated()) {
19273        for (Observation.ObservationRelatedComponent e : element.getRelated())
19274          composeObservationObservationRelatedComponent("related", e);
19275      }
19276      if (element.hasComponent()) {
19277        for (Observation.ObservationComponentComponent e : element.getComponent())
19278          composeObservationObservationComponentComponent("component", e);
19279      }
19280      composeElementClose(element);
19281      xml.exit(FHIR_NS, name);
19282    }
19283  }
19284
19285  protected void composeObservationObservationReferenceRangeComponent(String name,
19286      Observation.ObservationReferenceRangeComponent element) throws IOException {
19287    if (element != null) {
19288      composeElementAttributes(element);
19289      xml.enter(FHIR_NS, name);
19290      composeBackboneElements(element);
19291      if (element.hasLow()) {
19292        composeSimpleQuantity("low", element.getLow());
19293      }
19294      if (element.hasHigh()) {
19295        composeSimpleQuantity("high", element.getHigh());
19296      }
19297      if (element.hasMeaning()) {
19298        composeCodeableConcept("meaning", element.getMeaning());
19299      }
19300      if (element.hasAge()) {
19301        composeRange("age", element.getAge());
19302      }
19303      if (element.hasTextElement()) {
19304        composeString("text", element.getTextElement());
19305      }
19306      composeElementClose(element);
19307      xml.exit(FHIR_NS, name);
19308    }
19309  }
19310
19311  protected void composeObservationObservationRelatedComponent(String name,
19312      Observation.ObservationRelatedComponent element) throws IOException {
19313    if (element != null) {
19314      composeElementAttributes(element);
19315      xml.enter(FHIR_NS, name);
19316      composeBackboneElements(element);
19317      if (element.hasTypeElement())
19318        composeEnumeration("type", element.getTypeElement(), new Observation.ObservationRelationshipTypeEnumFactory());
19319      if (element.hasTarget()) {
19320        composeReference("target", element.getTarget());
19321      }
19322      composeElementClose(element);
19323      xml.exit(FHIR_NS, name);
19324    }
19325  }
19326
19327  protected void composeObservationObservationComponentComponent(String name,
19328      Observation.ObservationComponentComponent element) throws IOException {
19329    if (element != null) {
19330      composeElementAttributes(element);
19331      xml.enter(FHIR_NS, name);
19332      composeBackboneElements(element);
19333      if (element.hasCode()) {
19334        composeCodeableConcept("code", element.getCode());
19335      }
19336      if (element.hasValue()) {
19337        composeType("value", element.getValue());
19338      }
19339      if (element.hasDataAbsentReason()) {
19340        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
19341      }
19342      if (element.hasReferenceRange()) {
19343        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange())
19344          composeObservationObservationReferenceRangeComponent("referenceRange", e);
19345      }
19346      composeElementClose(element);
19347      xml.exit(FHIR_NS, name);
19348    }
19349  }
19350
19351  protected void composeOperationDefinition(String name, OperationDefinition element) throws IOException {
19352    if (element != null) {
19353      composeDomainResourceAttributes(element);
19354      xml.enter(FHIR_NS, name);
19355      composeDomainResourceElements(element);
19356      if (element.hasUrlElement()) {
19357        composeUri("url", element.getUrlElement());
19358      }
19359      if (element.hasVersionElement()) {
19360        composeString("version", element.getVersionElement());
19361      }
19362      if (element.hasNameElement()) {
19363        composeString("name", element.getNameElement());
19364      }
19365      if (element.hasStatusElement())
19366        composeEnumeration("status", element.getStatusElement(),
19367            new Enumerations.ConformanceResourceStatusEnumFactory());
19368      if (element.hasKindElement())
19369        composeEnumeration("kind", element.getKindElement(), new OperationDefinition.OperationKindEnumFactory());
19370      if (element.hasExperimentalElement()) {
19371        composeBoolean("experimental", element.getExperimentalElement());
19372      }
19373      if (element.hasPublisherElement()) {
19374        composeString("publisher", element.getPublisherElement());
19375      }
19376      if (element.hasContact()) {
19377        for (OperationDefinition.OperationDefinitionContactComponent e : element.getContact())
19378          composeOperationDefinitionOperationDefinitionContactComponent("contact", e);
19379      }
19380      if (element.hasDateElement()) {
19381        composeDateTime("date", element.getDateElement());
19382      }
19383      if (element.hasDescriptionElement()) {
19384        composeString("description", element.getDescriptionElement());
19385      }
19386      if (element.hasRequirementsElement()) {
19387        composeString("requirements", element.getRequirementsElement());
19388      }
19389      if (element.hasIdempotentElement()) {
19390        composeBoolean("idempotent", element.getIdempotentElement());
19391      }
19392      if (element.hasCodeElement()) {
19393        composeCode("code", element.getCodeElement());
19394      }
19395      if (element.hasNotesElement()) {
19396        composeString("notes", element.getNotesElement());
19397      }
19398      if (element.hasBase()) {
19399        composeReference("base", element.getBase());
19400      }
19401      if (element.hasSystemElement()) {
19402        composeBoolean("system", element.getSystemElement());
19403      }
19404      if (element.hasType()) {
19405        for (CodeType e : element.getType())
19406          composeCode("type", e);
19407      }
19408      if (element.hasInstanceElement()) {
19409        composeBoolean("instance", element.getInstanceElement());
19410      }
19411      if (element.hasParameter()) {
19412        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getParameter())
19413          composeOperationDefinitionOperationDefinitionParameterComponent("parameter", e);
19414      }
19415      composeElementClose(element);
19416      xml.exit(FHIR_NS, name);
19417    }
19418  }
19419
19420  protected void composeOperationDefinitionOperationDefinitionContactComponent(String name,
19421      OperationDefinition.OperationDefinitionContactComponent element) throws IOException {
19422    if (element != null) {
19423      composeElementAttributes(element);
19424      xml.enter(FHIR_NS, name);
19425      composeBackboneElements(element);
19426      if (element.hasNameElement()) {
19427        composeString("name", element.getNameElement());
19428      }
19429      if (element.hasTelecom()) {
19430        for (ContactPoint e : element.getTelecom())
19431          composeContactPoint("telecom", e);
19432      }
19433      composeElementClose(element);
19434      xml.exit(FHIR_NS, name);
19435    }
19436  }
19437
19438  protected void composeOperationDefinitionOperationDefinitionParameterComponent(String name,
19439      OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
19440    if (element != null) {
19441      composeElementAttributes(element);
19442      xml.enter(FHIR_NS, name);
19443      composeBackboneElements(element);
19444      if (element.hasNameElement()) {
19445        composeCode("name", element.getNameElement());
19446      }
19447      if (element.hasUseElement())
19448        composeEnumeration("use", element.getUseElement(), new OperationDefinition.OperationParameterUseEnumFactory());
19449      if (element.hasMinElement()) {
19450        composeInteger("min", element.getMinElement());
19451      }
19452      if (element.hasMaxElement()) {
19453        composeString("max", element.getMaxElement());
19454      }
19455      if (element.hasDocumentationElement()) {
19456        composeString("documentation", element.getDocumentationElement());
19457      }
19458      if (element.hasTypeElement()) {
19459        composeCode("type", element.getTypeElement());
19460      }
19461      if (element.hasProfile()) {
19462        composeReference("profile", element.getProfile());
19463      }
19464      if (element.hasBinding()) {
19465        composeOperationDefinitionOperationDefinitionParameterBindingComponent("binding", element.getBinding());
19466      }
19467      if (element.hasPart()) {
19468        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getPart())
19469          composeOperationDefinitionOperationDefinitionParameterComponent("part", e);
19470      }
19471      composeElementClose(element);
19472      xml.exit(FHIR_NS, name);
19473    }
19474  }
19475
19476  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponent(String name,
19477      OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
19478    if (element != null) {
19479      composeElementAttributes(element);
19480      xml.enter(FHIR_NS, name);
19481      composeBackboneElements(element);
19482      if (element.hasStrengthElement())
19483        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
19484      if (element.hasValueSet()) {
19485        composeType("valueSet", element.getValueSet());
19486      }
19487      composeElementClose(element);
19488      xml.exit(FHIR_NS, name);
19489    }
19490  }
19491
19492  protected void composeOperationOutcome(String name, OperationOutcome element) throws IOException {
19493    if (element != null) {
19494      composeDomainResourceAttributes(element);
19495      xml.enter(FHIR_NS, name);
19496      composeDomainResourceElements(element);
19497      if (element.hasIssue()) {
19498        for (OperationOutcome.OperationOutcomeIssueComponent e : element.getIssue())
19499          composeOperationOutcomeOperationOutcomeIssueComponent("issue", e);
19500      }
19501      composeElementClose(element);
19502      xml.exit(FHIR_NS, name);
19503    }
19504  }
19505
19506  protected void composeOperationOutcomeOperationOutcomeIssueComponent(String name,
19507      OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
19508    if (element != null) {
19509      composeElementAttributes(element);
19510      xml.enter(FHIR_NS, name);
19511      composeBackboneElements(element);
19512      if (element.hasSeverityElement())
19513        composeEnumeration("severity", element.getSeverityElement(), new OperationOutcome.IssueSeverityEnumFactory());
19514      if (element.hasCodeElement())
19515        composeEnumeration("code", element.getCodeElement(), new OperationOutcome.IssueTypeEnumFactory());
19516      if (element.hasDetails()) {
19517        composeCodeableConcept("details", element.getDetails());
19518      }
19519      if (element.hasDiagnosticsElement()) {
19520        composeString("diagnostics", element.getDiagnosticsElement());
19521      }
19522      if (element.hasLocation()) {
19523        for (StringType e : element.getLocation())
19524          composeString("location", e);
19525      }
19526      composeElementClose(element);
19527      xml.exit(FHIR_NS, name);
19528    }
19529  }
19530
19531  protected void composeOrder(String name, Order element) throws IOException {
19532    if (element != null) {
19533      composeDomainResourceAttributes(element);
19534      xml.enter(FHIR_NS, name);
19535      composeDomainResourceElements(element);
19536      if (element.hasIdentifier()) {
19537        for (Identifier e : element.getIdentifier())
19538          composeIdentifier("identifier", e);
19539      }
19540      if (element.hasDateElement()) {
19541        composeDateTime("date", element.getDateElement());
19542      }
19543      if (element.hasSubject()) {
19544        composeReference("subject", element.getSubject());
19545      }
19546      if (element.hasSource()) {
19547        composeReference("source", element.getSource());
19548      }
19549      if (element.hasTarget()) {
19550        composeReference("target", element.getTarget());
19551      }
19552      if (element.hasReason()) {
19553        composeType("reason", element.getReason());
19554      }
19555      if (element.hasWhen()) {
19556        composeOrderOrderWhenComponent("when", element.getWhen());
19557      }
19558      if (element.hasDetail()) {
19559        for (Reference e : element.getDetail())
19560          composeReference("detail", e);
19561      }
19562      composeElementClose(element);
19563      xml.exit(FHIR_NS, name);
19564    }
19565  }
19566
19567  protected void composeOrderOrderWhenComponent(String name, Order.OrderWhenComponent element) throws IOException {
19568    if (element != null) {
19569      composeElementAttributes(element);
19570      xml.enter(FHIR_NS, name);
19571      composeBackboneElements(element);
19572      if (element.hasCode()) {
19573        composeCodeableConcept("code", element.getCode());
19574      }
19575      if (element.hasSchedule()) {
19576        composeTiming("schedule", element.getSchedule());
19577      }
19578      composeElementClose(element);
19579      xml.exit(FHIR_NS, name);
19580    }
19581  }
19582
19583  protected void composeOrderResponse(String name, OrderResponse element) throws IOException {
19584    if (element != null) {
19585      composeDomainResourceAttributes(element);
19586      xml.enter(FHIR_NS, name);
19587      composeDomainResourceElements(element);
19588      if (element.hasIdentifier()) {
19589        for (Identifier e : element.getIdentifier())
19590          composeIdentifier("identifier", e);
19591      }
19592      if (element.hasRequest()) {
19593        composeReference("request", element.getRequest());
19594      }
19595      if (element.hasDateElement()) {
19596        composeDateTime("date", element.getDateElement());
19597      }
19598      if (element.hasWho()) {
19599        composeReference("who", element.getWho());
19600      }
19601      if (element.hasOrderStatusElement())
19602        composeEnumeration("orderStatus", element.getOrderStatusElement(), new OrderResponse.OrderStatusEnumFactory());
19603      if (element.hasDescriptionElement()) {
19604        composeString("description", element.getDescriptionElement());
19605      }
19606      if (element.hasFulfillment()) {
19607        for (Reference e : element.getFulfillment())
19608          composeReference("fulfillment", e);
19609      }
19610      composeElementClose(element);
19611      xml.exit(FHIR_NS, name);
19612    }
19613  }
19614
19615  protected void composeOrganization(String name, Organization element) throws IOException {
19616    if (element != null) {
19617      composeDomainResourceAttributes(element);
19618      xml.enter(FHIR_NS, name);
19619      composeDomainResourceElements(element);
19620      if (element.hasIdentifier()) {
19621        for (Identifier e : element.getIdentifier())
19622          composeIdentifier("identifier", e);
19623      }
19624      if (element.hasActiveElement()) {
19625        composeBoolean("active", element.getActiveElement());
19626      }
19627      if (element.hasType()) {
19628        composeCodeableConcept("type", element.getType());
19629      }
19630      if (element.hasNameElement()) {
19631        composeString("name", element.getNameElement());
19632      }
19633      if (element.hasTelecom()) {
19634        for (ContactPoint e : element.getTelecom())
19635          composeContactPoint("telecom", e);
19636      }
19637      if (element.hasAddress()) {
19638        for (Address e : element.getAddress())
19639          composeAddress("address", e);
19640      }
19641      if (element.hasPartOf()) {
19642        composeReference("partOf", element.getPartOf());
19643      }
19644      if (element.hasContact()) {
19645        for (Organization.OrganizationContactComponent e : element.getContact())
19646          composeOrganizationOrganizationContactComponent("contact", e);
19647      }
19648      composeElementClose(element);
19649      xml.exit(FHIR_NS, name);
19650    }
19651  }
19652
19653  protected void composeOrganizationOrganizationContactComponent(String name,
19654      Organization.OrganizationContactComponent element) throws IOException {
19655    if (element != null) {
19656      composeElementAttributes(element);
19657      xml.enter(FHIR_NS, name);
19658      composeBackboneElements(element);
19659      if (element.hasPurpose()) {
19660        composeCodeableConcept("purpose", element.getPurpose());
19661      }
19662      if (element.hasName()) {
19663        composeHumanName("name", element.getName());
19664      }
19665      if (element.hasTelecom()) {
19666        for (ContactPoint e : element.getTelecom())
19667          composeContactPoint("telecom", e);
19668      }
19669      if (element.hasAddress()) {
19670        composeAddress("address", element.getAddress());
19671      }
19672      composeElementClose(element);
19673      xml.exit(FHIR_NS, name);
19674    }
19675  }
19676
19677  protected void composePatient(String name, Patient element) throws IOException {
19678    if (element != null) {
19679      composeDomainResourceAttributes(element);
19680      xml.enter(FHIR_NS, name);
19681      composeDomainResourceElements(element);
19682      if (element.hasIdentifier()) {
19683        for (Identifier e : element.getIdentifier())
19684          composeIdentifier("identifier", e);
19685      }
19686      if (element.hasActiveElement()) {
19687        composeBoolean("active", element.getActiveElement());
19688      }
19689      if (element.hasName()) {
19690        for (HumanName e : element.getName())
19691          composeHumanName("name", e);
19692      }
19693      if (element.hasTelecom()) {
19694        for (ContactPoint e : element.getTelecom())
19695          composeContactPoint("telecom", e);
19696      }
19697      if (element.hasGenderElement())
19698        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
19699      if (element.hasBirthDateElement()) {
19700        composeDate("birthDate", element.getBirthDateElement());
19701      }
19702      if (element.hasDeceased()) {
19703        composeType("deceased", element.getDeceased());
19704      }
19705      if (element.hasAddress()) {
19706        for (Address e : element.getAddress())
19707          composeAddress("address", e);
19708      }
19709      if (element.hasMaritalStatus()) {
19710        composeCodeableConcept("maritalStatus", element.getMaritalStatus());
19711      }
19712      if (element.hasMultipleBirth()) {
19713        composeType("multipleBirth", element.getMultipleBirth());
19714      }
19715      if (element.hasPhoto()) {
19716        for (Attachment e : element.getPhoto())
19717          composeAttachment("photo", e);
19718      }
19719      if (element.hasContact()) {
19720        for (Patient.ContactComponent e : element.getContact())
19721          composePatientContactComponent("contact", e);
19722      }
19723      if (element.hasAnimal()) {
19724        composePatientAnimalComponent("animal", element.getAnimal());
19725      }
19726      if (element.hasCommunication()) {
19727        for (Patient.PatientCommunicationComponent e : element.getCommunication())
19728          composePatientPatientCommunicationComponent("communication", e);
19729      }
19730      if (element.hasCareProvider()) {
19731        for (Reference e : element.getCareProvider())
19732          composeReference("careProvider", e);
19733      }
19734      if (element.hasManagingOrganization()) {
19735        composeReference("managingOrganization", element.getManagingOrganization());
19736      }
19737      if (element.hasLink()) {
19738        for (Patient.PatientLinkComponent e : element.getLink())
19739          composePatientPatientLinkComponent("link", e);
19740      }
19741      composeElementClose(element);
19742      xml.exit(FHIR_NS, name);
19743    }
19744  }
19745
19746  protected void composePatientContactComponent(String name, Patient.ContactComponent element) throws IOException {
19747    if (element != null) {
19748      composeElementAttributes(element);
19749      xml.enter(FHIR_NS, name);
19750      composeBackboneElements(element);
19751      if (element.hasRelationship()) {
19752        for (CodeableConcept e : element.getRelationship())
19753          composeCodeableConcept("relationship", e);
19754      }
19755      if (element.hasName()) {
19756        composeHumanName("name", element.getName());
19757      }
19758      if (element.hasTelecom()) {
19759        for (ContactPoint e : element.getTelecom())
19760          composeContactPoint("telecom", e);
19761      }
19762      if (element.hasAddress()) {
19763        composeAddress("address", element.getAddress());
19764      }
19765      if (element.hasGenderElement())
19766        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
19767      if (element.hasOrganization()) {
19768        composeReference("organization", element.getOrganization());
19769      }
19770      if (element.hasPeriod()) {
19771        composePeriod("period", element.getPeriod());
19772      }
19773      composeElementClose(element);
19774      xml.exit(FHIR_NS, name);
19775    }
19776  }
19777
19778  protected void composePatientAnimalComponent(String name, Patient.AnimalComponent element) throws IOException {
19779    if (element != null) {
19780      composeElementAttributes(element);
19781      xml.enter(FHIR_NS, name);
19782      composeBackboneElements(element);
19783      if (element.hasSpecies()) {
19784        composeCodeableConcept("species", element.getSpecies());
19785      }
19786      if (element.hasBreed()) {
19787        composeCodeableConcept("breed", element.getBreed());
19788      }
19789      if (element.hasGenderStatus()) {
19790        composeCodeableConcept("genderStatus", element.getGenderStatus());
19791      }
19792      composeElementClose(element);
19793      xml.exit(FHIR_NS, name);
19794    }
19795  }
19796
19797  protected void composePatientPatientCommunicationComponent(String name, Patient.PatientCommunicationComponent element)
19798      throws IOException {
19799    if (element != null) {
19800      composeElementAttributes(element);
19801      xml.enter(FHIR_NS, name);
19802      composeBackboneElements(element);
19803      if (element.hasLanguage()) {
19804        composeCodeableConcept("language", element.getLanguage());
19805      }
19806      if (element.hasPreferredElement()) {
19807        composeBoolean("preferred", element.getPreferredElement());
19808      }
19809      composeElementClose(element);
19810      xml.exit(FHIR_NS, name);
19811    }
19812  }
19813
19814  protected void composePatientPatientLinkComponent(String name, Patient.PatientLinkComponent element)
19815      throws IOException {
19816    if (element != null) {
19817      composeElementAttributes(element);
19818      xml.enter(FHIR_NS, name);
19819      composeBackboneElements(element);
19820      if (element.hasOther()) {
19821        composeReference("other", element.getOther());
19822      }
19823      if (element.hasTypeElement())
19824        composeEnumeration("type", element.getTypeElement(), new Patient.LinkTypeEnumFactory());
19825      composeElementClose(element);
19826      xml.exit(FHIR_NS, name);
19827    }
19828  }
19829
19830  protected void composePaymentNotice(String name, PaymentNotice element) throws IOException {
19831    if (element != null) {
19832      composeDomainResourceAttributes(element);
19833      xml.enter(FHIR_NS, name);
19834      composeDomainResourceElements(element);
19835      if (element.hasIdentifier()) {
19836        for (Identifier e : element.getIdentifier())
19837          composeIdentifier("identifier", e);
19838      }
19839      if (element.hasRuleset()) {
19840        composeCoding("ruleset", element.getRuleset());
19841      }
19842      if (element.hasOriginalRuleset()) {
19843        composeCoding("originalRuleset", element.getOriginalRuleset());
19844      }
19845      if (element.hasCreatedElement()) {
19846        composeDateTime("created", element.getCreatedElement());
19847      }
19848      if (element.hasTarget()) {
19849        composeReference("target", element.getTarget());
19850      }
19851      if (element.hasProvider()) {
19852        composeReference("provider", element.getProvider());
19853      }
19854      if (element.hasOrganization()) {
19855        composeReference("organization", element.getOrganization());
19856      }
19857      if (element.hasRequest()) {
19858        composeReference("request", element.getRequest());
19859      }
19860      if (element.hasResponse()) {
19861        composeReference("response", element.getResponse());
19862      }
19863      if (element.hasPaymentStatus()) {
19864        composeCoding("paymentStatus", element.getPaymentStatus());
19865      }
19866      composeElementClose(element);
19867      xml.exit(FHIR_NS, name);
19868    }
19869  }
19870
19871  protected void composePaymentReconciliation(String name, PaymentReconciliation element) throws IOException {
19872    if (element != null) {
19873      composeDomainResourceAttributes(element);
19874      xml.enter(FHIR_NS, name);
19875      composeDomainResourceElements(element);
19876      if (element.hasIdentifier()) {
19877        for (Identifier e : element.getIdentifier())
19878          composeIdentifier("identifier", e);
19879      }
19880      if (element.hasRequest()) {
19881        composeReference("request", element.getRequest());
19882      }
19883      if (element.hasOutcomeElement())
19884        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
19885      if (element.hasDispositionElement()) {
19886        composeString("disposition", element.getDispositionElement());
19887      }
19888      if (element.hasRuleset()) {
19889        composeCoding("ruleset", element.getRuleset());
19890      }
19891      if (element.hasOriginalRuleset()) {
19892        composeCoding("originalRuleset", element.getOriginalRuleset());
19893      }
19894      if (element.hasCreatedElement()) {
19895        composeDateTime("created", element.getCreatedElement());
19896      }
19897      if (element.hasPeriod()) {
19898        composePeriod("period", element.getPeriod());
19899      }
19900      if (element.hasOrganization()) {
19901        composeReference("organization", element.getOrganization());
19902      }
19903      if (element.hasRequestProvider()) {
19904        composeReference("requestProvider", element.getRequestProvider());
19905      }
19906      if (element.hasRequestOrganization()) {
19907        composeReference("requestOrganization", element.getRequestOrganization());
19908      }
19909      if (element.hasDetail()) {
19910        for (PaymentReconciliation.DetailsComponent e : element.getDetail())
19911          composePaymentReconciliationDetailsComponent("detail", e);
19912      }
19913      if (element.hasForm()) {
19914        composeCoding("form", element.getForm());
19915      }
19916      if (element.hasTotal()) {
19917        composeMoney("total", element.getTotal());
19918      }
19919      if (element.hasNote()) {
19920        for (PaymentReconciliation.NotesComponent e : element.getNote())
19921          composePaymentReconciliationNotesComponent("note", e);
19922      }
19923      composeElementClose(element);
19924      xml.exit(FHIR_NS, name);
19925    }
19926  }
19927
19928  protected void composePaymentReconciliationDetailsComponent(String name,
19929      PaymentReconciliation.DetailsComponent element) throws IOException {
19930    if (element != null) {
19931      composeElementAttributes(element);
19932      xml.enter(FHIR_NS, name);
19933      composeBackboneElements(element);
19934      if (element.hasType()) {
19935        composeCoding("type", element.getType());
19936      }
19937      if (element.hasRequest()) {
19938        composeReference("request", element.getRequest());
19939      }
19940      if (element.hasResponce()) {
19941        composeReference("responce", element.getResponce());
19942      }
19943      if (element.hasSubmitter()) {
19944        composeReference("submitter", element.getSubmitter());
19945      }
19946      if (element.hasPayee()) {
19947        composeReference("payee", element.getPayee());
19948      }
19949      if (element.hasDateElement()) {
19950        composeDate("date", element.getDateElement());
19951      }
19952      if (element.hasAmount()) {
19953        composeMoney("amount", element.getAmount());
19954      }
19955      composeElementClose(element);
19956      xml.exit(FHIR_NS, name);
19957    }
19958  }
19959
19960  protected void composePaymentReconciliationNotesComponent(String name, PaymentReconciliation.NotesComponent element)
19961      throws IOException {
19962    if (element != null) {
19963      composeElementAttributes(element);
19964      xml.enter(FHIR_NS, name);
19965      composeBackboneElements(element);
19966      if (element.hasType()) {
19967        composeCoding("type", element.getType());
19968      }
19969      if (element.hasTextElement()) {
19970        composeString("text", element.getTextElement());
19971      }
19972      composeElementClose(element);
19973      xml.exit(FHIR_NS, name);
19974    }
19975  }
19976
19977  protected void composePerson(String name, Person element) throws IOException {
19978    if (element != null) {
19979      composeDomainResourceAttributes(element);
19980      xml.enter(FHIR_NS, name);
19981      composeDomainResourceElements(element);
19982      if (element.hasIdentifier()) {
19983        for (Identifier e : element.getIdentifier())
19984          composeIdentifier("identifier", e);
19985      }
19986      if (element.hasName()) {
19987        for (HumanName e : element.getName())
19988          composeHumanName("name", e);
19989      }
19990      if (element.hasTelecom()) {
19991        for (ContactPoint e : element.getTelecom())
19992          composeContactPoint("telecom", e);
19993      }
19994      if (element.hasGenderElement())
19995        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
19996      if (element.hasBirthDateElement()) {
19997        composeDate("birthDate", element.getBirthDateElement());
19998      }
19999      if (element.hasAddress()) {
20000        for (Address e : element.getAddress())
20001          composeAddress("address", e);
20002      }
20003      if (element.hasPhoto()) {
20004        composeAttachment("photo", element.getPhoto());
20005      }
20006      if (element.hasManagingOrganization()) {
20007        composeReference("managingOrganization", element.getManagingOrganization());
20008      }
20009      if (element.hasActiveElement()) {
20010        composeBoolean("active", element.getActiveElement());
20011      }
20012      if (element.hasLink()) {
20013        for (Person.PersonLinkComponent e : element.getLink())
20014          composePersonPersonLinkComponent("link", e);
20015      }
20016      composeElementClose(element);
20017      xml.exit(FHIR_NS, name);
20018    }
20019  }
20020
20021  protected void composePersonPersonLinkComponent(String name, Person.PersonLinkComponent element) throws IOException {
20022    if (element != null) {
20023      composeElementAttributes(element);
20024      xml.enter(FHIR_NS, name);
20025      composeBackboneElements(element);
20026      if (element.hasTarget()) {
20027        composeReference("target", element.getTarget());
20028      }
20029      if (element.hasAssuranceElement())
20030        composeEnumeration("assurance", element.getAssuranceElement(), new Person.IdentityAssuranceLevelEnumFactory());
20031      composeElementClose(element);
20032      xml.exit(FHIR_NS, name);
20033    }
20034  }
20035
20036  protected void composePractitioner(String name, Practitioner element) throws IOException {
20037    if (element != null) {
20038      composeDomainResourceAttributes(element);
20039      xml.enter(FHIR_NS, name);
20040      composeDomainResourceElements(element);
20041      if (element.hasIdentifier()) {
20042        for (Identifier e : element.getIdentifier())
20043          composeIdentifier("identifier", e);
20044      }
20045      if (element.hasActiveElement()) {
20046        composeBoolean("active", element.getActiveElement());
20047      }
20048      if (element.hasName()) {
20049        composeHumanName("name", element.getName());
20050      }
20051      if (element.hasTelecom()) {
20052        for (ContactPoint e : element.getTelecom())
20053          composeContactPoint("telecom", e);
20054      }
20055      if (element.hasAddress()) {
20056        for (Address e : element.getAddress())
20057          composeAddress("address", e);
20058      }
20059      if (element.hasGenderElement())
20060        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
20061      if (element.hasBirthDateElement()) {
20062        composeDate("birthDate", element.getBirthDateElement());
20063      }
20064      if (element.hasPhoto()) {
20065        for (Attachment e : element.getPhoto())
20066          composeAttachment("photo", e);
20067      }
20068      if (element.hasPractitionerRole()) {
20069        for (Practitioner.PractitionerPractitionerRoleComponent e : element.getPractitionerRole())
20070          composePractitionerPractitionerPractitionerRoleComponent("practitionerRole", e);
20071      }
20072      if (element.hasQualification()) {
20073        for (Practitioner.PractitionerQualificationComponent e : element.getQualification())
20074          composePractitionerPractitionerQualificationComponent("qualification", e);
20075      }
20076      if (element.hasCommunication()) {
20077        for (CodeableConcept e : element.getCommunication())
20078          composeCodeableConcept("communication", e);
20079      }
20080      composeElementClose(element);
20081      xml.exit(FHIR_NS, name);
20082    }
20083  }
20084
20085  protected void composePractitionerPractitionerPractitionerRoleComponent(String name,
20086      Practitioner.PractitionerPractitionerRoleComponent element) throws IOException {
20087    if (element != null) {
20088      composeElementAttributes(element);
20089      xml.enter(FHIR_NS, name);
20090      composeBackboneElements(element);
20091      if (element.hasManagingOrganization()) {
20092        composeReference("managingOrganization", element.getManagingOrganization());
20093      }
20094      if (element.hasRole()) {
20095        composeCodeableConcept("role", element.getRole());
20096      }
20097      if (element.hasSpecialty()) {
20098        for (CodeableConcept e : element.getSpecialty())
20099          composeCodeableConcept("specialty", e);
20100      }
20101      if (element.hasPeriod()) {
20102        composePeriod("period", element.getPeriod());
20103      }
20104      if (element.hasLocation()) {
20105        for (Reference e : element.getLocation())
20106          composeReference("location", e);
20107      }
20108      if (element.hasHealthcareService()) {
20109        for (Reference e : element.getHealthcareService())
20110          composeReference("healthcareService", e);
20111      }
20112      composeElementClose(element);
20113      xml.exit(FHIR_NS, name);
20114    }
20115  }
20116
20117  protected void composePractitionerPractitionerQualificationComponent(String name,
20118      Practitioner.PractitionerQualificationComponent element) throws IOException {
20119    if (element != null) {
20120      composeElementAttributes(element);
20121      xml.enter(FHIR_NS, name);
20122      composeBackboneElements(element);
20123      if (element.hasIdentifier()) {
20124        for (Identifier e : element.getIdentifier())
20125          composeIdentifier("identifier", e);
20126      }
20127      if (element.hasCode()) {
20128        composeCodeableConcept("code", element.getCode());
20129      }
20130      if (element.hasPeriod()) {
20131        composePeriod("period", element.getPeriod());
20132      }
20133      if (element.hasIssuer()) {
20134        composeReference("issuer", element.getIssuer());
20135      }
20136      composeElementClose(element);
20137      xml.exit(FHIR_NS, name);
20138    }
20139  }
20140
20141  protected void composeProcedure(String name, Procedure element) throws IOException {
20142    if (element != null) {
20143      composeDomainResourceAttributes(element);
20144      xml.enter(FHIR_NS, name);
20145      composeDomainResourceElements(element);
20146      if (element.hasIdentifier()) {
20147        for (Identifier e : element.getIdentifier())
20148          composeIdentifier("identifier", e);
20149      }
20150      if (element.hasSubject()) {
20151        composeReference("subject", element.getSubject());
20152      }
20153      if (element.hasStatusElement())
20154        composeEnumeration("status", element.getStatusElement(), new Procedure.ProcedureStatusEnumFactory());
20155      if (element.hasCategory()) {
20156        composeCodeableConcept("category", element.getCategory());
20157      }
20158      if (element.hasCode()) {
20159        composeCodeableConcept("code", element.getCode());
20160      }
20161      if (element.hasNotPerformedElement()) {
20162        composeBoolean("notPerformed", element.getNotPerformedElement());
20163      }
20164      if (element.hasReasonNotPerformed()) {
20165        for (CodeableConcept e : element.getReasonNotPerformed())
20166          composeCodeableConcept("reasonNotPerformed", e);
20167      }
20168      if (element.hasBodySite()) {
20169        for (CodeableConcept e : element.getBodySite())
20170          composeCodeableConcept("bodySite", e);
20171      }
20172      if (element.hasReason()) {
20173        composeType("reason", element.getReason());
20174      }
20175      if (element.hasPerformer()) {
20176        for (Procedure.ProcedurePerformerComponent e : element.getPerformer())
20177          composeProcedureProcedurePerformerComponent("performer", e);
20178      }
20179      if (element.hasPerformed()) {
20180        composeType("performed", element.getPerformed());
20181      }
20182      if (element.hasEncounter()) {
20183        composeReference("encounter", element.getEncounter());
20184      }
20185      if (element.hasLocation()) {
20186        composeReference("location", element.getLocation());
20187      }
20188      if (element.hasOutcome()) {
20189        composeCodeableConcept("outcome", element.getOutcome());
20190      }
20191      if (element.hasReport()) {
20192        for (Reference e : element.getReport())
20193          composeReference("report", e);
20194      }
20195      if (element.hasComplication()) {
20196        for (CodeableConcept e : element.getComplication())
20197          composeCodeableConcept("complication", e);
20198      }
20199      if (element.hasFollowUp()) {
20200        for (CodeableConcept e : element.getFollowUp())
20201          composeCodeableConcept("followUp", e);
20202      }
20203      if (element.hasRequest()) {
20204        composeReference("request", element.getRequest());
20205      }
20206      if (element.hasNotes()) {
20207        for (Annotation e : element.getNotes())
20208          composeAnnotation("notes", e);
20209      }
20210      if (element.hasFocalDevice()) {
20211        for (Procedure.ProcedureFocalDeviceComponent e : element.getFocalDevice())
20212          composeProcedureProcedureFocalDeviceComponent("focalDevice", e);
20213      }
20214      if (element.hasUsed()) {
20215        for (Reference e : element.getUsed())
20216          composeReference("used", e);
20217      }
20218      composeElementClose(element);
20219      xml.exit(FHIR_NS, name);
20220    }
20221  }
20222
20223  protected void composeProcedureProcedurePerformerComponent(String name, Procedure.ProcedurePerformerComponent element)
20224      throws IOException {
20225    if (element != null) {
20226      composeElementAttributes(element);
20227      xml.enter(FHIR_NS, name);
20228      composeBackboneElements(element);
20229      if (element.hasActor()) {
20230        composeReference("actor", element.getActor());
20231      }
20232      if (element.hasRole()) {
20233        composeCodeableConcept("role", element.getRole());
20234      }
20235      composeElementClose(element);
20236      xml.exit(FHIR_NS, name);
20237    }
20238  }
20239
20240  protected void composeProcedureProcedureFocalDeviceComponent(String name,
20241      Procedure.ProcedureFocalDeviceComponent element) throws IOException {
20242    if (element != null) {
20243      composeElementAttributes(element);
20244      xml.enter(FHIR_NS, name);
20245      composeBackboneElements(element);
20246      if (element.hasAction()) {
20247        composeCodeableConcept("action", element.getAction());
20248      }
20249      if (element.hasManipulated()) {
20250        composeReference("manipulated", element.getManipulated());
20251      }
20252      composeElementClose(element);
20253      xml.exit(FHIR_NS, name);
20254    }
20255  }
20256
20257  protected void composeProcedureRequest(String name, ProcedureRequest element) throws IOException {
20258    if (element != null) {
20259      composeDomainResourceAttributes(element);
20260      xml.enter(FHIR_NS, name);
20261      composeDomainResourceElements(element);
20262      if (element.hasIdentifier()) {
20263        for (Identifier e : element.getIdentifier())
20264          composeIdentifier("identifier", e);
20265      }
20266      if (element.hasSubject()) {
20267        composeReference("subject", element.getSubject());
20268      }
20269      if (element.hasCode()) {
20270        composeCodeableConcept("code", element.getCode());
20271      }
20272      if (element.hasBodySite()) {
20273        for (CodeableConcept e : element.getBodySite())
20274          composeCodeableConcept("bodySite", e);
20275      }
20276      if (element.hasReason()) {
20277        composeType("reason", element.getReason());
20278      }
20279      if (element.hasScheduled()) {
20280        composeType("scheduled", element.getScheduled());
20281      }
20282      if (element.hasEncounter()) {
20283        composeReference("encounter", element.getEncounter());
20284      }
20285      if (element.hasPerformer()) {
20286        composeReference("performer", element.getPerformer());
20287      }
20288      if (element.hasStatusElement())
20289        composeEnumeration("status", element.getStatusElement(),
20290            new ProcedureRequest.ProcedureRequestStatusEnumFactory());
20291      if (element.hasNotes()) {
20292        for (Annotation e : element.getNotes())
20293          composeAnnotation("notes", e);
20294      }
20295      if (element.hasAsNeeded()) {
20296        composeType("asNeeded", element.getAsNeeded());
20297      }
20298      if (element.hasOrderedOnElement()) {
20299        composeDateTime("orderedOn", element.getOrderedOnElement());
20300      }
20301      if (element.hasOrderer()) {
20302        composeReference("orderer", element.getOrderer());
20303      }
20304      if (element.hasPriorityElement())
20305        composeEnumeration("priority", element.getPriorityElement(),
20306            new ProcedureRequest.ProcedureRequestPriorityEnumFactory());
20307      composeElementClose(element);
20308      xml.exit(FHIR_NS, name);
20309    }
20310  }
20311
20312  protected void composeProcessRequest(String name, ProcessRequest element) throws IOException {
20313    if (element != null) {
20314      composeDomainResourceAttributes(element);
20315      xml.enter(FHIR_NS, name);
20316      composeDomainResourceElements(element);
20317      if (element.hasActionElement())
20318        composeEnumeration("action", element.getActionElement(), new ProcessRequest.ActionListEnumFactory());
20319      if (element.hasIdentifier()) {
20320        for (Identifier e : element.getIdentifier())
20321          composeIdentifier("identifier", e);
20322      }
20323      if (element.hasRuleset()) {
20324        composeCoding("ruleset", element.getRuleset());
20325      }
20326      if (element.hasOriginalRuleset()) {
20327        composeCoding("originalRuleset", element.getOriginalRuleset());
20328      }
20329      if (element.hasCreatedElement()) {
20330        composeDateTime("created", element.getCreatedElement());
20331      }
20332      if (element.hasTarget()) {
20333        composeReference("target", element.getTarget());
20334      }
20335      if (element.hasProvider()) {
20336        composeReference("provider", element.getProvider());
20337      }
20338      if (element.hasOrganization()) {
20339        composeReference("organization", element.getOrganization());
20340      }
20341      if (element.hasRequest()) {
20342        composeReference("request", element.getRequest());
20343      }
20344      if (element.hasResponse()) {
20345        composeReference("response", element.getResponse());
20346      }
20347      if (element.hasNullifyElement()) {
20348        composeBoolean("nullify", element.getNullifyElement());
20349      }
20350      if (element.hasReferenceElement()) {
20351        composeString("reference", element.getReferenceElement());
20352      }
20353      if (element.hasItem()) {
20354        for (ProcessRequest.ItemsComponent e : element.getItem())
20355          composeProcessRequestItemsComponent("item", e);
20356      }
20357      if (element.hasInclude()) {
20358        for (StringType e : element.getInclude())
20359          composeString("include", e);
20360      }
20361      if (element.hasExclude()) {
20362        for (StringType e : element.getExclude())
20363          composeString("exclude", e);
20364      }
20365      if (element.hasPeriod()) {
20366        composePeriod("period", element.getPeriod());
20367      }
20368      composeElementClose(element);
20369      xml.exit(FHIR_NS, name);
20370    }
20371  }
20372
20373  protected void composeProcessRequestItemsComponent(String name, ProcessRequest.ItemsComponent element)
20374      throws IOException {
20375    if (element != null) {
20376      composeElementAttributes(element);
20377      xml.enter(FHIR_NS, name);
20378      composeBackboneElements(element);
20379      if (element.hasSequenceLinkIdElement()) {
20380        composeInteger("sequenceLinkId", element.getSequenceLinkIdElement());
20381      }
20382      composeElementClose(element);
20383      xml.exit(FHIR_NS, name);
20384    }
20385  }
20386
20387  protected void composeProcessResponse(String name, ProcessResponse element) throws IOException {
20388    if (element != null) {
20389      composeDomainResourceAttributes(element);
20390      xml.enter(FHIR_NS, name);
20391      composeDomainResourceElements(element);
20392      if (element.hasIdentifier()) {
20393        for (Identifier e : element.getIdentifier())
20394          composeIdentifier("identifier", e);
20395      }
20396      if (element.hasRequest()) {
20397        composeReference("request", element.getRequest());
20398      }
20399      if (element.hasOutcome()) {
20400        composeCoding("outcome", element.getOutcome());
20401      }
20402      if (element.hasDispositionElement()) {
20403        composeString("disposition", element.getDispositionElement());
20404      }
20405      if (element.hasRuleset()) {
20406        composeCoding("ruleset", element.getRuleset());
20407      }
20408      if (element.hasOriginalRuleset()) {
20409        composeCoding("originalRuleset", element.getOriginalRuleset());
20410      }
20411      if (element.hasCreatedElement()) {
20412        composeDateTime("created", element.getCreatedElement());
20413      }
20414      if (element.hasOrganization()) {
20415        composeReference("organization", element.getOrganization());
20416      }
20417      if (element.hasRequestProvider()) {
20418        composeReference("requestProvider", element.getRequestProvider());
20419      }
20420      if (element.hasRequestOrganization()) {
20421        composeReference("requestOrganization", element.getRequestOrganization());
20422      }
20423      if (element.hasForm()) {
20424        composeCoding("form", element.getForm());
20425      }
20426      if (element.hasNotes()) {
20427        for (ProcessResponse.ProcessResponseNotesComponent e : element.getNotes())
20428          composeProcessResponseProcessResponseNotesComponent("notes", e);
20429      }
20430      if (element.hasError()) {
20431        for (Coding e : element.getError())
20432          composeCoding("error", e);
20433      }
20434      composeElementClose(element);
20435      xml.exit(FHIR_NS, name);
20436    }
20437  }
20438
20439  protected void composeProcessResponseProcessResponseNotesComponent(String name,
20440      ProcessResponse.ProcessResponseNotesComponent element) throws IOException {
20441    if (element != null) {
20442      composeElementAttributes(element);
20443      xml.enter(FHIR_NS, name);
20444      composeBackboneElements(element);
20445      if (element.hasType()) {
20446        composeCoding("type", element.getType());
20447      }
20448      if (element.hasTextElement()) {
20449        composeString("text", element.getTextElement());
20450      }
20451      composeElementClose(element);
20452      xml.exit(FHIR_NS, name);
20453    }
20454  }
20455
20456  protected void composeProvenance(String name, Provenance element) throws IOException {
20457    if (element != null) {
20458      composeDomainResourceAttributes(element);
20459      xml.enter(FHIR_NS, name);
20460      composeDomainResourceElements(element);
20461      if (element.hasTarget()) {
20462        for (Reference e : element.getTarget())
20463          composeReference("target", e);
20464      }
20465      if (element.hasPeriod()) {
20466        composePeriod("period", element.getPeriod());
20467      }
20468      if (element.hasRecordedElement()) {
20469        composeInstant("recorded", element.getRecordedElement());
20470      }
20471      if (element.hasReason()) {
20472        for (CodeableConcept e : element.getReason())
20473          composeCodeableConcept("reason", e);
20474      }
20475      if (element.hasActivity()) {
20476        composeCodeableConcept("activity", element.getActivity());
20477      }
20478      if (element.hasLocation()) {
20479        composeReference("location", element.getLocation());
20480      }
20481      if (element.hasPolicy()) {
20482        for (UriType e : element.getPolicy())
20483          composeUri("policy", e);
20484      }
20485      if (element.hasAgent()) {
20486        for (Provenance.ProvenanceAgentComponent e : element.getAgent())
20487          composeProvenanceProvenanceAgentComponent("agent", e);
20488      }
20489      if (element.hasEntity()) {
20490        for (Provenance.ProvenanceEntityComponent e : element.getEntity())
20491          composeProvenanceProvenanceEntityComponent("entity", e);
20492      }
20493      if (element.hasSignature()) {
20494        for (Signature e : element.getSignature())
20495          composeSignature("signature", e);
20496      }
20497      composeElementClose(element);
20498      xml.exit(FHIR_NS, name);
20499    }
20500  }
20501
20502  protected void composeProvenanceProvenanceAgentComponent(String name, Provenance.ProvenanceAgentComponent element)
20503      throws IOException {
20504    if (element != null) {
20505      composeElementAttributes(element);
20506      xml.enter(FHIR_NS, name);
20507      composeBackboneElements(element);
20508      if (element.hasRole()) {
20509        composeCoding("role", element.getRole());
20510      }
20511      if (element.hasActor()) {
20512        composeReference("actor", element.getActor());
20513      }
20514      if (element.hasUserId()) {
20515        composeIdentifier("userId", element.getUserId());
20516      }
20517      if (element.hasRelatedAgent()) {
20518        for (Provenance.ProvenanceAgentRelatedAgentComponent e : element.getRelatedAgent())
20519          composeProvenanceProvenanceAgentRelatedAgentComponent("relatedAgent", e);
20520      }
20521      composeElementClose(element);
20522      xml.exit(FHIR_NS, name);
20523    }
20524  }
20525
20526  protected void composeProvenanceProvenanceAgentRelatedAgentComponent(String name,
20527      Provenance.ProvenanceAgentRelatedAgentComponent element) throws IOException {
20528    if (element != null) {
20529      composeElementAttributes(element);
20530      xml.enter(FHIR_NS, name);
20531      composeBackboneElements(element);
20532      if (element.hasType()) {
20533        composeCodeableConcept("type", element.getType());
20534      }
20535      if (element.hasTargetElement()) {
20536        composeUri("target", element.getTargetElement());
20537      }
20538      composeElementClose(element);
20539      xml.exit(FHIR_NS, name);
20540    }
20541  }
20542
20543  protected void composeProvenanceProvenanceEntityComponent(String name, Provenance.ProvenanceEntityComponent element)
20544      throws IOException {
20545    if (element != null) {
20546      composeElementAttributes(element);
20547      xml.enter(FHIR_NS, name);
20548      composeBackboneElements(element);
20549      if (element.hasRoleElement())
20550        composeEnumeration("role", element.getRoleElement(), new Provenance.ProvenanceEntityRoleEnumFactory());
20551      if (element.hasType()) {
20552        composeCoding("type", element.getType());
20553      }
20554      if (element.hasReferenceElement()) {
20555        composeUri("reference", element.getReferenceElement());
20556      }
20557      if (element.hasDisplayElement()) {
20558        composeString("display", element.getDisplayElement());
20559      }
20560      if (element.hasAgent()) {
20561        composeProvenanceProvenanceAgentComponent("agent", element.getAgent());
20562      }
20563      composeElementClose(element);
20564      xml.exit(FHIR_NS, name);
20565    }
20566  }
20567
20568  protected void composeQuestionnaire(String name, Questionnaire element) throws IOException {
20569    if (element != null) {
20570      composeDomainResourceAttributes(element);
20571      xml.enter(FHIR_NS, name);
20572      composeDomainResourceElements(element);
20573      if (element.hasIdentifier()) {
20574        for (Identifier e : element.getIdentifier())
20575          composeIdentifier("identifier", e);
20576      }
20577      if (element.hasVersionElement()) {
20578        composeString("version", element.getVersionElement());
20579      }
20580      if (element.hasStatusElement())
20581        composeEnumeration("status", element.getStatusElement(), new Questionnaire.QuestionnaireStatusEnumFactory());
20582      if (element.hasDateElement()) {
20583        composeDateTime("date", element.getDateElement());
20584      }
20585      if (element.hasPublisherElement()) {
20586        composeString("publisher", element.getPublisherElement());
20587      }
20588      if (element.hasTelecom()) {
20589        for (ContactPoint e : element.getTelecom())
20590          composeContactPoint("telecom", e);
20591      }
20592      if (element.hasSubjectType()) {
20593        for (CodeType e : element.getSubjectType())
20594          composeCode("subjectType", e);
20595      }
20596      if (element.hasGroup()) {
20597        composeQuestionnaireGroupComponent("group", element.getGroup());
20598      }
20599      composeElementClose(element);
20600      xml.exit(FHIR_NS, name);
20601    }
20602  }
20603
20604  protected void composeQuestionnaireGroupComponent(String name, Questionnaire.GroupComponent element)
20605      throws IOException {
20606    if (element != null) {
20607      composeElementAttributes(element);
20608      xml.enter(FHIR_NS, name);
20609      composeBackboneElements(element);
20610      if (element.hasLinkIdElement()) {
20611        composeString("linkId", element.getLinkIdElement());
20612      }
20613      if (element.hasTitleElement()) {
20614        composeString("title", element.getTitleElement());
20615      }
20616      if (element.hasConcept()) {
20617        for (Coding e : element.getConcept())
20618          composeCoding("concept", e);
20619      }
20620      if (element.hasTextElement()) {
20621        composeString("text", element.getTextElement());
20622      }
20623      if (element.hasRequiredElement()) {
20624        composeBoolean("required", element.getRequiredElement());
20625      }
20626      if (element.hasRepeatsElement()) {
20627        composeBoolean("repeats", element.getRepeatsElement());
20628      }
20629      if (element.hasGroup()) {
20630        for (Questionnaire.GroupComponent e : element.getGroup())
20631          composeQuestionnaireGroupComponent("group", e);
20632      }
20633      if (element.hasQuestion()) {
20634        for (Questionnaire.QuestionComponent e : element.getQuestion())
20635          composeQuestionnaireQuestionComponent("question", e);
20636      }
20637      composeElementClose(element);
20638      xml.exit(FHIR_NS, name);
20639    }
20640  }
20641
20642  protected void composeQuestionnaireQuestionComponent(String name, Questionnaire.QuestionComponent element)
20643      throws IOException {
20644    if (element != null) {
20645      composeElementAttributes(element);
20646      xml.enter(FHIR_NS, name);
20647      composeBackboneElements(element);
20648      if (element.hasLinkIdElement()) {
20649        composeString("linkId", element.getLinkIdElement());
20650      }
20651      if (element.hasConcept()) {
20652        for (Coding e : element.getConcept())
20653          composeCoding("concept", e);
20654      }
20655      if (element.hasTextElement()) {
20656        composeString("text", element.getTextElement());
20657      }
20658      if (element.hasTypeElement())
20659        composeEnumeration("type", element.getTypeElement(), new Questionnaire.AnswerFormatEnumFactory());
20660      if (element.hasRequiredElement()) {
20661        composeBoolean("required", element.getRequiredElement());
20662      }
20663      if (element.hasRepeatsElement()) {
20664        composeBoolean("repeats", element.getRepeatsElement());
20665      }
20666      if (element.hasOptions()) {
20667        composeReference("options", element.getOptions());
20668      }
20669      if (element.hasOption()) {
20670        for (Coding e : element.getOption())
20671          composeCoding("option", e);
20672      }
20673      if (element.hasGroup()) {
20674        for (Questionnaire.GroupComponent e : element.getGroup())
20675          composeQuestionnaireGroupComponent("group", e);
20676      }
20677      composeElementClose(element);
20678      xml.exit(FHIR_NS, name);
20679    }
20680  }
20681
20682  protected void composeQuestionnaireResponse(String name, QuestionnaireResponse element) throws IOException {
20683    if (element != null) {
20684      composeDomainResourceAttributes(element);
20685      xml.enter(FHIR_NS, name);
20686      composeDomainResourceElements(element);
20687      if (element.hasIdentifier()) {
20688        composeIdentifier("identifier", element.getIdentifier());
20689      }
20690      if (element.hasQuestionnaire()) {
20691        composeReference("questionnaire", element.getQuestionnaire());
20692      }
20693      if (element.hasStatusElement())
20694        composeEnumeration("status", element.getStatusElement(),
20695            new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory());
20696      if (element.hasSubject()) {
20697        composeReference("subject", element.getSubject());
20698      }
20699      if (element.hasAuthor()) {
20700        composeReference("author", element.getAuthor());
20701      }
20702      if (element.hasAuthoredElement()) {
20703        composeDateTime("authored", element.getAuthoredElement());
20704      }
20705      if (element.hasSource()) {
20706        composeReference("source", element.getSource());
20707      }
20708      if (element.hasEncounter()) {
20709        composeReference("encounter", element.getEncounter());
20710      }
20711      if (element.hasGroup()) {
20712        composeQuestionnaireResponseGroupComponent("group", element.getGroup());
20713      }
20714      composeElementClose(element);
20715      xml.exit(FHIR_NS, name);
20716    }
20717  }
20718
20719  protected void composeQuestionnaireResponseGroupComponent(String name, QuestionnaireResponse.GroupComponent element)
20720      throws IOException {
20721    if (element != null) {
20722      composeElementAttributes(element);
20723      xml.enter(FHIR_NS, name);
20724      composeBackboneElements(element);
20725      if (element.hasLinkIdElement()) {
20726        composeString("linkId", element.getLinkIdElement());
20727      }
20728      if (element.hasTitleElement()) {
20729        composeString("title", element.getTitleElement());
20730      }
20731      if (element.hasTextElement()) {
20732        composeString("text", element.getTextElement());
20733      }
20734      if (element.hasSubject()) {
20735        composeReference("subject", element.getSubject());
20736      }
20737      if (element.hasGroup()) {
20738        for (QuestionnaireResponse.GroupComponent e : element.getGroup())
20739          composeQuestionnaireResponseGroupComponent("group", e);
20740      }
20741      if (element.hasQuestion()) {
20742        for (QuestionnaireResponse.QuestionComponent e : element.getQuestion())
20743          composeQuestionnaireResponseQuestionComponent("question", e);
20744      }
20745      composeElementClose(element);
20746      xml.exit(FHIR_NS, name);
20747    }
20748  }
20749
20750  protected void composeQuestionnaireResponseQuestionComponent(String name,
20751      QuestionnaireResponse.QuestionComponent element) throws IOException {
20752    if (element != null) {
20753      composeElementAttributes(element);
20754      xml.enter(FHIR_NS, name);
20755      composeBackboneElements(element);
20756      if (element.hasLinkIdElement()) {
20757        composeString("linkId", element.getLinkIdElement());
20758      }
20759      if (element.hasTextElement()) {
20760        composeString("text", element.getTextElement());
20761      }
20762      if (element.hasAnswer()) {
20763        for (QuestionnaireResponse.QuestionAnswerComponent e : element.getAnswer())
20764          composeQuestionnaireResponseQuestionAnswerComponent("answer", e);
20765      }
20766      composeElementClose(element);
20767      xml.exit(FHIR_NS, name);
20768    }
20769  }
20770
20771  protected void composeQuestionnaireResponseQuestionAnswerComponent(String name,
20772      QuestionnaireResponse.QuestionAnswerComponent element) throws IOException {
20773    if (element != null) {
20774      composeElementAttributes(element);
20775      xml.enter(FHIR_NS, name);
20776      composeBackboneElements(element);
20777      if (element.hasValue()) {
20778        composeType("value", element.getValue());
20779      }
20780      if (element.hasGroup()) {
20781        for (QuestionnaireResponse.GroupComponent e : element.getGroup())
20782          composeQuestionnaireResponseGroupComponent("group", e);
20783      }
20784      composeElementClose(element);
20785      xml.exit(FHIR_NS, name);
20786    }
20787  }
20788
20789  protected void composeReferralRequest(String name, ReferralRequest element) throws IOException {
20790    if (element != null) {
20791      composeDomainResourceAttributes(element);
20792      xml.enter(FHIR_NS, name);
20793      composeDomainResourceElements(element);
20794      if (element.hasStatusElement())
20795        composeEnumeration("status", element.getStatusElement(), new ReferralRequest.ReferralStatusEnumFactory());
20796      if (element.hasIdentifier()) {
20797        for (Identifier e : element.getIdentifier())
20798          composeIdentifier("identifier", e);
20799      }
20800      if (element.hasDateElement()) {
20801        composeDateTime("date", element.getDateElement());
20802      }
20803      if (element.hasType()) {
20804        composeCodeableConcept("type", element.getType());
20805      }
20806      if (element.hasSpecialty()) {
20807        composeCodeableConcept("specialty", element.getSpecialty());
20808      }
20809      if (element.hasPriority()) {
20810        composeCodeableConcept("priority", element.getPriority());
20811      }
20812      if (element.hasPatient()) {
20813        composeReference("patient", element.getPatient());
20814      }
20815      if (element.hasRequester()) {
20816        composeReference("requester", element.getRequester());
20817      }
20818      if (element.hasRecipient()) {
20819        for (Reference e : element.getRecipient())
20820          composeReference("recipient", e);
20821      }
20822      if (element.hasEncounter()) {
20823        composeReference("encounter", element.getEncounter());
20824      }
20825      if (element.hasDateSentElement()) {
20826        composeDateTime("dateSent", element.getDateSentElement());
20827      }
20828      if (element.hasReason()) {
20829        composeCodeableConcept("reason", element.getReason());
20830      }
20831      if (element.hasDescriptionElement()) {
20832        composeString("description", element.getDescriptionElement());
20833      }
20834      if (element.hasServiceRequested()) {
20835        for (CodeableConcept e : element.getServiceRequested())
20836          composeCodeableConcept("serviceRequested", e);
20837      }
20838      if (element.hasSupportingInformation()) {
20839        for (Reference e : element.getSupportingInformation())
20840          composeReference("supportingInformation", e);
20841      }
20842      if (element.hasFulfillmentTime()) {
20843        composePeriod("fulfillmentTime", element.getFulfillmentTime());
20844      }
20845      composeElementClose(element);
20846      xml.exit(FHIR_NS, name);
20847    }
20848  }
20849
20850  protected void composeRelatedPerson(String name, RelatedPerson element) throws IOException {
20851    if (element != null) {
20852      composeDomainResourceAttributes(element);
20853      xml.enter(FHIR_NS, name);
20854      composeDomainResourceElements(element);
20855      if (element.hasIdentifier()) {
20856        for (Identifier e : element.getIdentifier())
20857          composeIdentifier("identifier", e);
20858      }
20859      if (element.hasPatient()) {
20860        composeReference("patient", element.getPatient());
20861      }
20862      if (element.hasRelationship()) {
20863        composeCodeableConcept("relationship", element.getRelationship());
20864      }
20865      if (element.hasName()) {
20866        composeHumanName("name", element.getName());
20867      }
20868      if (element.hasTelecom()) {
20869        for (ContactPoint e : element.getTelecom())
20870          composeContactPoint("telecom", e);
20871      }
20872      if (element.hasGenderElement())
20873        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
20874      if (element.hasBirthDateElement()) {
20875        composeDate("birthDate", element.getBirthDateElement());
20876      }
20877      if (element.hasAddress()) {
20878        for (Address e : element.getAddress())
20879          composeAddress("address", e);
20880      }
20881      if (element.hasPhoto()) {
20882        for (Attachment e : element.getPhoto())
20883          composeAttachment("photo", e);
20884      }
20885      if (element.hasPeriod()) {
20886        composePeriod("period", element.getPeriod());
20887      }
20888      composeElementClose(element);
20889      xml.exit(FHIR_NS, name);
20890    }
20891  }
20892
20893  protected void composeRiskAssessment(String name, RiskAssessment element) throws IOException {
20894    if (element != null) {
20895      composeDomainResourceAttributes(element);
20896      xml.enter(FHIR_NS, name);
20897      composeDomainResourceElements(element);
20898      if (element.hasSubject()) {
20899        composeReference("subject", element.getSubject());
20900      }
20901      if (element.hasDateElement()) {
20902        composeDateTime("date", element.getDateElement());
20903      }
20904      if (element.hasCondition()) {
20905        composeReference("condition", element.getCondition());
20906      }
20907      if (element.hasEncounter()) {
20908        composeReference("encounter", element.getEncounter());
20909      }
20910      if (element.hasPerformer()) {
20911        composeReference("performer", element.getPerformer());
20912      }
20913      if (element.hasIdentifier()) {
20914        composeIdentifier("identifier", element.getIdentifier());
20915      }
20916      if (element.hasMethod()) {
20917        composeCodeableConcept("method", element.getMethod());
20918      }
20919      if (element.hasBasis()) {
20920        for (Reference e : element.getBasis())
20921          composeReference("basis", e);
20922      }
20923      if (element.hasPrediction()) {
20924        for (RiskAssessment.RiskAssessmentPredictionComponent e : element.getPrediction())
20925          composeRiskAssessmentRiskAssessmentPredictionComponent("prediction", e);
20926      }
20927      if (element.hasMitigationElement()) {
20928        composeString("mitigation", element.getMitigationElement());
20929      }
20930      composeElementClose(element);
20931      xml.exit(FHIR_NS, name);
20932    }
20933  }
20934
20935  protected void composeRiskAssessmentRiskAssessmentPredictionComponent(String name,
20936      RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
20937    if (element != null) {
20938      composeElementAttributes(element);
20939      xml.enter(FHIR_NS, name);
20940      composeBackboneElements(element);
20941      if (element.hasOutcome()) {
20942        composeCodeableConcept("outcome", element.getOutcome());
20943      }
20944      if (element.hasProbability()) {
20945        composeType("probability", element.getProbability());
20946      }
20947      if (element.hasRelativeRiskElement()) {
20948        composeDecimal("relativeRisk", element.getRelativeRiskElement());
20949      }
20950      if (element.hasWhen()) {
20951        composeType("when", element.getWhen());
20952      }
20953      if (element.hasRationaleElement()) {
20954        composeString("rationale", element.getRationaleElement());
20955      }
20956      composeElementClose(element);
20957      xml.exit(FHIR_NS, name);
20958    }
20959  }
20960
20961  protected void composeSchedule(String name, Schedule element) throws IOException {
20962    if (element != null) {
20963      composeDomainResourceAttributes(element);
20964      xml.enter(FHIR_NS, name);
20965      composeDomainResourceElements(element);
20966      if (element.hasIdentifier()) {
20967        for (Identifier e : element.getIdentifier())
20968          composeIdentifier("identifier", e);
20969      }
20970      if (element.hasType()) {
20971        for (CodeableConcept e : element.getType())
20972          composeCodeableConcept("type", e);
20973      }
20974      if (element.hasActor()) {
20975        composeReference("actor", element.getActor());
20976      }
20977      if (element.hasPlanningHorizon()) {
20978        composePeriod("planningHorizon", element.getPlanningHorizon());
20979      }
20980      if (element.hasCommentElement()) {
20981        composeString("comment", element.getCommentElement());
20982      }
20983      composeElementClose(element);
20984      xml.exit(FHIR_NS, name);
20985    }
20986  }
20987
20988  protected void composeSearchParameter(String name, SearchParameter element) throws IOException {
20989    if (element != null) {
20990      composeDomainResourceAttributes(element);
20991      xml.enter(FHIR_NS, name);
20992      composeDomainResourceElements(element);
20993      if (element.hasUrlElement()) {
20994        composeUri("url", element.getUrlElement());
20995      }
20996      if (element.hasNameElement()) {
20997        composeString("name", element.getNameElement());
20998      }
20999      if (element.hasStatusElement())
21000        composeEnumeration("status", element.getStatusElement(),
21001            new Enumerations.ConformanceResourceStatusEnumFactory());
21002      if (element.hasExperimentalElement()) {
21003        composeBoolean("experimental", element.getExperimentalElement());
21004      }
21005      if (element.hasPublisherElement()) {
21006        composeString("publisher", element.getPublisherElement());
21007      }
21008      if (element.hasContact()) {
21009        for (SearchParameter.SearchParameterContactComponent e : element.getContact())
21010          composeSearchParameterSearchParameterContactComponent("contact", e);
21011      }
21012      if (element.hasDateElement()) {
21013        composeDateTime("date", element.getDateElement());
21014      }
21015      if (element.hasRequirementsElement()) {
21016        composeString("requirements", element.getRequirementsElement());
21017      }
21018      if (element.hasCodeElement()) {
21019        composeCode("code", element.getCodeElement());
21020      }
21021      if (element.hasBaseElement()) {
21022        composeCode("base", element.getBaseElement());
21023      }
21024      if (element.hasTypeElement())
21025        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
21026      if (element.hasDescriptionElement()) {
21027        composeString("description", element.getDescriptionElement());
21028      }
21029      if (element.hasXpathElement()) {
21030        composeString("xpath", element.getXpathElement());
21031      }
21032      if (element.hasXpathUsageElement())
21033        composeEnumeration("xpathUsage", element.getXpathUsageElement(),
21034            new SearchParameter.XPathUsageTypeEnumFactory());
21035      if (element.hasTarget()) {
21036        for (CodeType e : element.getTarget())
21037          composeCode("target", e);
21038      }
21039      composeElementClose(element);
21040      xml.exit(FHIR_NS, name);
21041    }
21042  }
21043
21044  protected void composeSearchParameterSearchParameterContactComponent(String name,
21045      SearchParameter.SearchParameterContactComponent element) throws IOException {
21046    if (element != null) {
21047      composeElementAttributes(element);
21048      xml.enter(FHIR_NS, name);
21049      composeBackboneElements(element);
21050      if (element.hasNameElement()) {
21051        composeString("name", element.getNameElement());
21052      }
21053      if (element.hasTelecom()) {
21054        for (ContactPoint e : element.getTelecom())
21055          composeContactPoint("telecom", e);
21056      }
21057      composeElementClose(element);
21058      xml.exit(FHIR_NS, name);
21059    }
21060  }
21061
21062  protected void composeSlot(String name, Slot element) throws IOException {
21063    if (element != null) {
21064      composeDomainResourceAttributes(element);
21065      xml.enter(FHIR_NS, name);
21066      composeDomainResourceElements(element);
21067      if (element.hasIdentifier()) {
21068        for (Identifier e : element.getIdentifier())
21069          composeIdentifier("identifier", e);
21070      }
21071      if (element.hasType()) {
21072        composeCodeableConcept("type", element.getType());
21073      }
21074      if (element.hasSchedule()) {
21075        composeReference("schedule", element.getSchedule());
21076      }
21077      if (element.hasFreeBusyTypeElement())
21078        composeEnumeration("freeBusyType", element.getFreeBusyTypeElement(), new Slot.SlotStatusEnumFactory());
21079      if (element.hasStartElement()) {
21080        composeInstant("start", element.getStartElement());
21081      }
21082      if (element.hasEndElement()) {
21083        composeInstant("end", element.getEndElement());
21084      }
21085      if (element.hasOverbookedElement()) {
21086        composeBoolean("overbooked", element.getOverbookedElement());
21087      }
21088      if (element.hasCommentElement()) {
21089        composeString("comment", element.getCommentElement());
21090      }
21091      composeElementClose(element);
21092      xml.exit(FHIR_NS, name);
21093    }
21094  }
21095
21096  protected void composeSpecimen(String name, Specimen element) throws IOException {
21097    if (element != null) {
21098      composeDomainResourceAttributes(element);
21099      xml.enter(FHIR_NS, name);
21100      composeDomainResourceElements(element);
21101      if (element.hasIdentifier()) {
21102        for (Identifier e : element.getIdentifier())
21103          composeIdentifier("identifier", e);
21104      }
21105      if (element.hasStatusElement())
21106        composeEnumeration("status", element.getStatusElement(), new Specimen.SpecimenStatusEnumFactory());
21107      if (element.hasType()) {
21108        composeCodeableConcept("type", element.getType());
21109      }
21110      if (element.hasParent()) {
21111        for (Reference e : element.getParent())
21112          composeReference("parent", e);
21113      }
21114      if (element.hasSubject()) {
21115        composeReference("subject", element.getSubject());
21116      }
21117      if (element.hasAccessionIdentifier()) {
21118        composeIdentifier("accessionIdentifier", element.getAccessionIdentifier());
21119      }
21120      if (element.hasReceivedTimeElement()) {
21121        composeDateTime("receivedTime", element.getReceivedTimeElement());
21122      }
21123      if (element.hasCollection()) {
21124        composeSpecimenSpecimenCollectionComponent("collection", element.getCollection());
21125      }
21126      if (element.hasTreatment()) {
21127        for (Specimen.SpecimenTreatmentComponent e : element.getTreatment())
21128          composeSpecimenSpecimenTreatmentComponent("treatment", e);
21129      }
21130      if (element.hasContainer()) {
21131        for (Specimen.SpecimenContainerComponent e : element.getContainer())
21132          composeSpecimenSpecimenContainerComponent("container", e);
21133      }
21134      composeElementClose(element);
21135      xml.exit(FHIR_NS, name);
21136    }
21137  }
21138
21139  protected void composeSpecimenSpecimenCollectionComponent(String name, Specimen.SpecimenCollectionComponent element)
21140      throws IOException {
21141    if (element != null) {
21142      composeElementAttributes(element);
21143      xml.enter(FHIR_NS, name);
21144      composeBackboneElements(element);
21145      if (element.hasCollector()) {
21146        composeReference("collector", element.getCollector());
21147      }
21148      if (element.hasComment()) {
21149        for (StringType e : element.getComment())
21150          composeString("comment", e);
21151      }
21152      if (element.hasCollected()) {
21153        composeType("collected", element.getCollected());
21154      }
21155      if (element.hasQuantity()) {
21156        composeSimpleQuantity("quantity", element.getQuantity());
21157      }
21158      if (element.hasMethod()) {
21159        composeCodeableConcept("method", element.getMethod());
21160      }
21161      if (element.hasBodySite()) {
21162        composeCodeableConcept("bodySite", element.getBodySite());
21163      }
21164      composeElementClose(element);
21165      xml.exit(FHIR_NS, name);
21166    }
21167  }
21168
21169  protected void composeSpecimenSpecimenTreatmentComponent(String name, Specimen.SpecimenTreatmentComponent element)
21170      throws IOException {
21171    if (element != null) {
21172      composeElementAttributes(element);
21173      xml.enter(FHIR_NS, name);
21174      composeBackboneElements(element);
21175      if (element.hasDescriptionElement()) {
21176        composeString("description", element.getDescriptionElement());
21177      }
21178      if (element.hasProcedure()) {
21179        composeCodeableConcept("procedure", element.getProcedure());
21180      }
21181      if (element.hasAdditive()) {
21182        for (Reference e : element.getAdditive())
21183          composeReference("additive", e);
21184      }
21185      composeElementClose(element);
21186      xml.exit(FHIR_NS, name);
21187    }
21188  }
21189
21190  protected void composeSpecimenSpecimenContainerComponent(String name, Specimen.SpecimenContainerComponent element)
21191      throws IOException {
21192    if (element != null) {
21193      composeElementAttributes(element);
21194      xml.enter(FHIR_NS, name);
21195      composeBackboneElements(element);
21196      if (element.hasIdentifier()) {
21197        for (Identifier e : element.getIdentifier())
21198          composeIdentifier("identifier", e);
21199      }
21200      if (element.hasDescriptionElement()) {
21201        composeString("description", element.getDescriptionElement());
21202      }
21203      if (element.hasType()) {
21204        composeCodeableConcept("type", element.getType());
21205      }
21206      if (element.hasCapacity()) {
21207        composeSimpleQuantity("capacity", element.getCapacity());
21208      }
21209      if (element.hasSpecimenQuantity()) {
21210        composeSimpleQuantity("specimenQuantity", element.getSpecimenQuantity());
21211      }
21212      if (element.hasAdditive()) {
21213        composeType("additive", element.getAdditive());
21214      }
21215      composeElementClose(element);
21216      xml.exit(FHIR_NS, name);
21217    }
21218  }
21219
21220  protected void composeStructureDefinition(String name, StructureDefinition element) throws IOException {
21221    if (element != null) {
21222      composeDomainResourceAttributes(element);
21223      xml.enter(FHIR_NS, name);
21224      composeDomainResourceElements(element);
21225      if (element.hasUrlElement()) {
21226        composeUri("url", element.getUrlElement());
21227      }
21228      if (element.hasIdentifier()) {
21229        for (Identifier e : element.getIdentifier())
21230          composeIdentifier("identifier", e);
21231      }
21232      if (element.hasVersionElement()) {
21233        composeString("version", element.getVersionElement());
21234      }
21235      if (element.hasNameElement()) {
21236        composeString("name", element.getNameElement());
21237      }
21238      if (element.hasDisplayElement()) {
21239        composeString("display", element.getDisplayElement());
21240      }
21241      if (element.hasStatusElement())
21242        composeEnumeration("status", element.getStatusElement(),
21243            new Enumerations.ConformanceResourceStatusEnumFactory());
21244      if (element.hasExperimentalElement()) {
21245        composeBoolean("experimental", element.getExperimentalElement());
21246      }
21247      if (element.hasPublisherElement()) {
21248        composeString("publisher", element.getPublisherElement());
21249      }
21250      if (element.hasContact()) {
21251        for (StructureDefinition.StructureDefinitionContactComponent e : element.getContact())
21252          composeStructureDefinitionStructureDefinitionContactComponent("contact", e);
21253      }
21254      if (element.hasDateElement()) {
21255        composeDateTime("date", element.getDateElement());
21256      }
21257      if (element.hasDescriptionElement()) {
21258        composeString("description", element.getDescriptionElement());
21259      }
21260      if (element.hasUseContext()) {
21261        for (CodeableConcept e : element.getUseContext())
21262          composeCodeableConcept("useContext", e);
21263      }
21264      if (element.hasRequirementsElement()) {
21265        composeString("requirements", element.getRequirementsElement());
21266      }
21267      if (element.hasCopyrightElement()) {
21268        composeString("copyright", element.getCopyrightElement());
21269      }
21270      if (element.hasCode()) {
21271        for (Coding e : element.getCode())
21272          composeCoding("code", e);
21273      }
21274      if (element.hasFhirVersionElement()) {
21275        composeId("fhirVersion", element.getFhirVersionElement());
21276      }
21277      if (element.hasMapping()) {
21278        for (StructureDefinition.StructureDefinitionMappingComponent e : element.getMapping())
21279          composeStructureDefinitionStructureDefinitionMappingComponent("mapping", e);
21280      }
21281      if (element.hasKindElement())
21282        composeEnumeration("kind", element.getKindElement(),
21283            new StructureDefinition.StructureDefinitionKindEnumFactory());
21284      if (element.hasConstrainedTypeElement()) {
21285        composeCode("constrainedType", element.getConstrainedTypeElement());
21286      }
21287      if (element.hasAbstractElement()) {
21288        composeBoolean("abstract", element.getAbstractElement());
21289      }
21290      if (element.hasContextTypeElement())
21291        composeEnumeration("contextType", element.getContextTypeElement(),
21292            new StructureDefinition.ExtensionContextEnumFactory());
21293      if (element.hasContext()) {
21294        for (StringType e : element.getContext())
21295          composeString("context", e);
21296      }
21297      if (element.hasBaseElement()) {
21298        composeUri("base", element.getBaseElement());
21299      }
21300      if (element.hasSnapshot()) {
21301        composeStructureDefinitionStructureDefinitionSnapshotComponent("snapshot", element.getSnapshot());
21302      }
21303      if (element.hasDifferential()) {
21304        composeStructureDefinitionStructureDefinitionDifferentialComponent("differential", element.getDifferential());
21305      }
21306      composeElementClose(element);
21307      xml.exit(FHIR_NS, name);
21308    }
21309  }
21310
21311  protected void composeStructureDefinitionStructureDefinitionContactComponent(String name,
21312      StructureDefinition.StructureDefinitionContactComponent element) throws IOException {
21313    if (element != null) {
21314      composeElementAttributes(element);
21315      xml.enter(FHIR_NS, name);
21316      composeBackboneElements(element);
21317      if (element.hasNameElement()) {
21318        composeString("name", element.getNameElement());
21319      }
21320      if (element.hasTelecom()) {
21321        for (ContactPoint e : element.getTelecom())
21322          composeContactPoint("telecom", e);
21323      }
21324      composeElementClose(element);
21325      xml.exit(FHIR_NS, name);
21326    }
21327  }
21328
21329  protected void composeStructureDefinitionStructureDefinitionMappingComponent(String name,
21330      StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
21331    if (element != null) {
21332      composeElementAttributes(element);
21333      xml.enter(FHIR_NS, name);
21334      composeBackboneElements(element);
21335      if (element.hasIdentityElement()) {
21336        composeId("identity", element.getIdentityElement());
21337      }
21338      if (element.hasUriElement()) {
21339        composeUri("uri", element.getUriElement());
21340      }
21341      if (element.hasNameElement()) {
21342        composeString("name", element.getNameElement());
21343      }
21344      if (element.hasCommentsElement()) {
21345        composeString("comments", element.getCommentsElement());
21346      }
21347      composeElementClose(element);
21348      xml.exit(FHIR_NS, name);
21349    }
21350  }
21351
21352  protected void composeStructureDefinitionStructureDefinitionSnapshotComponent(String name,
21353      StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
21354    if (element != null) {
21355      composeElementAttributes(element);
21356      xml.enter(FHIR_NS, name);
21357      composeBackboneElements(element);
21358      if (element.hasElement()) {
21359        for (ElementDefinition e : element.getElement())
21360          composeElementDefinition("element", e);
21361      }
21362      composeElementClose(element);
21363      xml.exit(FHIR_NS, name);
21364    }
21365  }
21366
21367  protected void composeStructureDefinitionStructureDefinitionDifferentialComponent(String name,
21368      StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
21369    if (element != null) {
21370      composeElementAttributes(element);
21371      xml.enter(FHIR_NS, name);
21372      composeBackboneElements(element);
21373      if (element.hasElement()) {
21374        for (ElementDefinition e : element.getElement())
21375          composeElementDefinition("element", e);
21376      }
21377      composeElementClose(element);
21378      xml.exit(FHIR_NS, name);
21379    }
21380  }
21381
21382  protected void composeSubscription(String name, Subscription element) throws IOException {
21383    if (element != null) {
21384      composeDomainResourceAttributes(element);
21385      xml.enter(FHIR_NS, name);
21386      composeDomainResourceElements(element);
21387      if (element.hasCriteriaElement()) {
21388        composeString("criteria", element.getCriteriaElement());
21389      }
21390      if (element.hasContact()) {
21391        for (ContactPoint e : element.getContact())
21392          composeContactPoint("contact", e);
21393      }
21394      if (element.hasReasonElement()) {
21395        composeString("reason", element.getReasonElement());
21396      }
21397      if (element.hasStatusElement())
21398        composeEnumeration("status", element.getStatusElement(), new Subscription.SubscriptionStatusEnumFactory());
21399      if (element.hasErrorElement()) {
21400        composeString("error", element.getErrorElement());
21401      }
21402      if (element.hasChannel()) {
21403        composeSubscriptionSubscriptionChannelComponent("channel", element.getChannel());
21404      }
21405      if (element.hasEndElement()) {
21406        composeInstant("end", element.getEndElement());
21407      }
21408      if (element.hasTag()) {
21409        for (Coding e : element.getTag())
21410          composeCoding("tag", e);
21411      }
21412      composeElementClose(element);
21413      xml.exit(FHIR_NS, name);
21414    }
21415  }
21416
21417  protected void composeSubscriptionSubscriptionChannelComponent(String name,
21418      Subscription.SubscriptionChannelComponent element) throws IOException {
21419    if (element != null) {
21420      composeElementAttributes(element);
21421      xml.enter(FHIR_NS, name);
21422      composeBackboneElements(element);
21423      if (element.hasTypeElement())
21424        composeEnumeration("type", element.getTypeElement(), new Subscription.SubscriptionChannelTypeEnumFactory());
21425      if (element.hasEndpointElement()) {
21426        composeUri("endpoint", element.getEndpointElement());
21427      }
21428      if (element.hasPayloadElement()) {
21429        composeString("payload", element.getPayloadElement());
21430      }
21431      if (element.hasHeaderElement()) {
21432        composeString("header", element.getHeaderElement());
21433      }
21434      composeElementClose(element);
21435      xml.exit(FHIR_NS, name);
21436    }
21437  }
21438
21439  protected void composeSubstance(String name, Substance element) throws IOException {
21440    if (element != null) {
21441      composeDomainResourceAttributes(element);
21442      xml.enter(FHIR_NS, name);
21443      composeDomainResourceElements(element);
21444      if (element.hasIdentifier()) {
21445        for (Identifier e : element.getIdentifier())
21446          composeIdentifier("identifier", e);
21447      }
21448      if (element.hasCategory()) {
21449        for (CodeableConcept e : element.getCategory())
21450          composeCodeableConcept("category", e);
21451      }
21452      if (element.hasCode()) {
21453        composeCodeableConcept("code", element.getCode());
21454      }
21455      if (element.hasDescriptionElement()) {
21456        composeString("description", element.getDescriptionElement());
21457      }
21458      if (element.hasInstance()) {
21459        for (Substance.SubstanceInstanceComponent e : element.getInstance())
21460          composeSubstanceSubstanceInstanceComponent("instance", e);
21461      }
21462      if (element.hasIngredient()) {
21463        for (Substance.SubstanceIngredientComponent e : element.getIngredient())
21464          composeSubstanceSubstanceIngredientComponent("ingredient", e);
21465      }
21466      composeElementClose(element);
21467      xml.exit(FHIR_NS, name);
21468    }
21469  }
21470
21471  protected void composeSubstanceSubstanceInstanceComponent(String name, Substance.SubstanceInstanceComponent element)
21472      throws IOException {
21473    if (element != null) {
21474      composeElementAttributes(element);
21475      xml.enter(FHIR_NS, name);
21476      composeBackboneElements(element);
21477      if (element.hasIdentifier()) {
21478        composeIdentifier("identifier", element.getIdentifier());
21479      }
21480      if (element.hasExpiryElement()) {
21481        composeDateTime("expiry", element.getExpiryElement());
21482      }
21483      if (element.hasQuantity()) {
21484        composeSimpleQuantity("quantity", element.getQuantity());
21485      }
21486      composeElementClose(element);
21487      xml.exit(FHIR_NS, name);
21488    }
21489  }
21490
21491  protected void composeSubstanceSubstanceIngredientComponent(String name,
21492      Substance.SubstanceIngredientComponent element) throws IOException {
21493    if (element != null) {
21494      composeElementAttributes(element);
21495      xml.enter(FHIR_NS, name);
21496      composeBackboneElements(element);
21497      if (element.hasQuantity()) {
21498        composeRatio("quantity", element.getQuantity());
21499      }
21500      if (element.hasSubstance()) {
21501        composeReference("substance", element.getSubstance());
21502      }
21503      composeElementClose(element);
21504      xml.exit(FHIR_NS, name);
21505    }
21506  }
21507
21508  protected void composeSupplyDelivery(String name, SupplyDelivery element) throws IOException {
21509    if (element != null) {
21510      composeDomainResourceAttributes(element);
21511      xml.enter(FHIR_NS, name);
21512      composeDomainResourceElements(element);
21513      if (element.hasIdentifier()) {
21514        composeIdentifier("identifier", element.getIdentifier());
21515      }
21516      if (element.hasStatusElement())
21517        composeEnumeration("status", element.getStatusElement(), new SupplyDelivery.SupplyDeliveryStatusEnumFactory());
21518      if (element.hasPatient()) {
21519        composeReference("patient", element.getPatient());
21520      }
21521      if (element.hasType()) {
21522        composeCodeableConcept("type", element.getType());
21523      }
21524      if (element.hasQuantity()) {
21525        composeSimpleQuantity("quantity", element.getQuantity());
21526      }
21527      if (element.hasSuppliedItem()) {
21528        composeReference("suppliedItem", element.getSuppliedItem());
21529      }
21530      if (element.hasSupplier()) {
21531        composeReference("supplier", element.getSupplier());
21532      }
21533      if (element.hasWhenPrepared()) {
21534        composePeriod("whenPrepared", element.getWhenPrepared());
21535      }
21536      if (element.hasTimeElement()) {
21537        composeDateTime("time", element.getTimeElement());
21538      }
21539      if (element.hasDestination()) {
21540        composeReference("destination", element.getDestination());
21541      }
21542      if (element.hasReceiver()) {
21543        for (Reference e : element.getReceiver())
21544          composeReference("receiver", e);
21545      }
21546      composeElementClose(element);
21547      xml.exit(FHIR_NS, name);
21548    }
21549  }
21550
21551  protected void composeSupplyRequest(String name, SupplyRequest element) throws IOException {
21552    if (element != null) {
21553      composeDomainResourceAttributes(element);
21554      xml.enter(FHIR_NS, name);
21555      composeDomainResourceElements(element);
21556      if (element.hasPatient()) {
21557        composeReference("patient", element.getPatient());
21558      }
21559      if (element.hasSource()) {
21560        composeReference("source", element.getSource());
21561      }
21562      if (element.hasDateElement()) {
21563        composeDateTime("date", element.getDateElement());
21564      }
21565      if (element.hasIdentifier()) {
21566        composeIdentifier("identifier", element.getIdentifier());
21567      }
21568      if (element.hasStatusElement())
21569        composeEnumeration("status", element.getStatusElement(), new SupplyRequest.SupplyRequestStatusEnumFactory());
21570      if (element.hasKind()) {
21571        composeCodeableConcept("kind", element.getKind());
21572      }
21573      if (element.hasOrderedItem()) {
21574        composeReference("orderedItem", element.getOrderedItem());
21575      }
21576      if (element.hasSupplier()) {
21577        for (Reference e : element.getSupplier())
21578          composeReference("supplier", e);
21579      }
21580      if (element.hasReason()) {
21581        composeType("reason", element.getReason());
21582      }
21583      if (element.hasWhen()) {
21584        composeSupplyRequestSupplyRequestWhenComponent("when", element.getWhen());
21585      }
21586      composeElementClose(element);
21587      xml.exit(FHIR_NS, name);
21588    }
21589  }
21590
21591  protected void composeSupplyRequestSupplyRequestWhenComponent(String name,
21592      SupplyRequest.SupplyRequestWhenComponent element) throws IOException {
21593    if (element != null) {
21594      composeElementAttributes(element);
21595      xml.enter(FHIR_NS, name);
21596      composeBackboneElements(element);
21597      if (element.hasCode()) {
21598        composeCodeableConcept("code", element.getCode());
21599      }
21600      if (element.hasSchedule()) {
21601        composeTiming("schedule", element.getSchedule());
21602      }
21603      composeElementClose(element);
21604      xml.exit(FHIR_NS, name);
21605    }
21606  }
21607
21608  protected void composeTestScript(String name, TestScript element) throws IOException {
21609    if (element != null) {
21610      composeDomainResourceAttributes(element);
21611      xml.enter(FHIR_NS, name);
21612      composeDomainResourceElements(element);
21613      if (element.hasUrlElement()) {
21614        composeUri("url", element.getUrlElement());
21615      }
21616      if (element.hasVersionElement()) {
21617        composeString("version", element.getVersionElement());
21618      }
21619      if (element.hasNameElement()) {
21620        composeString("name", element.getNameElement());
21621      }
21622      if (element.hasStatusElement())
21623        composeEnumeration("status", element.getStatusElement(),
21624            new Enumerations.ConformanceResourceStatusEnumFactory());
21625      if (element.hasIdentifier()) {
21626        composeIdentifier("identifier", element.getIdentifier());
21627      }
21628      if (element.hasExperimentalElement()) {
21629        composeBoolean("experimental", element.getExperimentalElement());
21630      }
21631      if (element.hasPublisherElement()) {
21632        composeString("publisher", element.getPublisherElement());
21633      }
21634      if (element.hasContact()) {
21635        for (TestScript.TestScriptContactComponent e : element.getContact())
21636          composeTestScriptTestScriptContactComponent("contact", e);
21637      }
21638      if (element.hasDateElement()) {
21639        composeDateTime("date", element.getDateElement());
21640      }
21641      if (element.hasDescriptionElement()) {
21642        composeString("description", element.getDescriptionElement());
21643      }
21644      if (element.hasUseContext()) {
21645        for (CodeableConcept e : element.getUseContext())
21646          composeCodeableConcept("useContext", e);
21647      }
21648      if (element.hasRequirementsElement()) {
21649        composeString("requirements", element.getRequirementsElement());
21650      }
21651      if (element.hasCopyrightElement()) {
21652        composeString("copyright", element.getCopyrightElement());
21653      }
21654      if (element.hasMetadata()) {
21655        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
21656      }
21657      if (element.hasMultiserverElement()) {
21658        composeBoolean("multiserver", element.getMultiserverElement());
21659      }
21660      if (element.hasFixture()) {
21661        for (TestScript.TestScriptFixtureComponent e : element.getFixture())
21662          composeTestScriptTestScriptFixtureComponent("fixture", e);
21663      }
21664      if (element.hasProfile()) {
21665        for (Reference e : element.getProfile())
21666          composeReference("profile", e);
21667      }
21668      if (element.hasVariable()) {
21669        for (TestScript.TestScriptVariableComponent e : element.getVariable())
21670          composeTestScriptTestScriptVariableComponent("variable", e);
21671      }
21672      if (element.hasSetup()) {
21673        composeTestScriptTestScriptSetupComponent("setup", element.getSetup());
21674      }
21675      if (element.hasTest()) {
21676        for (TestScript.TestScriptTestComponent e : element.getTest())
21677          composeTestScriptTestScriptTestComponent("test", e);
21678      }
21679      if (element.hasTeardown()) {
21680        composeTestScriptTestScriptTeardownComponent("teardown", element.getTeardown());
21681      }
21682      composeElementClose(element);
21683      xml.exit(FHIR_NS, name);
21684    }
21685  }
21686
21687  protected void composeTestScriptTestScriptContactComponent(String name, TestScript.TestScriptContactComponent element)
21688      throws IOException {
21689    if (element != null) {
21690      composeElementAttributes(element);
21691      xml.enter(FHIR_NS, name);
21692      composeBackboneElements(element);
21693      if (element.hasNameElement()) {
21694        composeString("name", element.getNameElement());
21695      }
21696      if (element.hasTelecom()) {
21697        for (ContactPoint e : element.getTelecom())
21698          composeContactPoint("telecom", e);
21699      }
21700      composeElementClose(element);
21701      xml.exit(FHIR_NS, name);
21702    }
21703  }
21704
21705  protected void composeTestScriptTestScriptMetadataComponent(String name,
21706      TestScript.TestScriptMetadataComponent element) throws IOException {
21707    if (element != null) {
21708      composeElementAttributes(element);
21709      xml.enter(FHIR_NS, name);
21710      composeBackboneElements(element);
21711      if (element.hasLink()) {
21712        for (TestScript.TestScriptMetadataLinkComponent e : element.getLink())
21713          composeTestScriptTestScriptMetadataLinkComponent("link", e);
21714      }
21715      if (element.hasCapability()) {
21716        for (TestScript.TestScriptMetadataCapabilityComponent e : element.getCapability())
21717          composeTestScriptTestScriptMetadataCapabilityComponent("capability", e);
21718      }
21719      composeElementClose(element);
21720      xml.exit(FHIR_NS, name);
21721    }
21722  }
21723
21724  protected void composeTestScriptTestScriptMetadataLinkComponent(String name,
21725      TestScript.TestScriptMetadataLinkComponent element) throws IOException {
21726    if (element != null) {
21727      composeElementAttributes(element);
21728      xml.enter(FHIR_NS, name);
21729      composeBackboneElements(element);
21730      if (element.hasUrlElement()) {
21731        composeUri("url", element.getUrlElement());
21732      }
21733      if (element.hasDescriptionElement()) {
21734        composeString("description", element.getDescriptionElement());
21735      }
21736      composeElementClose(element);
21737      xml.exit(FHIR_NS, name);
21738    }
21739  }
21740
21741  protected void composeTestScriptTestScriptMetadataCapabilityComponent(String name,
21742      TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
21743    if (element != null) {
21744      composeElementAttributes(element);
21745      xml.enter(FHIR_NS, name);
21746      composeBackboneElements(element);
21747      if (element.hasRequiredElement()) {
21748        composeBoolean("required", element.getRequiredElement());
21749      }
21750      if (element.hasValidatedElement()) {
21751        composeBoolean("validated", element.getValidatedElement());
21752      }
21753      if (element.hasDescriptionElement()) {
21754        composeString("description", element.getDescriptionElement());
21755      }
21756      if (element.hasDestinationElement()) {
21757        composeInteger("destination", element.getDestinationElement());
21758      }
21759      if (element.hasLink()) {
21760        for (UriType e : element.getLink())
21761          composeUri("link", e);
21762      }
21763      if (element.hasConformance()) {
21764        composeReference("conformance", element.getConformance());
21765      }
21766      composeElementClose(element);
21767      xml.exit(FHIR_NS, name);
21768    }
21769  }
21770
21771  protected void composeTestScriptTestScriptFixtureComponent(String name, TestScript.TestScriptFixtureComponent element)
21772      throws IOException {
21773    if (element != null) {
21774      composeElementAttributes(element);
21775      xml.enter(FHIR_NS, name);
21776      composeBackboneElements(element);
21777      if (element.hasAutocreateElement()) {
21778        composeBoolean("autocreate", element.getAutocreateElement());
21779      }
21780      if (element.hasAutodeleteElement()) {
21781        composeBoolean("autodelete", element.getAutodeleteElement());
21782      }
21783      if (element.hasResource()) {
21784        composeReference("resource", element.getResource());
21785      }
21786      composeElementClose(element);
21787      xml.exit(FHIR_NS, name);
21788    }
21789  }
21790
21791  protected void composeTestScriptTestScriptVariableComponent(String name,
21792      TestScript.TestScriptVariableComponent element) throws IOException {
21793    if (element != null) {
21794      composeElementAttributes(element);
21795      xml.enter(FHIR_NS, name);
21796      composeBackboneElements(element);
21797      if (element.hasNameElement()) {
21798        composeString("name", element.getNameElement());
21799      }
21800      if (element.hasHeaderFieldElement()) {
21801        composeString("headerField", element.getHeaderFieldElement());
21802      }
21803      if (element.hasPathElement()) {
21804        composeString("path", element.getPathElement());
21805      }
21806      if (element.hasSourceIdElement()) {
21807        composeId("sourceId", element.getSourceIdElement());
21808      }
21809      composeElementClose(element);
21810      xml.exit(FHIR_NS, name);
21811    }
21812  }
21813
21814  protected void composeTestScriptTestScriptSetupComponent(String name, TestScript.TestScriptSetupComponent element)
21815      throws IOException {
21816    if (element != null) {
21817      composeElementAttributes(element);
21818      xml.enter(FHIR_NS, name);
21819      composeBackboneElements(element);
21820      if (element.hasMetadata()) {
21821        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
21822      }
21823      if (element.hasAction()) {
21824        for (TestScript.TestScriptSetupActionComponent e : element.getAction())
21825          composeTestScriptTestScriptSetupActionComponent("action", e);
21826      }
21827      composeElementClose(element);
21828      xml.exit(FHIR_NS, name);
21829    }
21830  }
21831
21832  protected void composeTestScriptTestScriptSetupActionComponent(String name,
21833      TestScript.TestScriptSetupActionComponent element) throws IOException {
21834    if (element != null) {
21835      composeElementAttributes(element);
21836      xml.enter(FHIR_NS, name);
21837      composeBackboneElements(element);
21838      if (element.hasOperation()) {
21839        composeTestScriptTestScriptSetupActionOperationComponent("operation", element.getOperation());
21840      }
21841      if (element.hasAssert()) {
21842        composeTestScriptTestScriptSetupActionAssertComponent("assert", element.getAssert());
21843      }
21844      composeElementClose(element);
21845      xml.exit(FHIR_NS, name);
21846    }
21847  }
21848
21849  protected void composeTestScriptTestScriptSetupActionOperationComponent(String name,
21850      TestScript.TestScriptSetupActionOperationComponent element) throws IOException {
21851    if (element != null) {
21852      composeElementAttributes(element);
21853      xml.enter(FHIR_NS, name);
21854      composeBackboneElements(element);
21855      if (element.hasType()) {
21856        composeCoding("type", element.getType());
21857      }
21858      if (element.hasResourceElement()) {
21859        composeCode("resource", element.getResourceElement());
21860      }
21861      if (element.hasLabelElement()) {
21862        composeString("label", element.getLabelElement());
21863      }
21864      if (element.hasDescriptionElement()) {
21865        composeString("description", element.getDescriptionElement());
21866      }
21867      if (element.hasAcceptElement())
21868        composeEnumeration("accept", element.getAcceptElement(), new TestScript.ContentTypeEnumFactory());
21869      if (element.hasContentTypeElement())
21870        composeEnumeration("contentType", element.getContentTypeElement(), new TestScript.ContentTypeEnumFactory());
21871      if (element.hasDestinationElement()) {
21872        composeInteger("destination", element.getDestinationElement());
21873      }
21874      if (element.hasEncodeRequestUrlElement()) {
21875        composeBoolean("encodeRequestUrl", element.getEncodeRequestUrlElement());
21876      }
21877      if (element.hasParamsElement()) {
21878        composeString("params", element.getParamsElement());
21879      }
21880      if (element.hasRequestHeader()) {
21881        for (TestScript.TestScriptSetupActionOperationRequestHeaderComponent e : element.getRequestHeader())
21882          composeTestScriptTestScriptSetupActionOperationRequestHeaderComponent("requestHeader", e);
21883      }
21884      if (element.hasResponseIdElement()) {
21885        composeId("responseId", element.getResponseIdElement());
21886      }
21887      if (element.hasSourceIdElement()) {
21888        composeId("sourceId", element.getSourceIdElement());
21889      }
21890      if (element.hasTargetIdElement()) {
21891        composeId("targetId", element.getTargetIdElement());
21892      }
21893      if (element.hasUrlElement()) {
21894        composeString("url", element.getUrlElement());
21895      }
21896      composeElementClose(element);
21897      xml.exit(FHIR_NS, name);
21898    }
21899  }
21900
21901  protected void composeTestScriptTestScriptSetupActionOperationRequestHeaderComponent(String name,
21902      TestScript.TestScriptSetupActionOperationRequestHeaderComponent element) throws IOException {
21903    if (element != null) {
21904      composeElementAttributes(element);
21905      xml.enter(FHIR_NS, name);
21906      composeBackboneElements(element);
21907      if (element.hasFieldElement()) {
21908        composeString("field", element.getFieldElement());
21909      }
21910      if (element.hasValueElement()) {
21911        composeString("value", element.getValueElement());
21912      }
21913      composeElementClose(element);
21914      xml.exit(FHIR_NS, name);
21915    }
21916  }
21917
21918  protected void composeTestScriptTestScriptSetupActionAssertComponent(String name,
21919      TestScript.TestScriptSetupActionAssertComponent element) throws IOException {
21920    if (element != null) {
21921      composeElementAttributes(element);
21922      xml.enter(FHIR_NS, name);
21923      composeBackboneElements(element);
21924      if (element.hasLabelElement()) {
21925        composeString("label", element.getLabelElement());
21926      }
21927      if (element.hasDescriptionElement()) {
21928        composeString("description", element.getDescriptionElement());
21929      }
21930      if (element.hasDirectionElement())
21931        composeEnumeration("direction", element.getDirectionElement(),
21932            new TestScript.AssertionDirectionTypeEnumFactory());
21933      if (element.hasCompareToSourceIdElement()) {
21934        composeString("compareToSourceId", element.getCompareToSourceIdElement());
21935      }
21936      if (element.hasCompareToSourcePathElement()) {
21937        composeString("compareToSourcePath", element.getCompareToSourcePathElement());
21938      }
21939      if (element.hasContentTypeElement())
21940        composeEnumeration("contentType", element.getContentTypeElement(), new TestScript.ContentTypeEnumFactory());
21941      if (element.hasHeaderFieldElement()) {
21942        composeString("headerField", element.getHeaderFieldElement());
21943      }
21944      if (element.hasMinimumIdElement()) {
21945        composeString("minimumId", element.getMinimumIdElement());
21946      }
21947      if (element.hasNavigationLinksElement()) {
21948        composeBoolean("navigationLinks", element.getNavigationLinksElement());
21949      }
21950      if (element.hasOperatorElement())
21951        composeEnumeration("operator", element.getOperatorElement(), new TestScript.AssertionOperatorTypeEnumFactory());
21952      if (element.hasPathElement()) {
21953        composeString("path", element.getPathElement());
21954      }
21955      if (element.hasResourceElement()) {
21956        composeCode("resource", element.getResourceElement());
21957      }
21958      if (element.hasResponseElement())
21959        composeEnumeration("response", element.getResponseElement(),
21960            new TestScript.AssertionResponseTypesEnumFactory());
21961      if (element.hasResponseCodeElement()) {
21962        composeString("responseCode", element.getResponseCodeElement());
21963      }
21964      if (element.hasSourceIdElement()) {
21965        composeId("sourceId", element.getSourceIdElement());
21966      }
21967      if (element.hasValidateProfileIdElement()) {
21968        composeId("validateProfileId", element.getValidateProfileIdElement());
21969      }
21970      if (element.hasValueElement()) {
21971        composeString("value", element.getValueElement());
21972      }
21973      if (element.hasWarningOnlyElement()) {
21974        composeBoolean("warningOnly", element.getWarningOnlyElement());
21975      }
21976      composeElementClose(element);
21977      xml.exit(FHIR_NS, name);
21978    }
21979  }
21980
21981  protected void composeTestScriptTestScriptTestComponent(String name, TestScript.TestScriptTestComponent element)
21982      throws IOException {
21983    if (element != null) {
21984      composeElementAttributes(element);
21985      xml.enter(FHIR_NS, name);
21986      composeBackboneElements(element);
21987      if (element.hasNameElement()) {
21988        composeString("name", element.getNameElement());
21989      }
21990      if (element.hasDescriptionElement()) {
21991        composeString("description", element.getDescriptionElement());
21992      }
21993      if (element.hasMetadata()) {
21994        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
21995      }
21996      if (element.hasAction()) {
21997        for (TestScript.TestScriptTestActionComponent e : element.getAction())
21998          composeTestScriptTestScriptTestActionComponent("action", e);
21999      }
22000      composeElementClose(element);
22001      xml.exit(FHIR_NS, name);
22002    }
22003  }
22004
22005  protected void composeTestScriptTestScriptTestActionComponent(String name,
22006      TestScript.TestScriptTestActionComponent element) throws IOException {
22007    if (element != null) {
22008      composeElementAttributes(element);
22009      xml.enter(FHIR_NS, name);
22010      composeBackboneElements(element);
22011      if (element.hasOperation()) {
22012        composeTestScriptTestScriptSetupActionOperationComponent("operation", element.getOperation());
22013      }
22014      if (element.hasAssert()) {
22015        composeTestScriptTestScriptSetupActionAssertComponent("assert", element.getAssert());
22016      }
22017      composeElementClose(element);
22018      xml.exit(FHIR_NS, name);
22019    }
22020  }
22021
22022  protected void composeTestScriptTestScriptTeardownComponent(String name,
22023      TestScript.TestScriptTeardownComponent element) throws IOException {
22024    if (element != null) {
22025      composeElementAttributes(element);
22026      xml.enter(FHIR_NS, name);
22027      composeBackboneElements(element);
22028      if (element.hasAction()) {
22029        for (TestScript.TestScriptTeardownActionComponent e : element.getAction())
22030          composeTestScriptTestScriptTeardownActionComponent("action", e);
22031      }
22032      composeElementClose(element);
22033      xml.exit(FHIR_NS, name);
22034    }
22035  }
22036
22037  protected void composeTestScriptTestScriptTeardownActionComponent(String name,
22038      TestScript.TestScriptTeardownActionComponent element) throws IOException {
22039    if (element != null) {
22040      composeElementAttributes(element);
22041      xml.enter(FHIR_NS, name);
22042      composeBackboneElements(element);
22043      if (element.hasOperation()) {
22044        composeTestScriptTestScriptSetupActionOperationComponent("operation", element.getOperation());
22045      }
22046      composeElementClose(element);
22047      xml.exit(FHIR_NS, name);
22048    }
22049  }
22050
22051  protected void composeValueSet(String name, ValueSet element) throws IOException {
22052    if (element != null) {
22053      composeDomainResourceAttributes(element);
22054      xml.enter(FHIR_NS, name);
22055      composeDomainResourceElements(element);
22056      if (element.hasUrlElement()) {
22057        composeUri("url", element.getUrlElement());
22058      }
22059      if (element.hasIdentifier()) {
22060        composeIdentifier("identifier", element.getIdentifier());
22061      }
22062      if (element.hasVersionElement()) {
22063        composeString("version", element.getVersionElement());
22064      }
22065      if (element.hasNameElement()) {
22066        composeString("name", element.getNameElement());
22067      }
22068      if (element.hasStatusElement())
22069        composeEnumeration("status", element.getStatusElement(),
22070            new Enumerations.ConformanceResourceStatusEnumFactory());
22071      if (element.hasExperimentalElement()) {
22072        composeBoolean("experimental", element.getExperimentalElement());
22073      }
22074      if (element.hasPublisherElement()) {
22075        composeString("publisher", element.getPublisherElement());
22076      }
22077      if (element.hasContact()) {
22078        for (ValueSet.ValueSetContactComponent e : element.getContact())
22079          composeValueSetValueSetContactComponent("contact", e);
22080      }
22081      if (element.hasDateElement()) {
22082        composeDateTime("date", element.getDateElement());
22083      }
22084      if (element.hasLockedDateElement()) {
22085        composeDate("lockedDate", element.getLockedDateElement());
22086      }
22087      if (element.hasDescriptionElement()) {
22088        composeString("description", element.getDescriptionElement());
22089      }
22090      if (element.hasUseContext()) {
22091        for (CodeableConcept e : element.getUseContext())
22092          composeCodeableConcept("useContext", e);
22093      }
22094      if (element.hasImmutableElement()) {
22095        composeBoolean("immutable", element.getImmutableElement());
22096      }
22097      if (element.hasRequirementsElement()) {
22098        composeString("requirements", element.getRequirementsElement());
22099      }
22100      if (element.hasCopyrightElement()) {
22101        composeString("copyright", element.getCopyrightElement());
22102      }
22103      if (element.hasExtensibleElement()) {
22104        composeBoolean("extensible", element.getExtensibleElement());
22105      }
22106      if (element.hasCodeSystem()) {
22107        composeValueSetValueSetCodeSystemComponent("codeSystem", element.getCodeSystem());
22108      }
22109      if (element.hasCompose()) {
22110        composeValueSetValueSetComposeComponent("compose", element.getCompose());
22111      }
22112      if (element.hasExpansion()) {
22113        composeValueSetValueSetExpansionComponent("expansion", element.getExpansion());
22114      }
22115      composeElementClose(element);
22116      xml.exit(FHIR_NS, name);
22117    }
22118  }
22119
22120  protected void composeValueSetValueSetContactComponent(String name, ValueSet.ValueSetContactComponent element)
22121      throws IOException {
22122    if (element != null) {
22123      composeElementAttributes(element);
22124      xml.enter(FHIR_NS, name);
22125      composeBackboneElements(element);
22126      if (element.hasNameElement()) {
22127        composeString("name", element.getNameElement());
22128      }
22129      if (element.hasTelecom()) {
22130        for (ContactPoint e : element.getTelecom())
22131          composeContactPoint("telecom", e);
22132      }
22133      composeElementClose(element);
22134      xml.exit(FHIR_NS, name);
22135    }
22136  }
22137
22138  protected void composeValueSetValueSetCodeSystemComponent(String name, ValueSet.ValueSetCodeSystemComponent element)
22139      throws IOException {
22140    if (element != null) {
22141      composeElementAttributes(element);
22142      xml.enter(FHIR_NS, name);
22143      composeBackboneElements(element);
22144      if (element.hasSystemElement()) {
22145        composeUri("system", element.getSystemElement());
22146      }
22147      if (element.hasVersionElement()) {
22148        composeString("version", element.getVersionElement());
22149      }
22150      if (element.hasCaseSensitiveElement()) {
22151        composeBoolean("caseSensitive", element.getCaseSensitiveElement());
22152      }
22153      if (element.hasConcept()) {
22154        for (ValueSet.ConceptDefinitionComponent e : element.getConcept())
22155          composeValueSetConceptDefinitionComponent("concept", e);
22156      }
22157      composeElementClose(element);
22158      xml.exit(FHIR_NS, name);
22159    }
22160  }
22161
22162  protected void composeValueSetConceptDefinitionComponent(String name, ValueSet.ConceptDefinitionComponent element)
22163      throws IOException {
22164    if (element != null) {
22165      composeElementAttributes(element);
22166      xml.enter(FHIR_NS, name);
22167      composeBackboneElements(element);
22168      if (element.hasCodeElement()) {
22169        composeCode("code", element.getCodeElement());
22170      }
22171      if (element.hasAbstractElement()) {
22172        composeBoolean("abstract", element.getAbstractElement());
22173      }
22174      if (element.hasDisplayElement()) {
22175        composeString("display", element.getDisplayElement());
22176      }
22177      if (element.hasDefinitionElement()) {
22178        composeString("definition", element.getDefinitionElement());
22179      }
22180      if (element.hasDesignation()) {
22181        for (ValueSet.ConceptDefinitionDesignationComponent e : element.getDesignation())
22182          composeValueSetConceptDefinitionDesignationComponent("designation", e);
22183      }
22184      if (element.hasConcept()) {
22185        for (ValueSet.ConceptDefinitionComponent e : element.getConcept())
22186          composeValueSetConceptDefinitionComponent("concept", e);
22187      }
22188      composeElementClose(element);
22189      xml.exit(FHIR_NS, name);
22190    }
22191  }
22192
22193  protected void composeValueSetConceptDefinitionDesignationComponent(String name,
22194      ValueSet.ConceptDefinitionDesignationComponent element) throws IOException {
22195    if (element != null) {
22196      composeElementAttributes(element);
22197      xml.enter(FHIR_NS, name);
22198      composeBackboneElements(element);
22199      if (element.hasLanguageElement()) {
22200        composeCode("language", element.getLanguageElement());
22201      }
22202      if (element.hasUse()) {
22203        composeCoding("use", element.getUse());
22204      }
22205      if (element.hasValueElement()) {
22206        composeString("value", element.getValueElement());
22207      }
22208      composeElementClose(element);
22209      xml.exit(FHIR_NS, name);
22210    }
22211  }
22212
22213  protected void composeValueSetValueSetComposeComponent(String name, ValueSet.ValueSetComposeComponent element)
22214      throws IOException {
22215    if (element != null) {
22216      composeElementAttributes(element);
22217      xml.enter(FHIR_NS, name);
22218      composeBackboneElements(element);
22219      if (element.hasImport()) {
22220        for (UriType e : element.getImport())
22221          composeUri("import", e);
22222      }
22223      if (element.hasInclude()) {
22224        for (ValueSet.ConceptSetComponent e : element.getInclude())
22225          composeValueSetConceptSetComponent("include", e);
22226      }
22227      if (element.hasExclude()) {
22228        for (ValueSet.ConceptSetComponent e : element.getExclude())
22229          composeValueSetConceptSetComponent("exclude", e);
22230      }
22231      composeElementClose(element);
22232      xml.exit(FHIR_NS, name);
22233    }
22234  }
22235
22236  protected void composeValueSetConceptSetComponent(String name, ValueSet.ConceptSetComponent element)
22237      throws IOException {
22238    if (element != null) {
22239      composeElementAttributes(element);
22240      xml.enter(FHIR_NS, name);
22241      composeBackboneElements(element);
22242      if (element.hasSystemElement()) {
22243        composeUri("system", element.getSystemElement());
22244      }
22245      if (element.hasVersionElement()) {
22246        composeString("version", element.getVersionElement());
22247      }
22248      if (element.hasConcept()) {
22249        for (ValueSet.ConceptReferenceComponent e : element.getConcept())
22250          composeValueSetConceptReferenceComponent("concept", e);
22251      }
22252      if (element.hasFilter()) {
22253        for (ValueSet.ConceptSetFilterComponent e : element.getFilter())
22254          composeValueSetConceptSetFilterComponent("filter", e);
22255      }
22256      composeElementClose(element);
22257      xml.exit(FHIR_NS, name);
22258    }
22259  }
22260
22261  protected void composeValueSetConceptReferenceComponent(String name, ValueSet.ConceptReferenceComponent element)
22262      throws IOException {
22263    if (element != null) {
22264      composeElementAttributes(element);
22265      xml.enter(FHIR_NS, name);
22266      composeBackboneElements(element);
22267      if (element.hasCodeElement()) {
22268        composeCode("code", element.getCodeElement());
22269      }
22270      if (element.hasDisplayElement()) {
22271        composeString("display", element.getDisplayElement());
22272      }
22273      if (element.hasDesignation()) {
22274        for (ValueSet.ConceptDefinitionDesignationComponent e : element.getDesignation())
22275          composeValueSetConceptDefinitionDesignationComponent("designation", e);
22276      }
22277      composeElementClose(element);
22278      xml.exit(FHIR_NS, name);
22279    }
22280  }
22281
22282  protected void composeValueSetConceptSetFilterComponent(String name, ValueSet.ConceptSetFilterComponent element)
22283      throws IOException {
22284    if (element != null) {
22285      composeElementAttributes(element);
22286      xml.enter(FHIR_NS, name);
22287      composeBackboneElements(element);
22288      if (element.hasPropertyElement()) {
22289        composeCode("property", element.getPropertyElement());
22290      }
22291      if (element.hasOpElement())
22292        composeEnumeration("op", element.getOpElement(), new ValueSet.FilterOperatorEnumFactory());
22293      if (element.hasValueElement()) {
22294        composeCode("value", element.getValueElement());
22295      }
22296      composeElementClose(element);
22297      xml.exit(FHIR_NS, name);
22298    }
22299  }
22300
22301  protected void composeValueSetValueSetExpansionComponent(String name, ValueSet.ValueSetExpansionComponent element)
22302      throws IOException {
22303    if (element != null) {
22304      composeElementAttributes(element);
22305      xml.enter(FHIR_NS, name);
22306      composeBackboneElements(element);
22307      if (element.hasIdentifierElement()) {
22308        composeUri("identifier", element.getIdentifierElement());
22309      }
22310      if (element.hasTimestampElement()) {
22311        composeDateTime("timestamp", element.getTimestampElement());
22312      }
22313      if (element.hasTotalElement()) {
22314        composeInteger("total", element.getTotalElement());
22315      }
22316      if (element.hasOffsetElement()) {
22317        composeInteger("offset", element.getOffsetElement());
22318      }
22319      if (element.hasParameter()) {
22320        for (ValueSet.ValueSetExpansionParameterComponent e : element.getParameter())
22321          composeValueSetValueSetExpansionParameterComponent("parameter", e);
22322      }
22323      if (element.hasContains()) {
22324        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains())
22325          composeValueSetValueSetExpansionContainsComponent("contains", e);
22326      }
22327      composeElementClose(element);
22328      xml.exit(FHIR_NS, name);
22329    }
22330  }
22331
22332  protected void composeValueSetValueSetExpansionParameterComponent(String name,
22333      ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
22334    if (element != null) {
22335      composeElementAttributes(element);
22336      xml.enter(FHIR_NS, name);
22337      composeBackboneElements(element);
22338      if (element.hasNameElement()) {
22339        composeString("name", element.getNameElement());
22340      }
22341      if (element.hasValue()) {
22342        composeType("value", element.getValue());
22343      }
22344      composeElementClose(element);
22345      xml.exit(FHIR_NS, name);
22346    }
22347  }
22348
22349  protected void composeValueSetValueSetExpansionContainsComponent(String name,
22350      ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
22351    if (element != null) {
22352      composeElementAttributes(element);
22353      xml.enter(FHIR_NS, name);
22354      composeBackboneElements(element);
22355      if (element.hasSystemElement()) {
22356        composeUri("system", element.getSystemElement());
22357      }
22358      if (element.hasAbstractElement()) {
22359        composeBoolean("abstract", element.getAbstractElement());
22360      }
22361      if (element.hasVersionElement()) {
22362        composeString("version", element.getVersionElement());
22363      }
22364      if (element.hasCodeElement()) {
22365        composeCode("code", element.getCodeElement());
22366      }
22367      if (element.hasDisplayElement()) {
22368        composeString("display", element.getDisplayElement());
22369      }
22370      if (element.hasContains()) {
22371        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains())
22372          composeValueSetValueSetExpansionContainsComponent("contains", e);
22373      }
22374      composeElementClose(element);
22375      xml.exit(FHIR_NS, name);
22376    }
22377  }
22378
22379  protected void composeVisionPrescription(String name, VisionPrescription element) throws IOException {
22380    if (element != null) {
22381      composeDomainResourceAttributes(element);
22382      xml.enter(FHIR_NS, name);
22383      composeDomainResourceElements(element);
22384      if (element.hasIdentifier()) {
22385        for (Identifier e : element.getIdentifier())
22386          composeIdentifier("identifier", e);
22387      }
22388      if (element.hasDateWrittenElement()) {
22389        composeDateTime("dateWritten", element.getDateWrittenElement());
22390      }
22391      if (element.hasPatient()) {
22392        composeReference("patient", element.getPatient());
22393      }
22394      if (element.hasPrescriber()) {
22395        composeReference("prescriber", element.getPrescriber());
22396      }
22397      if (element.hasEncounter()) {
22398        composeReference("encounter", element.getEncounter());
22399      }
22400      if (element.hasReason()) {
22401        composeType("reason", element.getReason());
22402      }
22403      if (element.hasDispense()) {
22404        for (VisionPrescription.VisionPrescriptionDispenseComponent e : element.getDispense())
22405          composeVisionPrescriptionVisionPrescriptionDispenseComponent("dispense", e);
22406      }
22407      composeElementClose(element);
22408      xml.exit(FHIR_NS, name);
22409    }
22410  }
22411
22412  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponent(String name,
22413      VisionPrescription.VisionPrescriptionDispenseComponent element) throws IOException {
22414    if (element != null) {
22415      composeElementAttributes(element);
22416      xml.enter(FHIR_NS, name);
22417      composeBackboneElements(element);
22418      if (element.hasProduct()) {
22419        composeCoding("product", element.getProduct());
22420      }
22421      if (element.hasEyeElement())
22422        composeEnumeration("eye", element.getEyeElement(), new VisionPrescription.VisionEyesEnumFactory());
22423      if (element.hasSphereElement()) {
22424        composeDecimal("sphere", element.getSphereElement());
22425      }
22426      if (element.hasCylinderElement()) {
22427        composeDecimal("cylinder", element.getCylinderElement());
22428      }
22429      if (element.hasAxisElement()) {
22430        composeInteger("axis", element.getAxisElement());
22431      }
22432      if (element.hasPrismElement()) {
22433        composeDecimal("prism", element.getPrismElement());
22434      }
22435      if (element.hasBaseElement())
22436        composeEnumeration("base", element.getBaseElement(), new VisionPrescription.VisionBaseEnumFactory());
22437      if (element.hasAddElement()) {
22438        composeDecimal("add", element.getAddElement());
22439      }
22440      if (element.hasPowerElement()) {
22441        composeDecimal("power", element.getPowerElement());
22442      }
22443      if (element.hasBackCurveElement()) {
22444        composeDecimal("backCurve", element.getBackCurveElement());
22445      }
22446      if (element.hasDiameterElement()) {
22447        composeDecimal("diameter", element.getDiameterElement());
22448      }
22449      if (element.hasDuration()) {
22450        composeSimpleQuantity("duration", element.getDuration());
22451      }
22452      if (element.hasColorElement()) {
22453        composeString("color", element.getColorElement());
22454      }
22455      if (element.hasBrandElement()) {
22456        composeString("brand", element.getBrandElement());
22457      }
22458      if (element.hasNotesElement()) {
22459        composeString("notes", element.getNotesElement());
22460      }
22461      composeElementClose(element);
22462      xml.exit(FHIR_NS, name);
22463    }
22464  }
22465
22466  @Override
22467  protected void composeResource(Resource resource) throws IOException {
22468    if (resource instanceof Parameters)
22469      composeParameters("Parameters", (Parameters) resource);
22470    else if (resource instanceof Account)
22471      composeAccount("Account", (Account) resource);
22472    else if (resource instanceof AllergyIntolerance)
22473      composeAllergyIntolerance("AllergyIntolerance", (AllergyIntolerance) resource);
22474    else if (resource instanceof Appointment)
22475      composeAppointment("Appointment", (Appointment) resource);
22476    else if (resource instanceof AppointmentResponse)
22477      composeAppointmentResponse("AppointmentResponse", (AppointmentResponse) resource);
22478    else if (resource instanceof AuditEvent)
22479      composeAuditEvent("AuditEvent", (AuditEvent) resource);
22480    else if (resource instanceof Basic)
22481      composeBasic("Basic", (Basic) resource);
22482    else if (resource instanceof Binary)
22483      composeBinary("Binary", (Binary) resource);
22484    else if (resource instanceof BodySite)
22485      composeBodySite("BodySite", (BodySite) resource);
22486    else if (resource instanceof Bundle)
22487      composeBundle("Bundle", (Bundle) resource);
22488    else if (resource instanceof CarePlan)
22489      composeCarePlan("CarePlan", (CarePlan) resource);
22490    else if (resource instanceof Claim)
22491      composeClaim("Claim", (Claim) resource);
22492    else if (resource instanceof ClaimResponse)
22493      composeClaimResponse("ClaimResponse", (ClaimResponse) resource);
22494    else if (resource instanceof ClinicalImpression)
22495      composeClinicalImpression("ClinicalImpression", (ClinicalImpression) resource);
22496    else if (resource instanceof Communication)
22497      composeCommunication("Communication", (Communication) resource);
22498    else if (resource instanceof CommunicationRequest)
22499      composeCommunicationRequest("CommunicationRequest", (CommunicationRequest) resource);
22500    else if (resource instanceof Composition)
22501      composeComposition("Composition", (Composition) resource);
22502    else if (resource instanceof ConceptMap)
22503      composeConceptMap("ConceptMap", (ConceptMap) resource);
22504    else if (resource instanceof Condition)
22505      composeCondition("Condition", (Condition) resource);
22506    else if (resource instanceof Conformance)
22507      composeConformance("Conformance", (Conformance) resource);
22508    else if (resource instanceof Contract)
22509      composeContract("Contract", (Contract) resource);
22510    else if (resource instanceof Coverage)
22511      composeCoverage("Coverage", (Coverage) resource);
22512    else if (resource instanceof DataElement)
22513      composeDataElement("DataElement", (DataElement) resource);
22514    else if (resource instanceof DetectedIssue)
22515      composeDetectedIssue("DetectedIssue", (DetectedIssue) resource);
22516    else if (resource instanceof Device)
22517      composeDevice("Device", (Device) resource);
22518    else if (resource instanceof DeviceComponent)
22519      composeDeviceComponent("DeviceComponent", (DeviceComponent) resource);
22520    else if (resource instanceof DeviceMetric)
22521      composeDeviceMetric("DeviceMetric", (DeviceMetric) resource);
22522    else if (resource instanceof DeviceUseRequest)
22523      composeDeviceUseRequest("DeviceUseRequest", (DeviceUseRequest) resource);
22524    else if (resource instanceof DeviceUseStatement)
22525      composeDeviceUseStatement("DeviceUseStatement", (DeviceUseStatement) resource);
22526    else if (resource instanceof DiagnosticOrder)
22527      composeDiagnosticOrder("DiagnosticOrder", (DiagnosticOrder) resource);
22528    else if (resource instanceof DiagnosticReport)
22529      composeDiagnosticReport("DiagnosticReport", (DiagnosticReport) resource);
22530    else if (resource instanceof DocumentManifest)
22531      composeDocumentManifest("DocumentManifest", (DocumentManifest) resource);
22532    else if (resource instanceof DocumentReference)
22533      composeDocumentReference("DocumentReference", (DocumentReference) resource);
22534    else if (resource instanceof EligibilityRequest)
22535      composeEligibilityRequest("EligibilityRequest", (EligibilityRequest) resource);
22536    else if (resource instanceof EligibilityResponse)
22537      composeEligibilityResponse("EligibilityResponse", (EligibilityResponse) resource);
22538    else if (resource instanceof Encounter)
22539      composeEncounter("Encounter", (Encounter) resource);
22540    else if (resource instanceof EnrollmentRequest)
22541      composeEnrollmentRequest("EnrollmentRequest", (EnrollmentRequest) resource);
22542    else if (resource instanceof EnrollmentResponse)
22543      composeEnrollmentResponse("EnrollmentResponse", (EnrollmentResponse) resource);
22544    else if (resource instanceof EpisodeOfCare)
22545      composeEpisodeOfCare("EpisodeOfCare", (EpisodeOfCare) resource);
22546    else if (resource instanceof ExplanationOfBenefit)
22547      composeExplanationOfBenefit("ExplanationOfBenefit", (ExplanationOfBenefit) resource);
22548    else if (resource instanceof FamilyMemberHistory)
22549      composeFamilyMemberHistory("FamilyMemberHistory", (FamilyMemberHistory) resource);
22550    else if (resource instanceof Flag)
22551      composeFlag("Flag", (Flag) resource);
22552    else if (resource instanceof Goal)
22553      composeGoal("Goal", (Goal) resource);
22554    else if (resource instanceof Group)
22555      composeGroup("Group", (Group) resource);
22556    else if (resource instanceof HealthcareService)
22557      composeHealthcareService("HealthcareService", (HealthcareService) resource);
22558    else if (resource instanceof ImagingObjectSelection)
22559      composeImagingObjectSelection("ImagingObjectSelection", (ImagingObjectSelection) resource);
22560    else if (resource instanceof ImagingStudy)
22561      composeImagingStudy("ImagingStudy", (ImagingStudy) resource);
22562    else if (resource instanceof Immunization)
22563      composeImmunization("Immunization", (Immunization) resource);
22564    else if (resource instanceof ImmunizationRecommendation)
22565      composeImmunizationRecommendation("ImmunizationRecommendation", (ImmunizationRecommendation) resource);
22566    else if (resource instanceof ImplementationGuide)
22567      composeImplementationGuide("ImplementationGuide", (ImplementationGuide) resource);
22568    else if (resource instanceof List_)
22569      composeList_("List", (List_) resource);
22570    else if (resource instanceof Location)
22571      composeLocation("Location", (Location) resource);
22572    else if (resource instanceof Media)
22573      composeMedia("Media", (Media) resource);
22574    else if (resource instanceof Medication)
22575      composeMedication("Medication", (Medication) resource);
22576    else if (resource instanceof MedicationAdministration)
22577      composeMedicationAdministration("MedicationAdministration", (MedicationAdministration) resource);
22578    else if (resource instanceof MedicationDispense)
22579      composeMedicationDispense("MedicationDispense", (MedicationDispense) resource);
22580    else if (resource instanceof MedicationOrder)
22581      composeMedicationOrder("MedicationOrder", (MedicationOrder) resource);
22582    else if (resource instanceof MedicationStatement)
22583      composeMedicationStatement("MedicationStatement", (MedicationStatement) resource);
22584    else if (resource instanceof MessageHeader)
22585      composeMessageHeader("MessageHeader", (MessageHeader) resource);
22586    else if (resource instanceof NamingSystem)
22587      composeNamingSystem("NamingSystem", (NamingSystem) resource);
22588    else if (resource instanceof NutritionOrder)
22589      composeNutritionOrder("NutritionOrder", (NutritionOrder) resource);
22590    else if (resource instanceof Observation)
22591      composeObservation("Observation", (Observation) resource);
22592    else if (resource instanceof OperationDefinition)
22593      composeOperationDefinition("OperationDefinition", (OperationDefinition) resource);
22594    else if (resource instanceof OperationOutcome)
22595      composeOperationOutcome("OperationOutcome", (OperationOutcome) resource);
22596    else if (resource instanceof Order)
22597      composeOrder("Order", (Order) resource);
22598    else if (resource instanceof OrderResponse)
22599      composeOrderResponse("OrderResponse", (OrderResponse) resource);
22600    else if (resource instanceof Organization)
22601      composeOrganization("Organization", (Organization) resource);
22602    else if (resource instanceof Patient)
22603      composePatient("Patient", (Patient) resource);
22604    else if (resource instanceof PaymentNotice)
22605      composePaymentNotice("PaymentNotice", (PaymentNotice) resource);
22606    else if (resource instanceof PaymentReconciliation)
22607      composePaymentReconciliation("PaymentReconciliation", (PaymentReconciliation) resource);
22608    else if (resource instanceof Person)
22609      composePerson("Person", (Person) resource);
22610    else if (resource instanceof Practitioner)
22611      composePractitioner("Practitioner", (Practitioner) resource);
22612    else if (resource instanceof Procedure)
22613      composeProcedure("Procedure", (Procedure) resource);
22614    else if (resource instanceof ProcedureRequest)
22615      composeProcedureRequest("ProcedureRequest", (ProcedureRequest) resource);
22616    else if (resource instanceof ProcessRequest)
22617      composeProcessRequest("ProcessRequest", (ProcessRequest) resource);
22618    else if (resource instanceof ProcessResponse)
22619      composeProcessResponse("ProcessResponse", (ProcessResponse) resource);
22620    else if (resource instanceof Provenance)
22621      composeProvenance("Provenance", (Provenance) resource);
22622    else if (resource instanceof Questionnaire)
22623      composeQuestionnaire("Questionnaire", (Questionnaire) resource);
22624    else if (resource instanceof QuestionnaireResponse)
22625      composeQuestionnaireResponse("QuestionnaireResponse", (QuestionnaireResponse) resource);
22626    else if (resource instanceof ReferralRequest)
22627      composeReferralRequest("ReferralRequest", (ReferralRequest) resource);
22628    else if (resource instanceof RelatedPerson)
22629      composeRelatedPerson("RelatedPerson", (RelatedPerson) resource);
22630    else if (resource instanceof RiskAssessment)
22631      composeRiskAssessment("RiskAssessment", (RiskAssessment) resource);
22632    else if (resource instanceof Schedule)
22633      composeSchedule("Schedule", (Schedule) resource);
22634    else if (resource instanceof SearchParameter)
22635      composeSearchParameter("SearchParameter", (SearchParameter) resource);
22636    else if (resource instanceof Slot)
22637      composeSlot("Slot", (Slot) resource);
22638    else if (resource instanceof Specimen)
22639      composeSpecimen("Specimen", (Specimen) resource);
22640    else if (resource instanceof StructureDefinition)
22641      composeStructureDefinition("StructureDefinition", (StructureDefinition) resource);
22642    else if (resource instanceof Subscription)
22643      composeSubscription("Subscription", (Subscription) resource);
22644    else if (resource instanceof Substance)
22645      composeSubstance("Substance", (Substance) resource);
22646    else if (resource instanceof SupplyDelivery)
22647      composeSupplyDelivery("SupplyDelivery", (SupplyDelivery) resource);
22648    else if (resource instanceof SupplyRequest)
22649      composeSupplyRequest("SupplyRequest", (SupplyRequest) resource);
22650    else if (resource instanceof TestScript)
22651      composeTestScript("TestScript", (TestScript) resource);
22652    else if (resource instanceof ValueSet)
22653      composeValueSet("ValueSet", (ValueSet) resource);
22654    else if (resource instanceof VisionPrescription)
22655      composeVisionPrescription("VisionPrescription", (VisionPrescription) resource);
22656    else if (resource instanceof Binary)
22657      composeBinary("Binary", (Binary) resource);
22658    else
22659      throw new Error("Unhandled resource type " + resource.getClass().getName());
22660  }
22661
22662  protected void composeResource(String name, Resource resource) throws IOException {
22663    if (resource instanceof Parameters)
22664      composeParameters(name, (Parameters) resource);
22665    else if (resource instanceof Account)
22666      composeAccount(name, (Account) resource);
22667    else if (resource instanceof AllergyIntolerance)
22668      composeAllergyIntolerance(name, (AllergyIntolerance) resource);
22669    else if (resource instanceof Appointment)
22670      composeAppointment(name, (Appointment) resource);
22671    else if (resource instanceof AppointmentResponse)
22672      composeAppointmentResponse(name, (AppointmentResponse) resource);
22673    else if (resource instanceof AuditEvent)
22674      composeAuditEvent(name, (AuditEvent) resource);
22675    else if (resource instanceof Basic)
22676      composeBasic(name, (Basic) resource);
22677    else if (resource instanceof Binary)
22678      composeBinary(name, (Binary) resource);
22679    else if (resource instanceof BodySite)
22680      composeBodySite(name, (BodySite) resource);
22681    else if (resource instanceof Bundle)
22682      composeBundle(name, (Bundle) resource);
22683    else if (resource instanceof CarePlan)
22684      composeCarePlan(name, (CarePlan) resource);
22685    else if (resource instanceof Claim)
22686      composeClaim(name, (Claim) resource);
22687    else if (resource instanceof ClaimResponse)
22688      composeClaimResponse(name, (ClaimResponse) resource);
22689    else if (resource instanceof ClinicalImpression)
22690      composeClinicalImpression(name, (ClinicalImpression) resource);
22691    else if (resource instanceof Communication)
22692      composeCommunication(name, (Communication) resource);
22693    else if (resource instanceof CommunicationRequest)
22694      composeCommunicationRequest(name, (CommunicationRequest) resource);
22695    else if (resource instanceof Composition)
22696      composeComposition(name, (Composition) resource);
22697    else if (resource instanceof ConceptMap)
22698      composeConceptMap(name, (ConceptMap) resource);
22699    else if (resource instanceof Condition)
22700      composeCondition(name, (Condition) resource);
22701    else if (resource instanceof Conformance)
22702      composeConformance(name, (Conformance) resource);
22703    else if (resource instanceof Contract)
22704      composeContract(name, (Contract) resource);
22705    else if (resource instanceof Coverage)
22706      composeCoverage(name, (Coverage) resource);
22707    else if (resource instanceof DataElement)
22708      composeDataElement(name, (DataElement) resource);
22709    else if (resource instanceof DetectedIssue)
22710      composeDetectedIssue(name, (DetectedIssue) resource);
22711    else if (resource instanceof Device)
22712      composeDevice(name, (Device) resource);
22713    else if (resource instanceof DeviceComponent)
22714      composeDeviceComponent(name, (DeviceComponent) resource);
22715    else if (resource instanceof DeviceMetric)
22716      composeDeviceMetric(name, (DeviceMetric) resource);
22717    else if (resource instanceof DeviceUseRequest)
22718      composeDeviceUseRequest(name, (DeviceUseRequest) resource);
22719    else if (resource instanceof DeviceUseStatement)
22720      composeDeviceUseStatement(name, (DeviceUseStatement) resource);
22721    else if (resource instanceof DiagnosticOrder)
22722      composeDiagnosticOrder(name, (DiagnosticOrder) resource);
22723    else if (resource instanceof DiagnosticReport)
22724      composeDiagnosticReport(name, (DiagnosticReport) resource);
22725    else if (resource instanceof DocumentManifest)
22726      composeDocumentManifest(name, (DocumentManifest) resource);
22727    else if (resource instanceof DocumentReference)
22728      composeDocumentReference(name, (DocumentReference) resource);
22729    else if (resource instanceof EligibilityRequest)
22730      composeEligibilityRequest(name, (EligibilityRequest) resource);
22731    else if (resource instanceof EligibilityResponse)
22732      composeEligibilityResponse(name, (EligibilityResponse) resource);
22733    else if (resource instanceof Encounter)
22734      composeEncounter(name, (Encounter) resource);
22735    else if (resource instanceof EnrollmentRequest)
22736      composeEnrollmentRequest(name, (EnrollmentRequest) resource);
22737    else if (resource instanceof EnrollmentResponse)
22738      composeEnrollmentResponse(name, (EnrollmentResponse) resource);
22739    else if (resource instanceof EpisodeOfCare)
22740      composeEpisodeOfCare(name, (EpisodeOfCare) resource);
22741    else if (resource instanceof ExplanationOfBenefit)
22742      composeExplanationOfBenefit(name, (ExplanationOfBenefit) resource);
22743    else if (resource instanceof FamilyMemberHistory)
22744      composeFamilyMemberHistory(name, (FamilyMemberHistory) resource);
22745    else if (resource instanceof Flag)
22746      composeFlag(name, (Flag) resource);
22747    else if (resource instanceof Goal)
22748      composeGoal(name, (Goal) resource);
22749    else if (resource instanceof Group)
22750      composeGroup(name, (Group) resource);
22751    else if (resource instanceof HealthcareService)
22752      composeHealthcareService(name, (HealthcareService) resource);
22753    else if (resource instanceof ImagingObjectSelection)
22754      composeImagingObjectSelection(name, (ImagingObjectSelection) resource);
22755    else if (resource instanceof ImagingStudy)
22756      composeImagingStudy(name, (ImagingStudy) resource);
22757    else if (resource instanceof Immunization)
22758      composeImmunization(name, (Immunization) resource);
22759    else if (resource instanceof ImmunizationRecommendation)
22760      composeImmunizationRecommendation(name, (ImmunizationRecommendation) resource);
22761    else if (resource instanceof ImplementationGuide)
22762      composeImplementationGuide(name, (ImplementationGuide) resource);
22763    else if (resource instanceof List_)
22764      composeList_(name, (List_) resource);
22765    else if (resource instanceof Location)
22766      composeLocation(name, (Location) resource);
22767    else if (resource instanceof Media)
22768      composeMedia(name, (Media) resource);
22769    else if (resource instanceof Medication)
22770      composeMedication(name, (Medication) resource);
22771    else if (resource instanceof MedicationAdministration)
22772      composeMedicationAdministration(name, (MedicationAdministration) resource);
22773    else if (resource instanceof MedicationDispense)
22774      composeMedicationDispense(name, (MedicationDispense) resource);
22775    else if (resource instanceof MedicationOrder)
22776      composeMedicationOrder(name, (MedicationOrder) resource);
22777    else if (resource instanceof MedicationStatement)
22778      composeMedicationStatement(name, (MedicationStatement) resource);
22779    else if (resource instanceof MessageHeader)
22780      composeMessageHeader(name, (MessageHeader) resource);
22781    else if (resource instanceof NamingSystem)
22782      composeNamingSystem(name, (NamingSystem) resource);
22783    else if (resource instanceof NutritionOrder)
22784      composeNutritionOrder(name, (NutritionOrder) resource);
22785    else if (resource instanceof Observation)
22786      composeObservation(name, (Observation) resource);
22787    else if (resource instanceof OperationDefinition)
22788      composeOperationDefinition(name, (OperationDefinition) resource);
22789    else if (resource instanceof OperationOutcome)
22790      composeOperationOutcome(name, (OperationOutcome) resource);
22791    else if (resource instanceof Order)
22792      composeOrder(name, (Order) resource);
22793    else if (resource instanceof OrderResponse)
22794      composeOrderResponse(name, (OrderResponse) resource);
22795    else if (resource instanceof Organization)
22796      composeOrganization(name, (Organization) resource);
22797    else if (resource instanceof Patient)
22798      composePatient(name, (Patient) resource);
22799    else if (resource instanceof PaymentNotice)
22800      composePaymentNotice(name, (PaymentNotice) resource);
22801    else if (resource instanceof PaymentReconciliation)
22802      composePaymentReconciliation(name, (PaymentReconciliation) resource);
22803    else if (resource instanceof Person)
22804      composePerson(name, (Person) resource);
22805    else if (resource instanceof Practitioner)
22806      composePractitioner(name, (Practitioner) resource);
22807    else if (resource instanceof Procedure)
22808      composeProcedure(name, (Procedure) resource);
22809    else if (resource instanceof ProcedureRequest)
22810      composeProcedureRequest(name, (ProcedureRequest) resource);
22811    else if (resource instanceof ProcessRequest)
22812      composeProcessRequest(name, (ProcessRequest) resource);
22813    else if (resource instanceof ProcessResponse)
22814      composeProcessResponse(name, (ProcessResponse) resource);
22815    else if (resource instanceof Provenance)
22816      composeProvenance(name, (Provenance) resource);
22817    else if (resource instanceof Questionnaire)
22818      composeQuestionnaire(name, (Questionnaire) resource);
22819    else if (resource instanceof QuestionnaireResponse)
22820      composeQuestionnaireResponse(name, (QuestionnaireResponse) resource);
22821    else if (resource instanceof ReferralRequest)
22822      composeReferralRequest(name, (ReferralRequest) resource);
22823    else if (resource instanceof RelatedPerson)
22824      composeRelatedPerson(name, (RelatedPerson) resource);
22825    else if (resource instanceof RiskAssessment)
22826      composeRiskAssessment(name, (RiskAssessment) resource);
22827    else if (resource instanceof Schedule)
22828      composeSchedule(name, (Schedule) resource);
22829    else if (resource instanceof SearchParameter)
22830      composeSearchParameter(name, (SearchParameter) resource);
22831    else if (resource instanceof Slot)
22832      composeSlot(name, (Slot) resource);
22833    else if (resource instanceof Specimen)
22834      composeSpecimen(name, (Specimen) resource);
22835    else if (resource instanceof StructureDefinition)
22836      composeStructureDefinition(name, (StructureDefinition) resource);
22837    else if (resource instanceof Subscription)
22838      composeSubscription(name, (Subscription) resource);
22839    else if (resource instanceof Substance)
22840      composeSubstance(name, (Substance) resource);
22841    else if (resource instanceof SupplyDelivery)
22842      composeSupplyDelivery(name, (SupplyDelivery) resource);
22843    else if (resource instanceof SupplyRequest)
22844      composeSupplyRequest(name, (SupplyRequest) resource);
22845    else if (resource instanceof TestScript)
22846      composeTestScript(name, (TestScript) resource);
22847    else if (resource instanceof ValueSet)
22848      composeValueSet(name, (ValueSet) resource);
22849    else if (resource instanceof VisionPrescription)
22850      composeVisionPrescription(name, (VisionPrescription) resource);
22851    else if (resource instanceof Binary)
22852      composeBinary(name, (Binary) resource);
22853    else
22854      throw new Error("Unhandled resource type " + resource.getClass().getName());
22855  }
22856
22857  protected void composeType(String prefix, Type type) throws IOException {
22858    if (type == null)
22859      ;
22860    else if (type instanceof Money)
22861      composeMoney(prefix + "Money", (Money) type);
22862    else if (type instanceof SimpleQuantity)
22863      composeSimpleQuantity(prefix + "SimpleQuantity", (SimpleQuantity) type);
22864    else if (type instanceof Duration)
22865      composeDuration(prefix + "Duration", (Duration) type);
22866    else if (type instanceof Count)
22867      composeCount(prefix + "Count", (Count) type);
22868    else if (type instanceof Distance)
22869      composeDistance(prefix + "Distance", (Distance) type);
22870    else if (type instanceof Age)
22871      composeAge(prefix + "Age", (Age) type);
22872    else if (type instanceof Identifier)
22873      composeIdentifier(prefix + "Identifier", (Identifier) type);
22874    else if (type instanceof Coding)
22875      composeCoding(prefix + "Coding", (Coding) type);
22876    else if (type instanceof Reference)
22877      composeReference(prefix + "Reference", (Reference) type);
22878    else if (type instanceof Signature)
22879      composeSignature(prefix + "Signature", (Signature) type);
22880    else if (type instanceof SampledData)
22881      composeSampledData(prefix + "SampledData", (SampledData) type);
22882    else if (type instanceof Quantity)
22883      composeQuantity(prefix + "Quantity", (Quantity) type);
22884    else if (type instanceof Period)
22885      composePeriod(prefix + "Period", (Period) type);
22886    else if (type instanceof Attachment)
22887      composeAttachment(prefix + "Attachment", (Attachment) type);
22888    else if (type instanceof Ratio)
22889      composeRatio(prefix + "Ratio", (Ratio) type);
22890    else if (type instanceof Range)
22891      composeRange(prefix + "Range", (Range) type);
22892    else if (type instanceof Annotation)
22893      composeAnnotation(prefix + "Annotation", (Annotation) type);
22894    else if (type instanceof CodeableConcept)
22895      composeCodeableConcept(prefix + "CodeableConcept", (CodeableConcept) type);
22896    else if (type instanceof HumanName)
22897      composeHumanName(prefix + "HumanName", (HumanName) type);
22898    else if (type instanceof ContactPoint)
22899      composeContactPoint(prefix + "ContactPoint", (ContactPoint) type);
22900    else if (type instanceof Meta)
22901      composeMeta(prefix + "Meta", (Meta) type);
22902    else if (type instanceof Address)
22903      composeAddress(prefix + "Address", (Address) type);
22904    else if (type instanceof Timing)
22905      composeTiming(prefix + "Timing", (Timing) type);
22906    else if (type instanceof ElementDefinition)
22907      composeElementDefinition(prefix + "ElementDefinition", (ElementDefinition) type);
22908    else if (type instanceof DateType)
22909      composeDate(prefix + "Date", (DateType) type);
22910    else if (type instanceof DateTimeType)
22911      composeDateTime(prefix + "DateTime", (DateTimeType) type);
22912    else if (type instanceof CodeType)
22913      composeCode(prefix + "Code", (CodeType) type);
22914    else if (type instanceof StringType)
22915      composeString(prefix + "String", (StringType) type);
22916    else if (type instanceof IntegerType)
22917      composeInteger(prefix + "Integer", (IntegerType) type);
22918    else if (type instanceof OidType)
22919      composeOid(prefix + "Oid", (OidType) type);
22920    else if (type instanceof UriType)
22921      composeUri(prefix + "Uri", (UriType) type);
22922    else if (type instanceof UuidType)
22923      composeUuid(prefix + "Uuid", (UuidType) type);
22924    else if (type instanceof InstantType)
22925      composeInstant(prefix + "Instant", (InstantType) type);
22926    else if (type instanceof BooleanType)
22927      composeBoolean(prefix + "Boolean", (BooleanType) type);
22928    else if (type instanceof Base64BinaryType)
22929      composeBase64Binary(prefix + "Base64Binary", (Base64BinaryType) type);
22930    else if (type instanceof UnsignedIntType)
22931      composeUnsignedInt(prefix + "UnsignedInt", (UnsignedIntType) type);
22932    else if (type instanceof MarkdownType)
22933      composeMarkdown(prefix + "Markdown", (MarkdownType) type);
22934    else if (type instanceof TimeType)
22935      composeTime(prefix + "Time", (TimeType) type);
22936    else if (type instanceof IdType)
22937      composeId(prefix + "Id", (IdType) type);
22938    else if (type instanceof PositiveIntType)
22939      composePositiveInt(prefix + "PositiveInt", (PositiveIntType) type);
22940    else if (type instanceof DecimalType)
22941      composeDecimal(prefix + "Decimal", (DecimalType) type);
22942    else
22943      throw new Error("Unhandled type");
22944  }
22945
22946}