001package org.hl7.fhir.dstu3.formats;
002
003import java.io.IOException;
004
005/*-
006 * #%L
007 * org.hl7.fhir.dstu3
008 * %%
009 * Copyright (C) 2014 - 2019 Health Level 7
010 * %%
011 * Licensed under the Apache License, Version 2.0 (the "License");
012 * you may not use this file except in compliance with the License.
013 * You may obtain a copy of the License at
014 * 
015 *      http://www.apache.org/licenses/LICENSE-2.0
016 * 
017 * Unless required by applicable law or agreed to in writing, software
018 * distributed under the License is distributed on an "AS IS" BASIS,
019 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
020 * See the License for the specific language governing permissions and
021 * limitations under the License.
022 * #L%
023 */
024
025/*
026  Copyright (c) 2011+, HL7, Inc.
027  All rights reserved.
028  
029  Redistribution and use in source and binary forms, with or without modification, 
030  are permitted provided that the following conditions are met:
031  
032   * Redistributions of source code must retain the above copyright notice, this 
033     list of conditions and the following disclaimer.
034   * Redistributions in binary form must reproduce the above copyright notice, 
035     this list of conditions and the following disclaimer in the documentation 
036     and/or other materials provided with the distribution.
037   * Neither the name of HL7 nor the names of its contributors may be used to 
038     endorse or promote products derived from this software without specific 
039     prior written permission.
040  
041  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
042  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
043  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
044  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
045  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
046  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
047  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
048  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
049  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
050  POSSIBILITY OF SUCH DAMAGE.
051  
052*/
053
054// Generated on Mon, Apr 17, 2017 08:38+1000 for FHIR v3.0.x
055import org.hl7.fhir.dstu3.model.*;
056import org.hl7.fhir.exceptions.FHIRFormatError;
057import org.hl7.fhir.utilities.Utilities;
058import org.xmlpull.v1.XmlPullParser;
059import org.xmlpull.v1.XmlPullParserException;
060
061public class XmlParser extends XmlParserBase {
062
063  public XmlParser() {
064    super();
065  }
066
067  public XmlParser(boolean allowUnknownContent) {
068    super();
069    setAllowUnknownContent(allowUnknownContent);
070  }
071
072
073  protected boolean parseElementContent(int eventType, XmlPullParser xpp, Element res) throws XmlPullParserException, IOException, FHIRFormatError {
074    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) 
075      res.getExtension().add(parseExtension(xpp));
076    else
077      return false;
078      
079    return true;
080  }
081
082  protected boolean parseBackboneContent(int eventType, XmlPullParser xpp, BackboneElement res) throws XmlPullParserException, IOException, FHIRFormatError {
083    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) 
084      res.getModifierExtension().add(parseExtension(xpp));
085    else
086      return parseElementContent(eventType, xpp, res);
087      
088    return true;
089  }
090
091  @SuppressWarnings("unchecked")
092  protected <E extends Enum<E>> Enumeration<E> parseEnumeration(XmlPullParser xpp, E item, EnumFactory e) throws XmlPullParserException, IOException, FHIRFormatError {
093    Enumeration<E> res = new Enumeration<E>(e);
094    parseElementAttributes(xpp, res);
095    res.setValue((E) e.fromCode(xpp.getAttributeValue(null, "value")));
096    next(xpp);
097    int eventType = nextNoWhitespace(xpp);
098    while (eventType != XmlPullParser.END_TAG) {
099      if (!parseElementContent(eventType, xpp, res))
100        unknownContent(xpp);
101      eventType = nextNoWhitespace(xpp);
102    }
103    next(xpp);
104    parseElementClose(res);
105    return res;
106  }
107
108  protected DateType parseDate(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
109    DateType res = new DateType(xpp.getAttributeValue(null, "value"));
110    parseElementAttributes(xpp, res);
111    next(xpp);
112    int eventType = nextNoWhitespace(xpp);
113    while (eventType != XmlPullParser.END_TAG) {
114      if (!parseElementContent(eventType, xpp, res))
115        unknownContent(xpp);
116      eventType = nextNoWhitespace(xpp);
117    }
118    next(xpp);
119    parseElementClose(res);
120    return res;
121  }
122
123  protected DateTimeType parseDateTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
124    DateTimeType res = new DateTimeType(xpp.getAttributeValue(null, "value"));
125    parseElementAttributes(xpp, res);
126    next(xpp);
127    int eventType = nextNoWhitespace(xpp);
128    while (eventType != XmlPullParser.END_TAG) {
129      if (!parseElementContent(eventType, xpp, res))
130        unknownContent(xpp);
131      eventType = nextNoWhitespace(xpp);
132    }
133    next(xpp);
134    parseElementClose(res);
135    return res;
136  }
137
138  protected CodeType parseCode(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
139    CodeType res = new CodeType(xpp.getAttributeValue(null, "value"));
140    parseElementAttributes(xpp, res);
141    next(xpp);
142    int eventType = nextNoWhitespace(xpp);
143    while (eventType != XmlPullParser.END_TAG) {
144      if (!parseElementContent(eventType, xpp, res))
145        unknownContent(xpp);
146      eventType = nextNoWhitespace(xpp);
147    }
148    next(xpp);
149    parseElementClose(res);
150    return res;
151  }
152
153  protected StringType parseString(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
154    StringType res = new StringType(xpp.getAttributeValue(null, "value"));
155    parseElementAttributes(xpp, res);
156    next(xpp);
157    int eventType = nextNoWhitespace(xpp);
158    while (eventType != XmlPullParser.END_TAG) {
159      if (!parseElementContent(eventType, xpp, res))
160        unknownContent(xpp);
161      eventType = nextNoWhitespace(xpp);
162    }
163    next(xpp);
164    parseElementClose(res);
165    return res;
166  }
167
168  protected IntegerType parseInteger(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
169    IntegerType res = new IntegerType(xpp.getAttributeValue(null, "value"));
170    parseElementAttributes(xpp, res);
171    next(xpp);
172    int eventType = nextNoWhitespace(xpp);
173    while (eventType != XmlPullParser.END_TAG) {
174      if (!parseElementContent(eventType, xpp, res))
175        unknownContent(xpp);
176      eventType = nextNoWhitespace(xpp);
177    }
178    next(xpp);
179    parseElementClose(res);
180    return res;
181  }
182
183  protected OidType parseOid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
184    OidType res = new OidType(xpp.getAttributeValue(null, "value"));
185    parseElementAttributes(xpp, res);
186    next(xpp);
187    int eventType = nextNoWhitespace(xpp);
188    while (eventType != XmlPullParser.END_TAG) {
189      if (!parseElementContent(eventType, xpp, res))
190        unknownContent(xpp);
191      eventType = nextNoWhitespace(xpp);
192    }
193    next(xpp);
194    parseElementClose(res);
195    return res;
196  }
197
198  protected UriType parseUri(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
199    UriType res = new UriType(xpp.getAttributeValue(null, "value"));
200    parseElementAttributes(xpp, res);
201    next(xpp);
202    int eventType = nextNoWhitespace(xpp);
203    while (eventType != XmlPullParser.END_TAG) {
204      if (!parseElementContent(eventType, xpp, res))
205        unknownContent(xpp);
206      eventType = nextNoWhitespace(xpp);
207    }
208    next(xpp);
209    parseElementClose(res);
210    return res;
211  }
212
213  protected UuidType parseUuid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
214    UuidType res = new UuidType(xpp.getAttributeValue(null, "value"));
215    parseElementAttributes(xpp, res);
216    next(xpp);
217    int eventType = nextNoWhitespace(xpp);
218    while (eventType != XmlPullParser.END_TAG) {
219      if (!parseElementContent(eventType, xpp, res))
220        unknownContent(xpp);
221      eventType = nextNoWhitespace(xpp);
222    }
223    next(xpp);
224    parseElementClose(res);
225    return res;
226  }
227
228  protected InstantType parseInstant(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
229    InstantType res = new InstantType(xpp.getAttributeValue(null, "value"));
230    parseElementAttributes(xpp, res);
231    next(xpp);
232    int eventType = nextNoWhitespace(xpp);
233    while (eventType != XmlPullParser.END_TAG) {
234      if (!parseElementContent(eventType, xpp, res))
235        unknownContent(xpp);
236      eventType = nextNoWhitespace(xpp);
237    }
238    next(xpp);
239    parseElementClose(res);
240    return res;
241  }
242
243  protected BooleanType parseBoolean(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
244    BooleanType res = new BooleanType(xpp.getAttributeValue(null, "value"));
245    parseElementAttributes(xpp, res);
246    next(xpp);
247    int eventType = nextNoWhitespace(xpp);
248    while (eventType != XmlPullParser.END_TAG) {
249      if (!parseElementContent(eventType, xpp, res))
250        unknownContent(xpp);
251      eventType = nextNoWhitespace(xpp);
252    }
253    next(xpp);
254    parseElementClose(res);
255    return res;
256  }
257
258  protected Base64BinaryType parseBase64Binary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
259    Base64BinaryType res = new Base64BinaryType(xpp.getAttributeValue(null, "value"));
260    parseElementAttributes(xpp, res);
261    next(xpp);
262    int eventType = nextNoWhitespace(xpp);
263    while (eventType != XmlPullParser.END_TAG) {
264      if (!parseElementContent(eventType, xpp, res))
265        unknownContent(xpp);
266      eventType = nextNoWhitespace(xpp);
267    }
268    next(xpp);
269    parseElementClose(res);
270    return res;
271  }
272
273  protected UnsignedIntType parseUnsignedInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
274    UnsignedIntType res = new UnsignedIntType(xpp.getAttributeValue(null, "value"));
275    parseElementAttributes(xpp, res);
276    next(xpp);
277    int eventType = nextNoWhitespace(xpp);
278    while (eventType != XmlPullParser.END_TAG) {
279      if (!parseElementContent(eventType, xpp, res))
280        unknownContent(xpp);
281      eventType = nextNoWhitespace(xpp);
282    }
283    next(xpp);
284    parseElementClose(res);
285    return res;
286  }
287
288  protected MarkdownType parseMarkdown(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
289    MarkdownType res = new MarkdownType(xpp.getAttributeValue(null, "value"));
290    parseElementAttributes(xpp, res);
291    next(xpp);
292    int eventType = nextNoWhitespace(xpp);
293    while (eventType != XmlPullParser.END_TAG) {
294      if (!parseElementContent(eventType, xpp, res))
295        unknownContent(xpp);
296      eventType = nextNoWhitespace(xpp);
297    }
298    next(xpp);
299    parseElementClose(res);
300    return res;
301  }
302
303  protected TimeType parseTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
304    TimeType res = new TimeType(xpp.getAttributeValue(null, "value"));
305    parseElementAttributes(xpp, res);
306    next(xpp);
307    int eventType = nextNoWhitespace(xpp);
308    while (eventType != XmlPullParser.END_TAG) {
309      if (!parseElementContent(eventType, xpp, res))
310        unknownContent(xpp);
311      eventType = nextNoWhitespace(xpp);
312    }
313    next(xpp);
314    parseElementClose(res);
315    return res;
316  }
317
318  protected IdType parseId(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
319    IdType res = new IdType(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 PositiveIntType parsePositiveInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
334    PositiveIntType res = new PositiveIntType(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 DecimalType parseDecimal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
349    DecimalType res = new DecimalType(xpp.getAttributeValue(null, "value"));
350    parseElementAttributes(xpp, res);
351    next(xpp);
352    int eventType = nextNoWhitespace(xpp);
353    while (eventType != XmlPullParser.END_TAG) {
354      if (!parseElementContent(eventType, xpp, res))
355        unknownContent(xpp);
356      eventType = nextNoWhitespace(xpp);
357    }
358    next(xpp);
359    parseElementClose(res);
360    return res;
361  }
362
363  protected Extension parseExtension(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
364    Extension res = new Extension();
365    parseElementAttributes(xpp, res);
366    if (xpp.getAttributeValue(null, "url") != null)
367        res.setUrl(xpp.getAttributeValue(null, "url"));
368    next(xpp);
369    int eventType = nextNoWhitespace(xpp);
370    while (eventType != XmlPullParser.END_TAG) {
371  if (!parseExtensionContent(eventType, xpp, res))
372        unknownContent(xpp);
373      eventType = nextNoWhitespace(xpp);
374    }
375    next(xpp);
376    parseElementClose(res);
377    return res;
378  }
379
380  protected boolean parseExtensionContent(int eventType, XmlPullParser xpp, Extension res) throws XmlPullParserException, IOException, FHIRFormatError {
381      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
382        res.setValue(parseType("value", xpp));
383      } else if (!parseElementContent(eventType, xpp, res))
384        return false;
385    return true;
386  }
387
388  protected Narrative parseNarrative(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
389    Narrative res = new Narrative();
390    parseElementAttributes(xpp, res);
391    next(xpp);
392    int eventType = nextNoWhitespace(xpp);
393    while (eventType != XmlPullParser.END_TAG) {
394  if (!parseNarrativeContent(eventType, xpp, res))
395        unknownContent(xpp);
396      eventType = nextNoWhitespace(xpp);
397    }
398    next(xpp);
399    parseElementClose(res);
400    return res;
401  }
402
403  protected boolean parseNarrativeContent(int eventType, XmlPullParser xpp, Narrative res) throws XmlPullParserException, IOException, FHIRFormatError {
404      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
405        res.setStatusElement(parseEnumeration(xpp, Narrative.NarrativeStatus.NULL, new Narrative.NarrativeStatusEnumFactory()));
406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("div")) {
407        res.setDiv(parseXhtml(xpp));
408      } else if (!parseElementContent(eventType, xpp, res))
409        return false;
410    return true;
411  }
412
413  protected Reference parseReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
414    Reference res = new Reference();
415    parseTypeAttributes(xpp, res);
416    next(xpp);
417    int eventType = nextNoWhitespace(xpp);
418    while (eventType != XmlPullParser.END_TAG) {
419  if (!parseReferenceContent(eventType, xpp, res))
420        unknownContent(xpp);
421      eventType = nextNoWhitespace(xpp);
422    }
423    next(xpp);
424    parseElementClose(res);
425    return res;
426  }
427
428  protected boolean parseReferenceContent(int eventType, XmlPullParser xpp, Reference res) throws XmlPullParserException, IOException, FHIRFormatError {
429      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
430        res.setReferenceElement(parseString(xpp));
431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
432        res.setIdentifier(parseIdentifier(xpp));
433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
434        res.setDisplayElement(parseString(xpp));
435      } else if (!parseElementContent(eventType, xpp, res))
436        return false;
437    return true;
438  }
439
440  protected Quantity parseQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
441    Quantity res = new Quantity();
442    parseTypeAttributes(xpp, res);
443    next(xpp);
444    int eventType = nextNoWhitespace(xpp);
445    while (eventType != XmlPullParser.END_TAG) {
446  if (!parseQuantityContent(eventType, xpp, res))
447        unknownContent(xpp);
448      eventType = nextNoWhitespace(xpp);
449    }
450    next(xpp);
451    parseElementClose(res);
452    return res;
453  }
454
455  protected boolean parseQuantityContent(int eventType, XmlPullParser xpp, Quantity res) throws XmlPullParserException, IOException, FHIRFormatError {
456      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
457        res.setValueElement(parseDecimal(xpp));
458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
459        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
461        res.setUnitElement(parseString(xpp));
462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
463        res.setSystemElement(parseUri(xpp));
464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
465        res.setCodeElement(parseCode(xpp));
466      } else if (!parseElementContent(eventType, xpp, res))
467        return false;
468    return true;
469  }
470
471  protected Period parsePeriod(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
472    Period res = new Period();
473    parseTypeAttributes(xpp, res);
474    next(xpp);
475    int eventType = nextNoWhitespace(xpp);
476    while (eventType != XmlPullParser.END_TAG) {
477  if (!parsePeriodContent(eventType, xpp, res))
478        unknownContent(xpp);
479      eventType = nextNoWhitespace(xpp);
480    }
481    next(xpp);
482    parseElementClose(res);
483    return res;
484  }
485
486  protected boolean parsePeriodContent(int eventType, XmlPullParser xpp, Period res) throws XmlPullParserException, IOException, FHIRFormatError {
487      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
488        res.setStartElement(parseDateTime(xpp));
489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
490        res.setEndElement(parseDateTime(xpp));
491      } else if (!parseElementContent(eventType, xpp, res))
492        return false;
493    return true;
494  }
495
496  protected Attachment parseAttachment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
497    Attachment res = new Attachment();
498    parseTypeAttributes(xpp, res);
499    next(xpp);
500    int eventType = nextNoWhitespace(xpp);
501    while (eventType != XmlPullParser.END_TAG) {
502  if (!parseAttachmentContent(eventType, xpp, res))
503        unknownContent(xpp);
504      eventType = nextNoWhitespace(xpp);
505    }
506    next(xpp);
507    parseElementClose(res);
508    return res;
509  }
510
511  protected boolean parseAttachmentContent(int eventType, XmlPullParser xpp, Attachment res) throws XmlPullParserException, IOException, FHIRFormatError {
512      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
513        res.setContentTypeElement(parseCode(xpp));
514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
515        res.setLanguageElement(parseCode(xpp));
516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
517        res.setDataElement(parseBase64Binary(xpp));
518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
519        res.setUrlElement(parseUri(xpp));
520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("size")) {
521        res.setSizeElement(parseUnsignedInt(xpp));
522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hash")) {
523        res.setHashElement(parseBase64Binary(xpp));
524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
525        res.setTitleElement(parseString(xpp));
526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("creation")) {
527        res.setCreationElement(parseDateTime(xpp));
528      } else if (!parseElementContent(eventType, xpp, res))
529        return false;
530    return true;
531  }
532
533  protected Duration parseDuration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
534    Duration res = new Duration();
535    parseTypeAttributes(xpp, res);
536    next(xpp);
537    int eventType = nextNoWhitespace(xpp);
538    while (eventType != XmlPullParser.END_TAG) {
539  if (!parseDurationContent(eventType, xpp, res))
540        unknownContent(xpp);
541      eventType = nextNoWhitespace(xpp);
542    }
543    next(xpp);
544    parseElementClose(res);
545    return res;
546  }
547
548  protected boolean parseDurationContent(int eventType, XmlPullParser xpp, Duration res) throws XmlPullParserException, IOException, FHIRFormatError {
549      if (!parseQuantityContent(eventType, xpp, res))
550        return false;
551    return true;
552  }
553
554  protected Count parseCount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
555    Count res = new Count();
556    parseTypeAttributes(xpp, res);
557    next(xpp);
558    int eventType = nextNoWhitespace(xpp);
559    while (eventType != XmlPullParser.END_TAG) {
560  if (!parseCountContent(eventType, xpp, res))
561        unknownContent(xpp);
562      eventType = nextNoWhitespace(xpp);
563    }
564    next(xpp);
565    parseElementClose(res);
566    return res;
567  }
568
569  protected boolean parseCountContent(int eventType, XmlPullParser xpp, Count res) throws XmlPullParserException, IOException, FHIRFormatError {
570      if (!parseQuantityContent(eventType, xpp, res))
571        return false;
572    return true;
573  }
574
575  protected Range parseRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
576    Range res = new Range();
577    parseTypeAttributes(xpp, res);
578    next(xpp);
579    int eventType = nextNoWhitespace(xpp);
580    while (eventType != XmlPullParser.END_TAG) {
581  if (!parseRangeContent(eventType, xpp, res))
582        unknownContent(xpp);
583      eventType = nextNoWhitespace(xpp);
584    }
585    next(xpp);
586    parseElementClose(res);
587    return res;
588  }
589
590  protected boolean parseRangeContent(int eventType, XmlPullParser xpp, Range res) throws XmlPullParserException, IOException, FHIRFormatError {
591      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
592        res.setLow(parseSimpleQuantity(xpp));
593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
594        res.setHigh(parseSimpleQuantity(xpp));
595      } else if (!parseElementContent(eventType, xpp, res))
596        return false;
597    return true;
598  }
599
600  protected Annotation parseAnnotation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
601    Annotation res = new Annotation();
602    parseTypeAttributes(xpp, res);
603    next(xpp);
604    int eventType = nextNoWhitespace(xpp);
605    while (eventType != XmlPullParser.END_TAG) {
606  if (!parseAnnotationContent(eventType, xpp, res))
607        unknownContent(xpp);
608      eventType = nextNoWhitespace(xpp);
609    }
610    next(xpp);
611    parseElementClose(res);
612    return res;
613  }
614
615  protected boolean parseAnnotationContent(int eventType, XmlPullParser xpp, Annotation res) throws XmlPullParserException, IOException, FHIRFormatError {
616      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "author")) {
617        res.setAuthor(parseType("author", xpp));
618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
619        res.setTimeElement(parseDateTime(xpp));
620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
621        res.setTextElement(parseString(xpp));
622      } else if (!parseElementContent(eventType, xpp, res))
623        return false;
624    return true;
625  }
626
627  protected Money parseMoney(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
628    Money res = new Money();
629    parseTypeAttributes(xpp, res);
630    next(xpp);
631    int eventType = nextNoWhitespace(xpp);
632    while (eventType != XmlPullParser.END_TAG) {
633  if (!parseMoneyContent(eventType, xpp, res))
634        unknownContent(xpp);
635      eventType = nextNoWhitespace(xpp);
636    }
637    next(xpp);
638    parseElementClose(res);
639    return res;
640  }
641
642  protected boolean parseMoneyContent(int eventType, XmlPullParser xpp, Money res) throws XmlPullParserException, IOException, FHIRFormatError {
643      if (!parseQuantityContent(eventType, xpp, res))
644        return false;
645    return true;
646  }
647
648  protected Identifier parseIdentifier(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
649    Identifier res = new Identifier();
650    parseTypeAttributes(xpp, res);
651    next(xpp);
652    int eventType = nextNoWhitespace(xpp);
653    while (eventType != XmlPullParser.END_TAG) {
654  if (!parseIdentifierContent(eventType, xpp, res))
655        unknownContent(xpp);
656      eventType = nextNoWhitespace(xpp);
657    }
658    next(xpp);
659    parseElementClose(res);
660    return res;
661  }
662
663  protected boolean parseIdentifierContent(int eventType, XmlPullParser xpp, Identifier res) throws XmlPullParserException, IOException, FHIRFormatError {
664      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
665        res.setUseElement(parseEnumeration(xpp, Identifier.IdentifierUse.NULL, new Identifier.IdentifierUseEnumFactory()));
666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
667        res.setType(parseCodeableConcept(xpp));
668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
669        res.setSystemElement(parseUri(xpp));
670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
671        res.setValueElement(parseString(xpp));
672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
673        res.setPeriod(parsePeriod(xpp));
674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assigner")) {
675        res.setAssigner(parseReference(xpp));
676      } else if (!parseElementContent(eventType, xpp, res))
677        return false;
678    return true;
679  }
680
681  protected Coding parseCoding(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
682    Coding res = new Coding();
683    parseTypeAttributes(xpp, res);
684    next(xpp);
685    int eventType = nextNoWhitespace(xpp);
686    while (eventType != XmlPullParser.END_TAG) {
687  if (!parseCodingContent(eventType, xpp, res))
688        unknownContent(xpp);
689      eventType = nextNoWhitespace(xpp);
690    }
691    next(xpp);
692    parseElementClose(res);
693    return res;
694  }
695
696  protected boolean parseCodingContent(int eventType, XmlPullParser xpp, Coding res) throws XmlPullParserException, IOException, FHIRFormatError {
697      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
698        res.setSystemElement(parseUri(xpp));
699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
700        res.setVersionElement(parseString(xpp));
701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
702        res.setCodeElement(parseCode(xpp));
703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
704        res.setDisplayElement(parseString(xpp));
705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userSelected")) {
706        res.setUserSelectedElement(parseBoolean(xpp));
707      } else if (!parseElementContent(eventType, xpp, res))
708        return false;
709    return true;
710  }
711
712  protected Signature parseSignature(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
713    Signature res = new Signature();
714    parseTypeAttributes(xpp, res);
715    next(xpp);
716    int eventType = nextNoWhitespace(xpp);
717    while (eventType != XmlPullParser.END_TAG) {
718  if (!parseSignatureContent(eventType, xpp, res))
719        unknownContent(xpp);
720      eventType = nextNoWhitespace(xpp);
721    }
722    next(xpp);
723    parseElementClose(res);
724    return res;
725  }
726
727  protected boolean parseSignatureContent(int eventType, XmlPullParser xpp, Signature res) throws XmlPullParserException, IOException, FHIRFormatError {
728      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
729        res.getType().add(parseCoding(xpp));
730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
731        res.setWhenElement(parseInstant(xpp));
732      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "who")) {
733        res.setWho(parseType("who", xpp));
734      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onBehalfOf")) {
735        res.setOnBehalfOf(parseType("onBehalfOf", xpp));
736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
737        res.setContentTypeElement(parseCode(xpp));
738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("blob")) {
739        res.setBlobElement(parseBase64Binary(xpp));
740      } else if (!parseElementContent(eventType, xpp, res))
741        return false;
742    return true;
743  }
744
745  protected SampledData parseSampledData(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
746    SampledData res = new SampledData();
747    parseTypeAttributes(xpp, res);
748    next(xpp);
749    int eventType = nextNoWhitespace(xpp);
750    while (eventType != XmlPullParser.END_TAG) {
751  if (!parseSampledDataContent(eventType, xpp, res))
752        unknownContent(xpp);
753      eventType = nextNoWhitespace(xpp);
754    }
755    next(xpp);
756    parseElementClose(res);
757    return res;
758  }
759
760  protected boolean parseSampledDataContent(int eventType, XmlPullParser xpp, SampledData res) throws XmlPullParserException, IOException, FHIRFormatError {
761      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
762        res.setOrigin(parseSimpleQuantity(xpp));
763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
764        res.setPeriodElement(parseDecimal(xpp));
765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
766        res.setFactorElement(parseDecimal(xpp));
767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowerLimit")) {
768        res.setLowerLimitElement(parseDecimal(xpp));
769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("upperLimit")) {
770        res.setUpperLimitElement(parseDecimal(xpp));
771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dimensions")) {
772        res.setDimensionsElement(parsePositiveInt(xpp));
773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
774        res.setDataElement(parseString(xpp));
775      } else if (!parseElementContent(eventType, xpp, res))
776        return false;
777    return true;
778  }
779
780  protected Ratio parseRatio(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
781    Ratio res = new Ratio();
782    parseTypeAttributes(xpp, res);
783    next(xpp);
784    int eventType = nextNoWhitespace(xpp);
785    while (eventType != XmlPullParser.END_TAG) {
786  if (!parseRatioContent(eventType, xpp, res))
787        unknownContent(xpp);
788      eventType = nextNoWhitespace(xpp);
789    }
790    next(xpp);
791    parseElementClose(res);
792    return res;
793  }
794
795  protected boolean parseRatioContent(int eventType, XmlPullParser xpp, Ratio res) throws XmlPullParserException, IOException, FHIRFormatError {
796      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numerator")) {
797        res.setNumerator(parseQuantity(xpp));
798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
799        res.setDenominator(parseQuantity(xpp));
800      } else if (!parseElementContent(eventType, xpp, res))
801        return false;
802    return true;
803  }
804
805  protected Distance parseDistance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
806    Distance res = new Distance();
807    parseTypeAttributes(xpp, res);
808    next(xpp);
809    int eventType = nextNoWhitespace(xpp);
810    while (eventType != XmlPullParser.END_TAG) {
811  if (!parseDistanceContent(eventType, xpp, res))
812        unknownContent(xpp);
813      eventType = nextNoWhitespace(xpp);
814    }
815    next(xpp);
816    parseElementClose(res);
817    return res;
818  }
819
820  protected boolean parseDistanceContent(int eventType, XmlPullParser xpp, Distance res) throws XmlPullParserException, IOException, FHIRFormatError {
821      if (!parseQuantityContent(eventType, xpp, res))
822        return false;
823    return true;
824  }
825
826  protected Age parseAge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
827    Age res = new Age();
828    parseTypeAttributes(xpp, res);
829    next(xpp);
830    int eventType = nextNoWhitespace(xpp);
831    while (eventType != XmlPullParser.END_TAG) {
832  if (!parseAgeContent(eventType, xpp, res))
833        unknownContent(xpp);
834      eventType = nextNoWhitespace(xpp);
835    }
836    next(xpp);
837    parseElementClose(res);
838    return res;
839  }
840
841  protected boolean parseAgeContent(int eventType, XmlPullParser xpp, Age res) throws XmlPullParserException, IOException, FHIRFormatError {
842      if (!parseQuantityContent(eventType, xpp, res))
843        return false;
844    return true;
845  }
846
847  protected CodeableConcept parseCodeableConcept(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
848    CodeableConcept res = new CodeableConcept();
849    parseTypeAttributes(xpp, res);
850    next(xpp);
851    int eventType = nextNoWhitespace(xpp);
852    while (eventType != XmlPullParser.END_TAG) {
853  if (!parseCodeableConceptContent(eventType, xpp, res))
854        unknownContent(xpp);
855      eventType = nextNoWhitespace(xpp);
856    }
857    next(xpp);
858    parseElementClose(res);
859    return res;
860  }
861
862  protected boolean parseCodeableConceptContent(int eventType, XmlPullParser xpp, CodeableConcept res) throws XmlPullParserException, IOException, FHIRFormatError {
863      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coding")) {
864        res.getCoding().add(parseCoding(xpp));
865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
866        res.setTextElement(parseString(xpp));
867      } else if (!parseElementContent(eventType, xpp, res))
868        return false;
869    return true;
870  }
871
872  protected SimpleQuantity parseSimpleQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
873    SimpleQuantity res = new SimpleQuantity();
874    parseElementAttributes(xpp, res);
875    next(xpp);
876    int eventType = nextNoWhitespace(xpp);
877    while (eventType != XmlPullParser.END_TAG) {
878  if (!parseSimpleQuantityContent(eventType, xpp, res))
879        unknownContent(xpp);
880      eventType = nextNoWhitespace(xpp);
881    }
882    next(xpp);
883    parseElementClose(res);
884    return res;
885  }
886
887  protected boolean parseSimpleQuantityContent(int eventType, XmlPullParser xpp, SimpleQuantity res) throws XmlPullParserException, IOException, FHIRFormatError {
888      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
889        res.setValueElement(parseDecimal(xpp));
890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
891        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
893        res.setUnitElement(parseString(xpp));
894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
895        res.setSystemElement(parseUri(xpp));
896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
897        res.setCodeElement(parseCode(xpp));
898      } else if (!parseElementContent(eventType, xpp, res))
899        return false;
900    return true;
901  }
902
903  protected Meta parseMeta(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
904    Meta res = new Meta();
905    parseElementAttributes(xpp, res);
906    next(xpp);
907    int eventType = nextNoWhitespace(xpp);
908    while (eventType != XmlPullParser.END_TAG) {
909  if (!parseMetaContent(eventType, xpp, res))
910        unknownContent(xpp);
911      eventType = nextNoWhitespace(xpp);
912    }
913    next(xpp);
914    parseElementClose(res);
915    return res;
916  }
917
918  protected boolean parseMetaContent(int eventType, XmlPullParser xpp, Meta res) throws XmlPullParserException, IOException, FHIRFormatError {
919      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
920        res.setVersionIdElement(parseId(xpp));
921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
922        res.setLastUpdatedElement(parseInstant(xpp));
923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
924        res.getProfile().add(parseUri(xpp));
925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
926        res.getSecurity().add(parseCoding(xpp));
927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
928        res.getTag().add(parseCoding(xpp));
929      } else if (!parseElementContent(eventType, xpp, res))
930        return false;
931    return true;
932  }
933
934  protected Address parseAddress(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
935    Address res = new Address();
936    parseElementAttributes(xpp, res);
937    next(xpp);
938    int eventType = nextNoWhitespace(xpp);
939    while (eventType != XmlPullParser.END_TAG) {
940  if (!parseAddressContent(eventType, xpp, res))
941        unknownContent(xpp);
942      eventType = nextNoWhitespace(xpp);
943    }
944    next(xpp);
945    parseElementClose(res);
946    return res;
947  }
948
949  protected boolean parseAddressContent(int eventType, XmlPullParser xpp, Address res) throws XmlPullParserException, IOException, FHIRFormatError {
950      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
951        res.setUseElement(parseEnumeration(xpp, Address.AddressUse.NULL, new Address.AddressUseEnumFactory()));
952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
953        res.setTypeElement(parseEnumeration(xpp, Address.AddressType.NULL, new Address.AddressTypeEnumFactory()));
954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
955        res.setTextElement(parseString(xpp));
956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("line")) {
957        res.getLine().add(parseString(xpp));
958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("city")) {
959        res.setCityElement(parseString(xpp));
960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("district")) {
961        res.setDistrictElement(parseString(xpp));
962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
963        res.setStateElement(parseString(xpp));
964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postalCode")) {
965        res.setPostalCodeElement(parseString(xpp));
966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
967        res.setCountryElement(parseString(xpp));
968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
969        res.setPeriod(parsePeriod(xpp));
970      } else if (!parseElementContent(eventType, xpp, res))
971        return false;
972    return true;
973  }
974
975  protected TriggerDefinition parseTriggerDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
976    TriggerDefinition res = new TriggerDefinition();
977    parseElementAttributes(xpp, res);
978    next(xpp);
979    int eventType = nextNoWhitespace(xpp);
980    while (eventType != XmlPullParser.END_TAG) {
981  if (!parseTriggerDefinitionContent(eventType, xpp, res))
982        unknownContent(xpp);
983      eventType = nextNoWhitespace(xpp);
984    }
985    next(xpp);
986    parseElementClose(res);
987    return res;
988  }
989
990  protected boolean parseTriggerDefinitionContent(int eventType, XmlPullParser xpp, TriggerDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
991      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
992        res.setTypeElement(parseEnumeration(xpp, TriggerDefinition.TriggerType.NULL, new TriggerDefinition.TriggerTypeEnumFactory()));
993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventName")) {
994        res.setEventNameElement(parseString(xpp));
995      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "eventTiming")) {
996        res.setEventTiming(parseType("eventTiming", xpp));
997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventData")) {
998        res.setEventData(parseDataRequirement(xpp));
999      } else if (!parseElementContent(eventType, xpp, res))
1000        return false;
1001    return true;
1002  }
1003
1004  protected Contributor parseContributor(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1005    Contributor res = new Contributor();
1006    parseElementAttributes(xpp, res);
1007    next(xpp);
1008    int eventType = nextNoWhitespace(xpp);
1009    while (eventType != XmlPullParser.END_TAG) {
1010  if (!parseContributorContent(eventType, xpp, res))
1011        unknownContent(xpp);
1012      eventType = nextNoWhitespace(xpp);
1013    }
1014    next(xpp);
1015    parseElementClose(res);
1016    return res;
1017  }
1018
1019  protected boolean parseContributorContent(int eventType, XmlPullParser xpp, Contributor res) throws XmlPullParserException, IOException, FHIRFormatError {
1020      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1021        res.setTypeElement(parseEnumeration(xpp, Contributor.ContributorType.NULL, new Contributor.ContributorTypeEnumFactory()));
1022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1023        res.setNameElement(parseString(xpp));
1024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
1025        res.getContact().add(parseContactDetail(xpp));
1026      } else if (!parseElementContent(eventType, xpp, res))
1027        return false;
1028    return true;
1029  }
1030
1031  protected DataRequirement parseDataRequirement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1032    DataRequirement res = new DataRequirement();
1033    parseElementAttributes(xpp, res);
1034    next(xpp);
1035    int eventType = nextNoWhitespace(xpp);
1036    while (eventType != XmlPullParser.END_TAG) {
1037  if (!parseDataRequirementContent(eventType, xpp, res))
1038        unknownContent(xpp);
1039      eventType = nextNoWhitespace(xpp);
1040    }
1041    next(xpp);
1042    parseElementClose(res);
1043    return res;
1044  }
1045
1046  protected boolean parseDataRequirementContent(int eventType, XmlPullParser xpp, DataRequirement res) throws XmlPullParserException, IOException, FHIRFormatError {
1047      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1048        res.setTypeElement(parseCode(xpp));
1049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1050        res.getProfile().add(parseUri(xpp));
1051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1052        res.getMustSupport().add(parseString(xpp));
1053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeFilter")) {
1054        res.getCodeFilter().add(parseDataRequirementDataRequirementCodeFilterComponent(xpp, res));
1055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateFilter")) {
1056        res.getDateFilter().add(parseDataRequirementDataRequirementDateFilterComponent(xpp, res));
1057      } else if (!parseElementContent(eventType, xpp, res))
1058        return false;
1059    return true;
1060  }
1061
1062  protected DataRequirement.DataRequirementCodeFilterComponent parseDataRequirementDataRequirementCodeFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
1063    DataRequirement.DataRequirementCodeFilterComponent res = new DataRequirement.DataRequirementCodeFilterComponent();
1064    parseElementAttributes(xpp, res);
1065    next(xpp);
1066    int eventType = nextNoWhitespace(xpp);
1067    while (eventType != XmlPullParser.END_TAG) {
1068  if (!parseDataRequirementDataRequirementCodeFilterComponentContent(eventType, xpp, owner, res))
1069        unknownContent(xpp);
1070      eventType = nextNoWhitespace(xpp);
1071    }
1072    next(xpp);
1073    parseElementClose(res);
1074    return res;
1075  }
1076
1077  protected boolean parseDataRequirementDataRequirementCodeFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementCodeFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1078      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1079        res.setPathElement(parseString(xpp));
1080      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
1081        res.setValueSet(parseType("valueSet", xpp));
1082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
1083        res.getValueCode().add(parseCode(xpp));
1084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCoding")) {
1085        res.getValueCoding().add(parseCoding(xpp));
1086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCodeableConcept")) {
1087        res.getValueCodeableConcept().add(parseCodeableConcept(xpp));
1088      } else if (!parseElementContent(eventType, xpp, res))
1089        return false;
1090    return true;
1091  }
1092
1093  protected DataRequirement.DataRequirementDateFilterComponent parseDataRequirementDataRequirementDateFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
1094    DataRequirement.DataRequirementDateFilterComponent res = new DataRequirement.DataRequirementDateFilterComponent();
1095    parseElementAttributes(xpp, res);
1096    next(xpp);
1097    int eventType = nextNoWhitespace(xpp);
1098    while (eventType != XmlPullParser.END_TAG) {
1099  if (!parseDataRequirementDataRequirementDateFilterComponentContent(eventType, xpp, owner, res))
1100        unknownContent(xpp);
1101      eventType = nextNoWhitespace(xpp);
1102    }
1103    next(xpp);
1104    parseElementClose(res);
1105    return res;
1106  }
1107
1108  protected boolean parseDataRequirementDataRequirementDateFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementDateFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1109      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1110        res.setPathElement(parseString(xpp));
1111      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1112        res.setValue(parseType("value", xpp));
1113      } else if (!parseElementContent(eventType, xpp, res))
1114        return false;
1115    return true;
1116  }
1117
1118  protected Dosage parseDosage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1119    Dosage res = new Dosage();
1120    parseElementAttributes(xpp, res);
1121    next(xpp);
1122    int eventType = nextNoWhitespace(xpp);
1123    while (eventType != XmlPullParser.END_TAG) {
1124  if (!parseDosageContent(eventType, xpp, res))
1125        unknownContent(xpp);
1126      eventType = nextNoWhitespace(xpp);
1127    }
1128    next(xpp);
1129    parseElementClose(res);
1130    return res;
1131  }
1132
1133  protected boolean parseDosageContent(int eventType, XmlPullParser xpp, Dosage res) throws XmlPullParserException, IOException, FHIRFormatError {
1134      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
1135        res.setSequenceElement(parseInteger(xpp));
1136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1137        res.setTextElement(parseString(xpp));
1138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstruction")) {
1139        res.getAdditionalInstruction().add(parseCodeableConcept(xpp));
1140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
1141        res.setPatientInstructionElement(parseString(xpp));
1142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
1143        res.setTiming(parseTiming(xpp));
1144      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
1145        res.setAsNeeded(parseType("asNeeded", xpp));
1146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
1147        res.setSite(parseCodeableConcept(xpp));
1148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
1149        res.setRoute(parseCodeableConcept(xpp));
1150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
1151        res.setMethod(parseCodeableConcept(xpp));
1152      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
1153        res.setDose(parseType("dose", xpp));
1154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
1155        res.setMaxDosePerPeriod(parseRatio(xpp));
1156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerAdministration")) {
1157        res.setMaxDosePerAdministration(parseSimpleQuantity(xpp));
1158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerLifetime")) {
1159        res.setMaxDosePerLifetime(parseSimpleQuantity(xpp));
1160      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
1161        res.setRate(parseType("rate", xpp));
1162      } else if (!parseElementContent(eventType, xpp, res))
1163        return false;
1164    return true;
1165  }
1166
1167  protected RelatedArtifact parseRelatedArtifact(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1168    RelatedArtifact res = new RelatedArtifact();
1169    parseElementAttributes(xpp, res);
1170    next(xpp);
1171    int eventType = nextNoWhitespace(xpp);
1172    while (eventType != XmlPullParser.END_TAG) {
1173  if (!parseRelatedArtifactContent(eventType, xpp, res))
1174        unknownContent(xpp);
1175      eventType = nextNoWhitespace(xpp);
1176    }
1177    next(xpp);
1178    parseElementClose(res);
1179    return res;
1180  }
1181
1182  protected boolean parseRelatedArtifactContent(int eventType, XmlPullParser xpp, RelatedArtifact res) throws XmlPullParserException, IOException, FHIRFormatError {
1183      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1184        res.setTypeElement(parseEnumeration(xpp, RelatedArtifact.RelatedArtifactType.NULL, new RelatedArtifact.RelatedArtifactTypeEnumFactory()));
1185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1186        res.setDisplayElement(parseString(xpp));
1187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citation")) {
1188        res.setCitationElement(parseString(xpp));
1189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1190        res.setUrlElement(parseUri(xpp));
1191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
1192        res.setDocument(parseAttachment(xpp));
1193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1194        res.setResource(parseReference(xpp));
1195      } else if (!parseElementContent(eventType, xpp, res))
1196        return false;
1197    return true;
1198  }
1199
1200  protected ContactDetail parseContactDetail(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1201    ContactDetail res = new ContactDetail();
1202    parseElementAttributes(xpp, res);
1203    next(xpp);
1204    int eventType = nextNoWhitespace(xpp);
1205    while (eventType != XmlPullParser.END_TAG) {
1206  if (!parseContactDetailContent(eventType, xpp, res))
1207        unknownContent(xpp);
1208      eventType = nextNoWhitespace(xpp);
1209    }
1210    next(xpp);
1211    parseElementClose(res);
1212    return res;
1213  }
1214
1215  protected boolean parseContactDetailContent(int eventType, XmlPullParser xpp, ContactDetail res) throws XmlPullParserException, IOException, FHIRFormatError {
1216      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1217        res.setNameElement(parseString(xpp));
1218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
1219        res.getTelecom().add(parseContactPoint(xpp));
1220      } else if (!parseElementContent(eventType, xpp, res))
1221        return false;
1222    return true;
1223  }
1224
1225  protected HumanName parseHumanName(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1226    HumanName res = new HumanName();
1227    parseElementAttributes(xpp, res);
1228    next(xpp);
1229    int eventType = nextNoWhitespace(xpp);
1230    while (eventType != XmlPullParser.END_TAG) {
1231  if (!parseHumanNameContent(eventType, xpp, res))
1232        unknownContent(xpp);
1233      eventType = nextNoWhitespace(xpp);
1234    }
1235    next(xpp);
1236    parseElementClose(res);
1237    return res;
1238  }
1239
1240  protected boolean parseHumanNameContent(int eventType, XmlPullParser xpp, HumanName res) throws XmlPullParserException, IOException, FHIRFormatError {
1241      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1242        res.setUseElement(parseEnumeration(xpp, HumanName.NameUse.NULL, new HumanName.NameUseEnumFactory()));
1243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1244        res.setTextElement(parseString(xpp));
1245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
1246        res.setFamilyElement(parseString(xpp));
1247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("given")) {
1248        res.getGiven().add(parseString(xpp));
1249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
1250        res.getPrefix().add(parseString(xpp));
1251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suffix")) {
1252        res.getSuffix().add(parseString(xpp));
1253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1254        res.setPeriod(parsePeriod(xpp));
1255      } else if (!parseElementContent(eventType, xpp, res))
1256        return false;
1257    return true;
1258  }
1259
1260  protected ContactPoint parseContactPoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1261    ContactPoint res = new ContactPoint();
1262    parseElementAttributes(xpp, res);
1263    next(xpp);
1264    int eventType = nextNoWhitespace(xpp);
1265    while (eventType != XmlPullParser.END_TAG) {
1266  if (!parseContactPointContent(eventType, xpp, res))
1267        unknownContent(xpp);
1268      eventType = nextNoWhitespace(xpp);
1269    }
1270    next(xpp);
1271    parseElementClose(res);
1272    return res;
1273  }
1274
1275  protected boolean parseContactPointContent(int eventType, XmlPullParser xpp, ContactPoint res) throws XmlPullParserException, IOException, FHIRFormatError {
1276      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1277        res.setSystemElement(parseEnumeration(xpp, ContactPoint.ContactPointSystem.NULL, new ContactPoint.ContactPointSystemEnumFactory()));
1278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1279        res.setValueElement(parseString(xpp));
1280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1281        res.setUseElement(parseEnumeration(xpp, ContactPoint.ContactPointUse.NULL, new ContactPoint.ContactPointUseEnumFactory()));
1282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
1283        res.setRankElement(parsePositiveInt(xpp));
1284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1285        res.setPeriod(parsePeriod(xpp));
1286      } else if (!parseElementContent(eventType, xpp, res))
1287        return false;
1288    return true;
1289  }
1290
1291  protected UsageContext parseUsageContext(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1292    UsageContext res = new UsageContext();
1293    parseElementAttributes(xpp, res);
1294    next(xpp);
1295    int eventType = nextNoWhitespace(xpp);
1296    while (eventType != XmlPullParser.END_TAG) {
1297  if (!parseUsageContextContent(eventType, xpp, res))
1298        unknownContent(xpp);
1299      eventType = nextNoWhitespace(xpp);
1300    }
1301    next(xpp);
1302    parseElementClose(res);
1303    return res;
1304  }
1305
1306  protected boolean parseUsageContextContent(int eventType, XmlPullParser xpp, UsageContext res) throws XmlPullParserException, IOException, FHIRFormatError {
1307      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1308        res.setCode(parseCoding(xpp));
1309      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1310        res.setValue(parseType("value", xpp));
1311      } else if (!parseElementContent(eventType, xpp, res))
1312        return false;
1313    return true;
1314  }
1315
1316  protected Timing parseTiming(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1317    Timing res = new Timing();
1318    parseElementAttributes(xpp, res);
1319    next(xpp);
1320    int eventType = nextNoWhitespace(xpp);
1321    while (eventType != XmlPullParser.END_TAG) {
1322  if (!parseTimingContent(eventType, xpp, res))
1323        unknownContent(xpp);
1324      eventType = nextNoWhitespace(xpp);
1325    }
1326    next(xpp);
1327    parseElementClose(res);
1328    return res;
1329  }
1330
1331  protected boolean parseTimingContent(int eventType, XmlPullParser xpp, Timing res) throws XmlPullParserException, IOException, FHIRFormatError {
1332      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
1333        res.getEvent().add(parseDateTime(xpp));
1334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
1335        res.setRepeat(parseTimingTimingRepeatComponent(xpp, res));
1336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1337        res.setCode(parseCodeableConcept(xpp));
1338      } else if (!parseElementContent(eventType, xpp, res))
1339        return false;
1340    return true;
1341  }
1342
1343  protected Timing.TimingRepeatComponent parseTimingTimingRepeatComponent(XmlPullParser xpp, Timing owner) throws XmlPullParserException, IOException, FHIRFormatError {
1344    Timing.TimingRepeatComponent res = new Timing.TimingRepeatComponent();
1345    parseElementAttributes(xpp, res);
1346    next(xpp);
1347    int eventType = nextNoWhitespace(xpp);
1348    while (eventType != XmlPullParser.END_TAG) {
1349  if (!parseTimingTimingRepeatComponentContent(eventType, xpp, owner, res))
1350        unknownContent(xpp);
1351      eventType = nextNoWhitespace(xpp);
1352    }
1353    next(xpp);
1354    parseElementClose(res);
1355    return res;
1356  }
1357
1358  protected boolean parseTimingTimingRepeatComponentContent(int eventType, XmlPullParser xpp, Timing owner, Timing.TimingRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1359      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bounds")) {
1360        res.setBounds(parseType("bounds", xpp));
1361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
1362        res.setCountElement(parseInteger(xpp));
1363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countMax")) {
1364        res.setCountMaxElement(parseInteger(xpp));
1365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
1366        res.setDurationElement(parseDecimal(xpp));
1367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationMax")) {
1368        res.setDurationMaxElement(parseDecimal(xpp));
1369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationUnit")) {
1370        res.setDurationUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
1372        res.setFrequencyElement(parseInteger(xpp));
1373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyMax")) {
1374        res.setFrequencyMaxElement(parseInteger(xpp));
1375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1376        res.setPeriodElement(parseDecimal(xpp));
1377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodMax")) {
1378        res.setPeriodMaxElement(parseDecimal(xpp));
1379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodUnit")) {
1380        res.setPeriodUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dayOfWeek")) {
1382        res.getDayOfWeek().add(parseEnumeration(xpp, Timing.DayOfWeek.NULL, new Timing.DayOfWeekEnumFactory()));
1383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeOfDay")) {
1384        res.getTimeOfDay().add(parseTime(xpp));
1385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1386        res.getWhen().add(parseEnumeration(xpp, Timing.EventTiming.NULL, new Timing.EventTimingEnumFactory()));
1387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
1388        res.setOffsetElement(parseUnsignedInt(xpp));
1389      } else if (!parseElementContent(eventType, xpp, res))
1390        return false;
1391    return true;
1392  }
1393
1394  protected ElementDefinition parseElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1395    ElementDefinition res = new ElementDefinition();
1396    parseElementAttributes(xpp, res);
1397    next(xpp);
1398    int eventType = nextNoWhitespace(xpp);
1399    while (eventType != XmlPullParser.END_TAG) {
1400  if (!parseElementDefinitionContent(eventType, xpp, res))
1401        unknownContent(xpp);
1402      eventType = nextNoWhitespace(xpp);
1403    }
1404    next(xpp);
1405    parseElementClose(res);
1406    return res;
1407  }
1408
1409  protected boolean parseElementDefinitionContent(int eventType, XmlPullParser xpp, ElementDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1410      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1411        res.setPathElement(parseString(xpp));
1412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
1413        res.getRepresentation().add(parseEnumeration(xpp, ElementDefinition.PropertyRepresentation.NULL, new ElementDefinition.PropertyRepresentationEnumFactory()));
1414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
1415        res.setSliceNameElement(parseString(xpp));
1416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1417        res.setLabelElement(parseString(xpp));
1418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1419        res.getCode().add(parseCoding(xpp));
1420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slicing")) {
1421        res.setSlicing(parseElementDefinitionElementDefinitionSlicingComponent(xpp, res));
1422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("short")) {
1423        res.setShortElement(parseString(xpp));
1424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
1425        res.setDefinitionElement(parseMarkdown(xpp));
1426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1427        res.setCommentElement(parseMarkdown(xpp));
1428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1429        res.setRequirementsElement(parseMarkdown(xpp));
1430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
1431        res.getAlias().add(parseString(xpp));
1432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1433        res.setMinElement(parseUnsignedInt(xpp));
1434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1435        res.setMaxElement(parseString(xpp));
1436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
1437        res.setBase(parseElementDefinitionElementDefinitionBaseComponent(xpp, res));
1438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentReference")) {
1439        res.setContentReferenceElement(parseUri(xpp));
1440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1441        res.getType().add(parseElementDefinitionTypeRefComponent(xpp, res));
1442      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
1443        res.setDefaultValue(parseType("defaultValue", xpp));
1444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaningWhenMissing")) {
1445        res.setMeaningWhenMissingElement(parseMarkdown(xpp));
1446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderMeaning")) {
1447        res.setOrderMeaningElement(parseString(xpp));
1448      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fixed")) {
1449        res.setFixed(parseType("fixed", xpp));
1450      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "pattern")) {
1451        res.setPattern(parseType("pattern", xpp));
1452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("example")) {
1453        res.getExample().add(parseElementDefinitionElementDefinitionExampleComponent(xpp, res));
1454      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minValue")) {
1455        res.setMinValue(parseType("minValue", xpp));
1456      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "maxValue")) {
1457        res.setMaxValue(parseType("maxValue", xpp));
1458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
1459        res.setMaxLengthElement(parseInteger(xpp));
1460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1461        res.getCondition().add(parseId(xpp));
1462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constraint")) {
1463        res.getConstraint().add(parseElementDefinitionElementDefinitionConstraintComponent(xpp, res));
1464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1465        res.setMustSupportElement(parseBoolean(xpp));
1466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifier")) {
1467        res.setIsModifierElement(parseBoolean(xpp));
1468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSummary")) {
1469        res.setIsSummaryElement(parseBoolean(xpp));
1470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
1471        res.setBinding(parseElementDefinitionElementDefinitionBindingComponent(xpp, res));
1472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
1473        res.getMapping().add(parseElementDefinitionElementDefinitionMappingComponent(xpp, res));
1474      } else if (!parseElementContent(eventType, xpp, res))
1475        return false;
1476    return true;
1477  }
1478
1479  protected ElementDefinition.ElementDefinitionSlicingComponent parseElementDefinitionElementDefinitionSlicingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1480    ElementDefinition.ElementDefinitionSlicingComponent res = new ElementDefinition.ElementDefinitionSlicingComponent();
1481    parseElementAttributes(xpp, res);
1482    next(xpp);
1483    int eventType = nextNoWhitespace(xpp);
1484    while (eventType != XmlPullParser.END_TAG) {
1485  if (!parseElementDefinitionElementDefinitionSlicingComponentContent(eventType, xpp, owner, res))
1486        unknownContent(xpp);
1487      eventType = nextNoWhitespace(xpp);
1488    }
1489    next(xpp);
1490    parseElementClose(res);
1491    return res;
1492  }
1493
1494  protected boolean parseElementDefinitionElementDefinitionSlicingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1495      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("discriminator")) {
1496        res.getDiscriminator().add(parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(xpp, owner));
1497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1498        res.setDescriptionElement(parseString(xpp));
1499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ordered")) {
1500        res.setOrderedElement(parseBoolean(xpp));
1501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rules")) {
1502        res.setRulesElement(parseEnumeration(xpp, ElementDefinition.SlicingRules.NULL, new ElementDefinition.SlicingRulesEnumFactory()));
1503      } else if (!parseElementContent(eventType, xpp, res))
1504        return false;
1505    return true;
1506  }
1507
1508  protected ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1509    ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res = new ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent();
1510    parseElementAttributes(xpp, res);
1511    next(xpp);
1512    int eventType = nextNoWhitespace(xpp);
1513    while (eventType != XmlPullParser.END_TAG) {
1514  if (!parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(eventType, xpp, owner, res))
1515        unknownContent(xpp);
1516      eventType = nextNoWhitespace(xpp);
1517    }
1518    next(xpp);
1519    parseElementClose(res);
1520    return res;
1521  }
1522
1523  protected boolean parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1524      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1525        res.setTypeElement(parseEnumeration(xpp, ElementDefinition.DiscriminatorType.NULL, new ElementDefinition.DiscriminatorTypeEnumFactory()));
1526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1527        res.setPathElement(parseString(xpp));
1528      } else if (!parseElementContent(eventType, xpp, res))
1529        return false;
1530    return true;
1531  }
1532
1533  protected ElementDefinition.ElementDefinitionBaseComponent parseElementDefinitionElementDefinitionBaseComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1534    ElementDefinition.ElementDefinitionBaseComponent res = new ElementDefinition.ElementDefinitionBaseComponent();
1535    parseElementAttributes(xpp, res);
1536    next(xpp);
1537    int eventType = nextNoWhitespace(xpp);
1538    while (eventType != XmlPullParser.END_TAG) {
1539  if (!parseElementDefinitionElementDefinitionBaseComponentContent(eventType, xpp, owner, res))
1540        unknownContent(xpp);
1541      eventType = nextNoWhitespace(xpp);
1542    }
1543    next(xpp);
1544    parseElementClose(res);
1545    return res;
1546  }
1547
1548  protected boolean parseElementDefinitionElementDefinitionBaseComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBaseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1549      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1550        res.setPathElement(parseString(xpp));
1551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1552        res.setMinElement(parseUnsignedInt(xpp));
1553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1554        res.setMaxElement(parseString(xpp));
1555      } else if (!parseElementContent(eventType, xpp, res))
1556        return false;
1557    return true;
1558  }
1559
1560  protected ElementDefinition.TypeRefComponent parseElementDefinitionTypeRefComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1561    ElementDefinition.TypeRefComponent res = new ElementDefinition.TypeRefComponent();
1562    parseElementAttributes(xpp, res);
1563    next(xpp);
1564    int eventType = nextNoWhitespace(xpp);
1565    while (eventType != XmlPullParser.END_TAG) {
1566  if (!parseElementDefinitionTypeRefComponentContent(eventType, xpp, owner, res))
1567        unknownContent(xpp);
1568      eventType = nextNoWhitespace(xpp);
1569    }
1570    next(xpp);
1571    parseElementClose(res);
1572    return res;
1573  }
1574
1575  protected boolean parseElementDefinitionTypeRefComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.TypeRefComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1576      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1577        res.setCodeElement(parseUri(xpp));
1578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1579        res.setProfileElement(parseUri(xpp));
1580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
1581        res.setTargetProfileElement(parseUri(xpp));
1582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregation")) {
1583        res.getAggregation().add(parseEnumeration(xpp, ElementDefinition.AggregationMode.NULL, new ElementDefinition.AggregationModeEnumFactory()));
1584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
1585        res.setVersioningElement(parseEnumeration(xpp, ElementDefinition.ReferenceVersionRules.NULL, new ElementDefinition.ReferenceVersionRulesEnumFactory()));
1586      } else if (!parseElementContent(eventType, xpp, res))
1587        return false;
1588    return true;
1589  }
1590
1591  protected ElementDefinition.ElementDefinitionExampleComponent parseElementDefinitionElementDefinitionExampleComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1592    ElementDefinition.ElementDefinitionExampleComponent res = new ElementDefinition.ElementDefinitionExampleComponent();
1593    parseElementAttributes(xpp, res);
1594    next(xpp);
1595    int eventType = nextNoWhitespace(xpp);
1596    while (eventType != XmlPullParser.END_TAG) {
1597  if (!parseElementDefinitionElementDefinitionExampleComponentContent(eventType, xpp, owner, res))
1598        unknownContent(xpp);
1599      eventType = nextNoWhitespace(xpp);
1600    }
1601    next(xpp);
1602    parseElementClose(res);
1603    return res;
1604  }
1605
1606  protected boolean parseElementDefinitionElementDefinitionExampleComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionExampleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1607      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1608        res.setLabelElement(parseString(xpp));
1609      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1610        res.setValue(parseType("value", xpp));
1611      } else if (!parseElementContent(eventType, xpp, res))
1612        return false;
1613    return true;
1614  }
1615
1616  protected ElementDefinition.ElementDefinitionConstraintComponent parseElementDefinitionElementDefinitionConstraintComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1617    ElementDefinition.ElementDefinitionConstraintComponent res = new ElementDefinition.ElementDefinitionConstraintComponent();
1618    parseElementAttributes(xpp, res);
1619    next(xpp);
1620    int eventType = nextNoWhitespace(xpp);
1621    while (eventType != XmlPullParser.END_TAG) {
1622  if (!parseElementDefinitionElementDefinitionConstraintComponentContent(eventType, xpp, owner, res))
1623        unknownContent(xpp);
1624      eventType = nextNoWhitespace(xpp);
1625    }
1626    next(xpp);
1627    parseElementClose(res);
1628    return res;
1629  }
1630
1631  protected boolean parseElementDefinitionElementDefinitionConstraintComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionConstraintComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1632      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
1633        res.setKeyElement(parseId(xpp));
1634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1635        res.setRequirementsElement(parseString(xpp));
1636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1637        res.setSeverityElement(parseEnumeration(xpp, ElementDefinition.ConstraintSeverity.NULL, new ElementDefinition.ConstraintSeverityEnumFactory()));
1638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("human")) {
1639        res.setHumanElement(parseString(xpp));
1640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1641        res.setExpressionElement(parseString(xpp));
1642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
1643        res.setXpathElement(parseString(xpp));
1644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1645        res.setSourceElement(parseUri(xpp));
1646      } else if (!parseElementContent(eventType, xpp, res))
1647        return false;
1648    return true;
1649  }
1650
1651  protected ElementDefinition.ElementDefinitionBindingComponent parseElementDefinitionElementDefinitionBindingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1652    ElementDefinition.ElementDefinitionBindingComponent res = new ElementDefinition.ElementDefinitionBindingComponent();
1653    parseElementAttributes(xpp, res);
1654    next(xpp);
1655    int eventType = nextNoWhitespace(xpp);
1656    while (eventType != XmlPullParser.END_TAG) {
1657  if (!parseElementDefinitionElementDefinitionBindingComponentContent(eventType, xpp, owner, res))
1658        unknownContent(xpp);
1659      eventType = nextNoWhitespace(xpp);
1660    }
1661    next(xpp);
1662    parseElementClose(res);
1663    return res;
1664  }
1665
1666  protected boolean parseElementDefinitionElementDefinitionBindingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1667      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
1668        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
1669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1670        res.setDescriptionElement(parseString(xpp));
1671      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
1672        res.setValueSet(parseType("valueSet", xpp));
1673      } else if (!parseElementContent(eventType, xpp, res))
1674        return false;
1675    return true;
1676  }
1677
1678  protected ElementDefinition.ElementDefinitionMappingComponent parseElementDefinitionElementDefinitionMappingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1679    ElementDefinition.ElementDefinitionMappingComponent res = new ElementDefinition.ElementDefinitionMappingComponent();
1680    parseElementAttributes(xpp, res);
1681    next(xpp);
1682    int eventType = nextNoWhitespace(xpp);
1683    while (eventType != XmlPullParser.END_TAG) {
1684  if (!parseElementDefinitionElementDefinitionMappingComponentContent(eventType, xpp, owner, res))
1685        unknownContent(xpp);
1686      eventType = nextNoWhitespace(xpp);
1687    }
1688    next(xpp);
1689    parseElementClose(res);
1690    return res;
1691  }
1692
1693  protected boolean parseElementDefinitionElementDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1694      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
1695        res.setIdentityElement(parseId(xpp));
1696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1697        res.setLanguageElement(parseCode(xpp));
1698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("map")) {
1699        res.setMapElement(parseString(xpp));
1700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1701        res.setCommentElement(parseString(xpp));
1702      } else if (!parseElementContent(eventType, xpp, res))
1703        return false;
1704    return true;
1705  }
1706
1707  protected ParameterDefinition parseParameterDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1708    ParameterDefinition res = new ParameterDefinition();
1709    parseElementAttributes(xpp, res);
1710    next(xpp);
1711    int eventType = nextNoWhitespace(xpp);
1712    while (eventType != XmlPullParser.END_TAG) {
1713  if (!parseParameterDefinitionContent(eventType, xpp, res))
1714        unknownContent(xpp);
1715      eventType = nextNoWhitespace(xpp);
1716    }
1717    next(xpp);
1718    parseElementClose(res);
1719    return res;
1720  }
1721
1722  protected boolean parseParameterDefinitionContent(int eventType, XmlPullParser xpp, ParameterDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1723      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1724        res.setNameElement(parseCode(xpp));
1725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1726        res.setUseElement(parseEnumeration(xpp, ParameterDefinition.ParameterUse.NULL, new ParameterDefinition.ParameterUseEnumFactory()));
1727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1728        res.setMinElement(parseInteger(xpp));
1729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1730        res.setMaxElement(parseString(xpp));
1731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
1732        res.setDocumentationElement(parseString(xpp));
1733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1734        res.setTypeElement(parseCode(xpp));
1735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1736        res.setProfile(parseReference(xpp));
1737      } else if (!parseElementContent(eventType, xpp, res))
1738        return false;
1739    return true;
1740  }
1741
1742  protected void parseDomainResourceAttributes(XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
1743    parseResourceAttributes(xpp, res);
1744  }
1745
1746  protected boolean parseDomainResourceContent(int eventType, XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
1747      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1748        res.setText(parseNarrative(xpp));
1749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contained")) {
1750        res.getContained().add(parseResourceContained(xpp));
1751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
1752        res.getExtension().add(parseExtension(xpp));
1753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
1754        res.getModifierExtension().add(parseExtension(xpp));
1755    } else
1756    return parseResourceContent(eventType, xpp, res);
1757    return true;
1758  }
1759
1760  protected Parameters parseParameters(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1761    Parameters res = new Parameters();
1762    parseResourceAttributes(xpp, res);
1763    next(xpp);
1764    int eventType = nextNoWhitespace(xpp);
1765    while (eventType != XmlPullParser.END_TAG) {
1766  if (!parseParametersContent(eventType, xpp, res))
1767        unknownContent(xpp);
1768      eventType = nextNoWhitespace(xpp);
1769    }
1770    next(xpp);
1771    parseElementClose(res);
1772    return res;
1773  }
1774
1775  protected boolean parseParametersContent(int eventType, XmlPullParser xpp, Parameters res) throws XmlPullParserException, IOException, FHIRFormatError {
1776      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
1777        res.getParameter().add(parseParametersParametersParameterComponent(xpp, res));
1778      } else if (!parseResourceContent(eventType, xpp, res))
1779        return false;
1780    return true;
1781  }
1782
1783  protected Parameters.ParametersParameterComponent parseParametersParametersParameterComponent(XmlPullParser xpp, Parameters owner) throws XmlPullParserException, IOException, FHIRFormatError {
1784    Parameters.ParametersParameterComponent res = new Parameters.ParametersParameterComponent();
1785    parseBackboneAttributes(xpp, res);
1786    next(xpp);
1787    int eventType = nextNoWhitespace(xpp);
1788    while (eventType != XmlPullParser.END_TAG) {
1789  if (!parseParametersParametersParameterComponentContent(eventType, xpp, owner, res))
1790        unknownContent(xpp);
1791      eventType = nextNoWhitespace(xpp);
1792    }
1793    next(xpp);
1794    parseElementClose(res);
1795    return res;
1796  }
1797
1798  protected boolean parseParametersParametersParameterComponentContent(int eventType, XmlPullParser xpp, Parameters owner, Parameters.ParametersParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1799      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1800        res.setNameElement(parseString(xpp));
1801      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1802        res.setValue(parseType("value", xpp));
1803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1804        res.setResource(parseResourceContained(xpp));
1805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
1806        res.getPart().add(parseParametersParametersParameterComponent(xpp, owner));
1807      } else if (!parseBackboneContent(eventType, xpp, res))
1808        return false;
1809    return true;
1810  }
1811
1812  protected void parseResourceAttributes(XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
1813    if (!comments.isEmpty()) {
1814      res.getFormatCommentsPre().addAll(comments);
1815      comments.clear();
1816     }
1817  }
1818
1819  protected boolean parseResourceContent(int eventType, XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
1820      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("id")) {
1821        res.setIdElement(parseId(xpp));
1822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meta")) {
1823        res.setMeta(parseMeta(xpp));
1824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicitRules")) {
1825        res.setImplicitRulesElement(parseUri(xpp));
1826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1827        res.setLanguageElement(parseCode(xpp));
1828    } else
1829        return false;
1830    return true;
1831  }
1832
1833  protected Account parseAccount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1834    Account res = new Account();
1835    parseDomainResourceAttributes(xpp, res);
1836    next(xpp);
1837    int eventType = nextNoWhitespace(xpp);
1838    while (eventType != XmlPullParser.END_TAG) {
1839  if (!parseAccountContent(eventType, xpp, res))
1840        unknownContent(xpp);
1841      eventType = nextNoWhitespace(xpp);
1842    }
1843    next(xpp);
1844    parseElementClose(res);
1845    return res;
1846  }
1847
1848  protected boolean parseAccountContent(int eventType, XmlPullParser xpp, Account res) throws XmlPullParserException, IOException, FHIRFormatError {
1849      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1850        res.getIdentifier().add(parseIdentifier(xpp));
1851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1852        res.setStatusElement(parseEnumeration(xpp, Account.AccountStatus.NULL, new Account.AccountStatusEnumFactory()));
1853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1854        res.setType(parseCodeableConcept(xpp));
1855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1856        res.setNameElement(parseString(xpp));
1857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
1858        res.setSubject(parseReference(xpp));
1859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1860        res.setPeriod(parsePeriod(xpp));
1861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
1862        res.setActive(parsePeriod(xpp));
1863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("balance")) {
1864        res.setBalance(parseMoney(xpp));
1865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
1866        res.getCoverage().add(parseAccountCoverageComponent(xpp, res));
1867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
1868        res.setOwner(parseReference(xpp));
1869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1870        res.setDescriptionElement(parseString(xpp));
1871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guarantor")) {
1872        res.getGuarantor().add(parseAccountGuarantorComponent(xpp, res));
1873      } else if (!parseDomainResourceContent(eventType, xpp, res))
1874        return false;
1875    return true;
1876  }
1877
1878  protected Account.CoverageComponent parseAccountCoverageComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
1879    Account.CoverageComponent res = new Account.CoverageComponent();
1880    parseBackboneAttributes(xpp, res);
1881    next(xpp);
1882    int eventType = nextNoWhitespace(xpp);
1883    while (eventType != XmlPullParser.END_TAG) {
1884  if (!parseAccountCoverageComponentContent(eventType, xpp, owner, res))
1885        unknownContent(xpp);
1886      eventType = nextNoWhitespace(xpp);
1887    }
1888    next(xpp);
1889    parseElementClose(res);
1890    return res;
1891  }
1892
1893  protected boolean parseAccountCoverageComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.CoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1894      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
1895        res.setCoverage(parseReference(xpp));
1896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
1897        res.setPriorityElement(parsePositiveInt(xpp));
1898      } else if (!parseBackboneContent(eventType, xpp, res))
1899        return false;
1900    return true;
1901  }
1902
1903  protected Account.GuarantorComponent parseAccountGuarantorComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
1904    Account.GuarantorComponent res = new Account.GuarantorComponent();
1905    parseBackboneAttributes(xpp, res);
1906    next(xpp);
1907    int eventType = nextNoWhitespace(xpp);
1908    while (eventType != XmlPullParser.END_TAG) {
1909  if (!parseAccountGuarantorComponentContent(eventType, xpp, owner, res))
1910        unknownContent(xpp);
1911      eventType = nextNoWhitespace(xpp);
1912    }
1913    next(xpp);
1914    parseElementClose(res);
1915    return res;
1916  }
1917
1918  protected boolean parseAccountGuarantorComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.GuarantorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1919      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
1920        res.setParty(parseReference(xpp));
1921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onHold")) {
1922        res.setOnHoldElement(parseBoolean(xpp));
1923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1924        res.setPeriod(parsePeriod(xpp));
1925      } else if (!parseBackboneContent(eventType, xpp, res))
1926        return false;
1927    return true;
1928  }
1929
1930  protected ActivityDefinition parseActivityDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1931    ActivityDefinition res = new ActivityDefinition();
1932    parseDomainResourceAttributes(xpp, res);
1933    next(xpp);
1934    int eventType = nextNoWhitespace(xpp);
1935    while (eventType != XmlPullParser.END_TAG) {
1936  if (!parseActivityDefinitionContent(eventType, xpp, res))
1937        unknownContent(xpp);
1938      eventType = nextNoWhitespace(xpp);
1939    }
1940    next(xpp);
1941    parseElementClose(res);
1942    return res;
1943  }
1944
1945  protected boolean parseActivityDefinitionContent(int eventType, XmlPullParser xpp, ActivityDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1946      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1947        res.setUrlElement(parseUri(xpp));
1948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1949        res.getIdentifier().add(parseIdentifier(xpp));
1950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
1951        res.setVersionElement(parseString(xpp));
1952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1953        res.setNameElement(parseString(xpp));
1954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
1955        res.setTitleElement(parseString(xpp));
1956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1957        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
1958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
1959        res.setExperimentalElement(parseBoolean(xpp));
1960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
1961        res.setDateElement(parseDateTime(xpp));
1962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
1963        res.setPublisherElement(parseString(xpp));
1964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1965        res.setDescriptionElement(parseMarkdown(xpp));
1966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
1967        res.setPurposeElement(parseMarkdown(xpp));
1968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
1969        res.setUsageElement(parseString(xpp));
1970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
1971        res.setApprovalDateElement(parseDate(xpp));
1972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
1973        res.setLastReviewDateElement(parseDate(xpp));
1974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
1975        res.setEffectivePeriod(parsePeriod(xpp));
1976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
1977        res.getUseContext().add(parseUsageContext(xpp));
1978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
1979        res.getJurisdiction().add(parseCodeableConcept(xpp));
1980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
1981        res.getTopic().add(parseCodeableConcept(xpp));
1982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
1983        res.getContributor().add(parseContributor(xpp));
1984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
1985        res.getContact().add(parseContactDetail(xpp));
1986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
1987        res.setCopyrightElement(parseMarkdown(xpp));
1988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
1989        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
1990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
1991        res.getLibrary().add(parseReference(xpp));
1992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
1993        res.setKindElement(parseEnumeration(xpp, ActivityDefinition.ActivityDefinitionKind.NULL, new ActivityDefinition.ActivityDefinitionKindEnumFactory()));
1994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1995        res.setCode(parseCodeableConcept(xpp));
1996      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
1997        res.setTiming(parseType("timing", xpp));
1998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
1999        res.setLocation(parseReference(xpp));
2000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2001        res.getParticipant().add(parseActivityDefinitionActivityDefinitionParticipantComponent(xpp, res));
2002      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
2003        res.setProduct(parseType("product", xpp));
2004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2005        res.setQuantity(parseSimpleQuantity(xpp));
2006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
2007        res.getDosage().add(parseDosage(xpp));
2008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
2009        res.getBodySite().add(parseCodeableConcept(xpp));
2010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
2011        res.setTransform(parseReference(xpp));
2012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
2013        res.getDynamicValue().add(parseActivityDefinitionActivityDefinitionDynamicValueComponent(xpp, res));
2014      } else if (!parseDomainResourceContent(eventType, xpp, res))
2015        return false;
2016    return true;
2017  }
2018
2019  protected ActivityDefinition.ActivityDefinitionParticipantComponent parseActivityDefinitionActivityDefinitionParticipantComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2020    ActivityDefinition.ActivityDefinitionParticipantComponent res = new ActivityDefinition.ActivityDefinitionParticipantComponent();
2021    parseBackboneAttributes(xpp, res);
2022    next(xpp);
2023    int eventType = nextNoWhitespace(xpp);
2024    while (eventType != XmlPullParser.END_TAG) {
2025  if (!parseActivityDefinitionActivityDefinitionParticipantComponentContent(eventType, xpp, owner, res))
2026        unknownContent(xpp);
2027      eventType = nextNoWhitespace(xpp);
2028    }
2029    next(xpp);
2030    parseElementClose(res);
2031    return res;
2032  }
2033
2034  protected boolean parseActivityDefinitionActivityDefinitionParticipantComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2035      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2036        res.setTypeElement(parseEnumeration(xpp, ActivityDefinition.ActivityParticipantType.NULL, new ActivityDefinition.ActivityParticipantTypeEnumFactory()));
2037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2038        res.setRole(parseCodeableConcept(xpp));
2039      } else if (!parseBackboneContent(eventType, xpp, res))
2040        return false;
2041    return true;
2042  }
2043
2044  protected ActivityDefinition.ActivityDefinitionDynamicValueComponent parseActivityDefinitionActivityDefinitionDynamicValueComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2045    ActivityDefinition.ActivityDefinitionDynamicValueComponent res = new ActivityDefinition.ActivityDefinitionDynamicValueComponent();
2046    parseBackboneAttributes(xpp, res);
2047    next(xpp);
2048    int eventType = nextNoWhitespace(xpp);
2049    while (eventType != XmlPullParser.END_TAG) {
2050  if (!parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(eventType, xpp, owner, res))
2051        unknownContent(xpp);
2052      eventType = nextNoWhitespace(xpp);
2053    }
2054    next(xpp);
2055    parseElementClose(res);
2056    return res;
2057  }
2058
2059  protected boolean parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2060      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2061        res.setDescriptionElement(parseString(xpp));
2062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
2063        res.setPathElement(parseString(xpp));
2064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
2065        res.setLanguageElement(parseString(xpp));
2066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
2067        res.setExpressionElement(parseString(xpp));
2068      } else if (!parseBackboneContent(eventType, xpp, res))
2069        return false;
2070    return true;
2071  }
2072
2073  protected AdverseEvent parseAdverseEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2074    AdverseEvent res = new AdverseEvent();
2075    parseDomainResourceAttributes(xpp, res);
2076    next(xpp);
2077    int eventType = nextNoWhitespace(xpp);
2078    while (eventType != XmlPullParser.END_TAG) {
2079  if (!parseAdverseEventContent(eventType, xpp, res))
2080        unknownContent(xpp);
2081      eventType = nextNoWhitespace(xpp);
2082    }
2083    next(xpp);
2084    parseElementClose(res);
2085    return res;
2086  }
2087
2088  protected boolean parseAdverseEventContent(int eventType, XmlPullParser xpp, AdverseEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2089      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2090        res.setIdentifier(parseIdentifier(xpp));
2091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2092        res.setCategoryElement(parseEnumeration(xpp, AdverseEvent.AdverseEventCategory.NULL, new AdverseEvent.AdverseEventCategoryEnumFactory()));
2093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2094        res.setType(parseCodeableConcept(xpp));
2095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2096        res.setSubject(parseReference(xpp));
2097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2098        res.setDateElement(parseDateTime(xpp));
2099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
2100        res.getReaction().add(parseReference(xpp));
2101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2102        res.setLocation(parseReference(xpp));
2103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriousness")) {
2104        res.setSeriousness(parseCodeableConcept(xpp));
2105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2106        res.setOutcome(parseCodeableConcept(xpp));
2107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2108        res.setRecorder(parseReference(xpp));
2109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventParticipant")) {
2110        res.setEventParticipant(parseReference(xpp));
2111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2112        res.setDescriptionElement(parseString(xpp));
2113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suspectEntity")) {
2114        res.getSuspectEntity().add(parseAdverseEventAdverseEventSuspectEntityComponent(xpp, res));
2115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectMedicalHistory")) {
2116        res.getSubjectMedicalHistory().add(parseReference(xpp));
2117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceDocument")) {
2118        res.getReferenceDocument().add(parseReference(xpp));
2119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
2120        res.getStudy().add(parseReference(xpp));
2121      } else if (!parseDomainResourceContent(eventType, xpp, res))
2122        return false;
2123    return true;
2124  }
2125
2126  protected AdverseEvent.AdverseEventSuspectEntityComponent parseAdverseEventAdverseEventSuspectEntityComponent(XmlPullParser xpp, AdverseEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2127    AdverseEvent.AdverseEventSuspectEntityComponent res = new AdverseEvent.AdverseEventSuspectEntityComponent();
2128    parseBackboneAttributes(xpp, res);
2129    next(xpp);
2130    int eventType = nextNoWhitespace(xpp);
2131    while (eventType != XmlPullParser.END_TAG) {
2132  if (!parseAdverseEventAdverseEventSuspectEntityComponentContent(eventType, xpp, owner, res))
2133        unknownContent(xpp);
2134      eventType = nextNoWhitespace(xpp);
2135    }
2136    next(xpp);
2137    parseElementClose(res);
2138    return res;
2139  }
2140
2141  protected boolean parseAdverseEventAdverseEventSuspectEntityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent owner, AdverseEvent.AdverseEventSuspectEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2142      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
2143        res.setInstance(parseReference(xpp));
2144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causality")) {
2145        res.setCausalityElement(parseEnumeration(xpp, AdverseEvent.AdverseEventCausality.NULL, new AdverseEvent.AdverseEventCausalityEnumFactory()));
2146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityAssessment")) {
2147        res.setCausalityAssessment(parseCodeableConcept(xpp));
2148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityProductRelatedness")) {
2149        res.setCausalityProductRelatednessElement(parseString(xpp));
2150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityMethod")) {
2151        res.setCausalityMethod(parseCodeableConcept(xpp));
2152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityAuthor")) {
2153        res.setCausalityAuthor(parseReference(xpp));
2154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causalityResult")) {
2155        res.setCausalityResult(parseCodeableConcept(xpp));
2156      } else if (!parseBackboneContent(eventType, xpp, res))
2157        return false;
2158    return true;
2159  }
2160
2161  protected AllergyIntolerance parseAllergyIntolerance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2162    AllergyIntolerance res = new AllergyIntolerance();
2163    parseDomainResourceAttributes(xpp, res);
2164    next(xpp);
2165    int eventType = nextNoWhitespace(xpp);
2166    while (eventType != XmlPullParser.END_TAG) {
2167  if (!parseAllergyIntoleranceContent(eventType, xpp, res))
2168        unknownContent(xpp);
2169      eventType = nextNoWhitespace(xpp);
2170    }
2171    next(xpp);
2172    parseElementClose(res);
2173    return res;
2174  }
2175
2176  protected boolean parseAllergyIntoleranceContent(int eventType, XmlPullParser xpp, AllergyIntolerance res) throws XmlPullParserException, IOException, FHIRFormatError {
2177      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2178        res.getIdentifier().add(parseIdentifier(xpp));
2179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
2180        res.setClinicalStatusElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceClinicalStatus.NULL, new AllergyIntolerance.AllergyIntoleranceClinicalStatusEnumFactory()));
2181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
2182        res.setVerificationStatusElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceVerificationStatus.NULL, new AllergyIntolerance.AllergyIntoleranceVerificationStatusEnumFactory()));
2183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2184        res.setTypeElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceType.NULL, new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory()));
2185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2186        res.getCategory().add(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCategory.NULL, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory()));
2187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticality")) {
2188        res.setCriticalityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCriticality.NULL, new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory()));
2189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2190        res.setCode(parseCodeableConcept(xpp));
2191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2192        res.setPatient(parseReference(xpp));
2193      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
2194        res.setOnset(parseType("onset", xpp));
2195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assertedDate")) {
2196        res.setAssertedDateElement(parseDateTime(xpp));
2197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2198        res.setRecorder(parseReference(xpp));
2199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
2200        res.setAsserter(parseReference(xpp));
2201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastOccurrence")) {
2202        res.setLastOccurrenceElement(parseDateTime(xpp));
2203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2204        res.getNote().add(parseAnnotation(xpp));
2205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
2206        res.getReaction().add(parseAllergyIntoleranceAllergyIntoleranceReactionComponent(xpp, res));
2207      } else if (!parseDomainResourceContent(eventType, xpp, res))
2208        return false;
2209    return true;
2210  }
2211
2212  protected AllergyIntolerance.AllergyIntoleranceReactionComponent parseAllergyIntoleranceAllergyIntoleranceReactionComponent(XmlPullParser xpp, AllergyIntolerance owner) throws XmlPullParserException, IOException, FHIRFormatError {
2213    AllergyIntolerance.AllergyIntoleranceReactionComponent res = new AllergyIntolerance.AllergyIntoleranceReactionComponent();
2214    parseBackboneAttributes(xpp, res);
2215    next(xpp);
2216    int eventType = nextNoWhitespace(xpp);
2217    while (eventType != XmlPullParser.END_TAG) {
2218  if (!parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(eventType, xpp, owner, res))
2219        unknownContent(xpp);
2220      eventType = nextNoWhitespace(xpp);
2221    }
2222    next(xpp);
2223    parseElementClose(res);
2224    return res;
2225  }
2226
2227  protected boolean parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(int eventType, XmlPullParser xpp, AllergyIntolerance owner, AllergyIntolerance.AllergyIntoleranceReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2228      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
2229        res.setSubstance(parseCodeableConcept(xpp));
2230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifestation")) {
2231        res.getManifestation().add(parseCodeableConcept(xpp));
2232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2233        res.setDescriptionElement(parseString(xpp));
2234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
2235        res.setOnsetElement(parseDateTime(xpp));
2236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2237        res.setSeverityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceSeverity.NULL, new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory()));
2238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureRoute")) {
2239        res.setExposureRoute(parseCodeableConcept(xpp));
2240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2241        res.getNote().add(parseAnnotation(xpp));
2242      } else if (!parseBackboneContent(eventType, xpp, res))
2243        return false;
2244    return true;
2245  }
2246
2247  protected Appointment parseAppointment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2248    Appointment res = new Appointment();
2249    parseDomainResourceAttributes(xpp, res);
2250    next(xpp);
2251    int eventType = nextNoWhitespace(xpp);
2252    while (eventType != XmlPullParser.END_TAG) {
2253  if (!parseAppointmentContent(eventType, xpp, res))
2254        unknownContent(xpp);
2255      eventType = nextNoWhitespace(xpp);
2256    }
2257    next(xpp);
2258    parseElementClose(res);
2259    return res;
2260  }
2261
2262  protected boolean parseAppointmentContent(int eventType, XmlPullParser xpp, Appointment res) throws XmlPullParserException, IOException, FHIRFormatError {
2263      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2264        res.getIdentifier().add(parseIdentifier(xpp));
2265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2266        res.setStatusElement(parseEnumeration(xpp, Appointment.AppointmentStatus.NULL, new Appointment.AppointmentStatusEnumFactory()));
2267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
2268        res.setServiceCategory(parseCodeableConcept(xpp));
2269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
2270        res.getServiceType().add(parseCodeableConcept(xpp));
2271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
2272        res.getSpecialty().add(parseCodeableConcept(xpp));
2273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
2274        res.setAppointmentType(parseCodeableConcept(xpp));
2275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
2276        res.getReason().add(parseCodeableConcept(xpp));
2277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
2278        res.getIndication().add(parseReference(xpp));
2279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2280        res.setPriorityElement(parseUnsignedInt(xpp));
2281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2282        res.setDescriptionElement(parseString(xpp));
2283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
2284        res.getSupportingInformation().add(parseReference(xpp));
2285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2286        res.setStartElement(parseInstant(xpp));
2287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2288        res.setEndElement(parseInstant(xpp));
2289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minutesDuration")) {
2290        res.setMinutesDurationElement(parsePositiveInt(xpp));
2291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slot")) {
2292        res.getSlot().add(parseReference(xpp));
2293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2294        res.setCreatedElement(parseDateTime(xpp));
2295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2296        res.setCommentElement(parseString(xpp));
2297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomingReferral")) {
2298        res.getIncomingReferral().add(parseReference(xpp));
2299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2300        res.getParticipant().add(parseAppointmentAppointmentParticipantComponent(xpp, res));
2301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedPeriod")) {
2302        res.getRequestedPeriod().add(parsePeriod(xpp));
2303      } else if (!parseDomainResourceContent(eventType, xpp, res))
2304        return false;
2305    return true;
2306  }
2307
2308  protected Appointment.AppointmentParticipantComponent parseAppointmentAppointmentParticipantComponent(XmlPullParser xpp, Appointment owner) throws XmlPullParserException, IOException, FHIRFormatError {
2309    Appointment.AppointmentParticipantComponent res = new Appointment.AppointmentParticipantComponent();
2310    parseBackboneAttributes(xpp, res);
2311    next(xpp);
2312    int eventType = nextNoWhitespace(xpp);
2313    while (eventType != XmlPullParser.END_TAG) {
2314  if (!parseAppointmentAppointmentParticipantComponentContent(eventType, xpp, owner, res))
2315        unknownContent(xpp);
2316      eventType = nextNoWhitespace(xpp);
2317    }
2318    next(xpp);
2319    parseElementClose(res);
2320    return res;
2321  }
2322
2323  protected boolean parseAppointmentAppointmentParticipantComponentContent(int eventType, XmlPullParser xpp, Appointment owner, Appointment.AppointmentParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2324      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2325        res.getType().add(parseCodeableConcept(xpp));
2326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2327        res.setActor(parseReference(xpp));
2328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
2329        res.setRequiredElement(parseEnumeration(xpp, Appointment.ParticipantRequired.NULL, new Appointment.ParticipantRequiredEnumFactory()));
2330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2331        res.setStatusElement(parseEnumeration(xpp, Appointment.ParticipationStatus.NULL, new Appointment.ParticipationStatusEnumFactory()));
2332      } else if (!parseBackboneContent(eventType, xpp, res))
2333        return false;
2334    return true;
2335  }
2336
2337  protected AppointmentResponse parseAppointmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2338    AppointmentResponse res = new AppointmentResponse();
2339    parseDomainResourceAttributes(xpp, res);
2340    next(xpp);
2341    int eventType = nextNoWhitespace(xpp);
2342    while (eventType != XmlPullParser.END_TAG) {
2343  if (!parseAppointmentResponseContent(eventType, xpp, res))
2344        unknownContent(xpp);
2345      eventType = nextNoWhitespace(xpp);
2346    }
2347    next(xpp);
2348    parseElementClose(res);
2349    return res;
2350  }
2351
2352  protected boolean parseAppointmentResponseContent(int eventType, XmlPullParser xpp, AppointmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
2353      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2354        res.getIdentifier().add(parseIdentifier(xpp));
2355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
2356        res.setAppointment(parseReference(xpp));
2357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2358        res.setStartElement(parseInstant(xpp));
2359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2360        res.setEndElement(parseInstant(xpp));
2361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantType")) {
2362        res.getParticipantType().add(parseCodeableConcept(xpp));
2363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2364        res.setActor(parseReference(xpp));
2365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantStatus")) {
2366        res.setParticipantStatusElement(parseEnumeration(xpp, AppointmentResponse.ParticipantStatus.NULL, new AppointmentResponse.ParticipantStatusEnumFactory()));
2367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2368        res.setCommentElement(parseString(xpp));
2369      } else if (!parseDomainResourceContent(eventType, xpp, res))
2370        return false;
2371    return true;
2372  }
2373
2374  protected AuditEvent parseAuditEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2375    AuditEvent res = new AuditEvent();
2376    parseDomainResourceAttributes(xpp, res);
2377    next(xpp);
2378    int eventType = nextNoWhitespace(xpp);
2379    while (eventType != XmlPullParser.END_TAG) {
2380  if (!parseAuditEventContent(eventType, xpp, res))
2381        unknownContent(xpp);
2382      eventType = nextNoWhitespace(xpp);
2383    }
2384    next(xpp);
2385    parseElementClose(res);
2386    return res;
2387  }
2388
2389  protected boolean parseAuditEventContent(int eventType, XmlPullParser xpp, AuditEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2390      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2391        res.setType(parseCoding(xpp));
2392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
2393        res.getSubtype().add(parseCoding(xpp));
2394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
2395        res.setActionElement(parseEnumeration(xpp, AuditEvent.AuditEventAction.NULL, new AuditEvent.AuditEventActionEnumFactory()));
2396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
2397        res.setRecordedElement(parseInstant(xpp));
2398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2399        res.setOutcomeElement(parseEnumeration(xpp, AuditEvent.AuditEventOutcome.NULL, new AuditEvent.AuditEventOutcomeEnumFactory()));
2400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeDesc")) {
2401        res.setOutcomeDescElement(parseString(xpp));
2402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfEvent")) {
2403        res.getPurposeOfEvent().add(parseCodeableConcept(xpp));
2404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
2405        res.getAgent().add(parseAuditEventAuditEventAgentComponent(xpp, res));
2406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
2407        res.setSource(parseAuditEventAuditEventSourceComponent(xpp, res));
2408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
2409        res.getEntity().add(parseAuditEventAuditEventEntityComponent(xpp, res));
2410      } else if (!parseDomainResourceContent(eventType, xpp, res))
2411        return false;
2412    return true;
2413  }
2414
2415  protected AuditEvent.AuditEventAgentComponent parseAuditEventAuditEventAgentComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2416    AuditEvent.AuditEventAgentComponent res = new AuditEvent.AuditEventAgentComponent();
2417    parseBackboneAttributes(xpp, res);
2418    next(xpp);
2419    int eventType = nextNoWhitespace(xpp);
2420    while (eventType != XmlPullParser.END_TAG) {
2421  if (!parseAuditEventAuditEventAgentComponentContent(eventType, xpp, owner, res))
2422        unknownContent(xpp);
2423      eventType = nextNoWhitespace(xpp);
2424    }
2425    next(xpp);
2426    parseElementClose(res);
2427    return res;
2428  }
2429
2430  protected boolean parseAuditEventAuditEventAgentComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2431      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2432        res.getRole().add(parseCodeableConcept(xpp));
2433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
2434        res.setReference(parseReference(xpp));
2435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userId")) {
2436        res.setUserId(parseIdentifier(xpp));
2437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altId")) {
2438        res.setAltIdElement(parseString(xpp));
2439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2440        res.setNameElement(parseString(xpp));
2441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
2442        res.setRequestorElement(parseBoolean(xpp));
2443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2444        res.setLocation(parseReference(xpp));
2445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
2446        res.getPolicy().add(parseUri(xpp));
2447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
2448        res.setMedia(parseCoding(xpp));
2449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
2450        res.setNetwork(parseAuditEventAuditEventAgentNetworkComponent(xpp, owner));
2451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfUse")) {
2452        res.getPurposeOfUse().add(parseCodeableConcept(xpp));
2453      } else if (!parseBackboneContent(eventType, xpp, res))
2454        return false;
2455    return true;
2456  }
2457
2458  protected AuditEvent.AuditEventAgentNetworkComponent parseAuditEventAuditEventAgentNetworkComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2459    AuditEvent.AuditEventAgentNetworkComponent res = new AuditEvent.AuditEventAgentNetworkComponent();
2460    parseBackboneAttributes(xpp, res);
2461    next(xpp);
2462    int eventType = nextNoWhitespace(xpp);
2463    while (eventType != XmlPullParser.END_TAG) {
2464  if (!parseAuditEventAuditEventAgentNetworkComponentContent(eventType, xpp, owner, res))
2465        unknownContent(xpp);
2466      eventType = nextNoWhitespace(xpp);
2467    }
2468    next(xpp);
2469    parseElementClose(res);
2470    return res;
2471  }
2472
2473  protected boolean parseAuditEventAuditEventAgentNetworkComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentNetworkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2474      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
2475        res.setAddressElement(parseString(xpp));
2476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2477        res.setTypeElement(parseEnumeration(xpp, AuditEvent.AuditEventAgentNetworkType.NULL, new AuditEvent.AuditEventAgentNetworkTypeEnumFactory()));
2478      } else if (!parseBackboneContent(eventType, xpp, res))
2479        return false;
2480    return true;
2481  }
2482
2483  protected AuditEvent.AuditEventSourceComponent parseAuditEventAuditEventSourceComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2484    AuditEvent.AuditEventSourceComponent res = new AuditEvent.AuditEventSourceComponent();
2485    parseBackboneAttributes(xpp, res);
2486    next(xpp);
2487    int eventType = nextNoWhitespace(xpp);
2488    while (eventType != XmlPullParser.END_TAG) {
2489  if (!parseAuditEventAuditEventSourceComponentContent(eventType, xpp, owner, res))
2490        unknownContent(xpp);
2491      eventType = nextNoWhitespace(xpp);
2492    }
2493    next(xpp);
2494    parseElementClose(res);
2495    return res;
2496  }
2497
2498  protected boolean parseAuditEventAuditEventSourceComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2499      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
2500        res.setSiteElement(parseString(xpp));
2501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2502        res.setIdentifier(parseIdentifier(xpp));
2503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2504        res.getType().add(parseCoding(xpp));
2505      } else if (!parseBackboneContent(eventType, xpp, res))
2506        return false;
2507    return true;
2508  }
2509
2510  protected AuditEvent.AuditEventEntityComponent parseAuditEventAuditEventEntityComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2511    AuditEvent.AuditEventEntityComponent res = new AuditEvent.AuditEventEntityComponent();
2512    parseBackboneAttributes(xpp, res);
2513    next(xpp);
2514    int eventType = nextNoWhitespace(xpp);
2515    while (eventType != XmlPullParser.END_TAG) {
2516  if (!parseAuditEventAuditEventEntityComponentContent(eventType, xpp, owner, res))
2517        unknownContent(xpp);
2518      eventType = nextNoWhitespace(xpp);
2519    }
2520    next(xpp);
2521    parseElementClose(res);
2522    return res;
2523  }
2524
2525  protected boolean parseAuditEventAuditEventEntityComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2526      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2527        res.setIdentifier(parseIdentifier(xpp));
2528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
2529        res.setReference(parseReference(xpp));
2530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2531        res.setType(parseCoding(xpp));
2532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2533        res.setRole(parseCoding(xpp));
2534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycle")) {
2535        res.setLifecycle(parseCoding(xpp));
2536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
2537        res.getSecurityLabel().add(parseCoding(xpp));
2538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2539        res.setNameElement(parseString(xpp));
2540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2541        res.setDescriptionElement(parseString(xpp));
2542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("query")) {
2543        res.setQueryElement(parseBase64Binary(xpp));
2544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2545        res.getDetail().add(parseAuditEventAuditEventEntityDetailComponent(xpp, owner));
2546      } else if (!parseBackboneContent(eventType, xpp, res))
2547        return false;
2548    return true;
2549  }
2550
2551  protected AuditEvent.AuditEventEntityDetailComponent parseAuditEventAuditEventEntityDetailComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2552    AuditEvent.AuditEventEntityDetailComponent res = new AuditEvent.AuditEventEntityDetailComponent();
2553    parseBackboneAttributes(xpp, res);
2554    next(xpp);
2555    int eventType = nextNoWhitespace(xpp);
2556    while (eventType != XmlPullParser.END_TAG) {
2557  if (!parseAuditEventAuditEventEntityDetailComponentContent(eventType, xpp, owner, res))
2558        unknownContent(xpp);
2559      eventType = nextNoWhitespace(xpp);
2560    }
2561    next(xpp);
2562    parseElementClose(res);
2563    return res;
2564  }
2565
2566  protected boolean parseAuditEventAuditEventEntityDetailComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2567      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2568        res.setTypeElement(parseString(xpp));
2569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2570        res.setValueElement(parseBase64Binary(xpp));
2571      } else if (!parseBackboneContent(eventType, xpp, res))
2572        return false;
2573    return true;
2574  }
2575
2576  protected Basic parseBasic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2577    Basic res = new Basic();
2578    parseDomainResourceAttributes(xpp, res);
2579    next(xpp);
2580    int eventType = nextNoWhitespace(xpp);
2581    while (eventType != XmlPullParser.END_TAG) {
2582  if (!parseBasicContent(eventType, xpp, res))
2583        unknownContent(xpp);
2584      eventType = nextNoWhitespace(xpp);
2585    }
2586    next(xpp);
2587    parseElementClose(res);
2588    return res;
2589  }
2590
2591  protected boolean parseBasicContent(int eventType, XmlPullParser xpp, Basic res) throws XmlPullParserException, IOException, FHIRFormatError {
2592      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2593        res.getIdentifier().add(parseIdentifier(xpp));
2594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2595        res.setCode(parseCodeableConcept(xpp));
2596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2597        res.setSubject(parseReference(xpp));
2598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2599        res.setCreatedElement(parseDate(xpp));
2600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2601        res.setAuthor(parseReference(xpp));
2602      } else if (!parseDomainResourceContent(eventType, xpp, res))
2603        return false;
2604    return true;
2605  }
2606
2607  protected Binary parseBinary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2608    Binary res = new Binary();
2609    parseResourceAttributes(xpp, res);
2610    next(xpp);
2611    int eventType = nextNoWhitespace(xpp);
2612    while (eventType != XmlPullParser.END_TAG) {
2613  if (!parseBinaryContent(eventType, xpp, res))
2614        unknownContent(xpp);
2615      eventType = nextNoWhitespace(xpp);
2616    }
2617    next(xpp);
2618    parseElementClose(res);
2619    return res;
2620  }
2621
2622  protected boolean parseBinaryContent(int eventType, XmlPullParser xpp, Binary res) throws XmlPullParserException, IOException, FHIRFormatError {
2623      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
2624        res.setContentTypeElement(parseCode(xpp));
2625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityContext")) {
2626        res.setSecurityContext(parseReference(xpp));
2627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
2628        res.setContentElement(parseBase64Binary(xpp));
2629      } else if (!parseResourceContent(eventType, xpp, res))
2630        return false;
2631    return true;
2632  }
2633
2634  protected BodySite parseBodySite(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2635    BodySite res = new BodySite();
2636    parseDomainResourceAttributes(xpp, res);
2637    next(xpp);
2638    int eventType = nextNoWhitespace(xpp);
2639    while (eventType != XmlPullParser.END_TAG) {
2640  if (!parseBodySiteContent(eventType, xpp, res))
2641        unknownContent(xpp);
2642      eventType = nextNoWhitespace(xpp);
2643    }
2644    next(xpp);
2645    parseElementClose(res);
2646    return res;
2647  }
2648
2649  protected boolean parseBodySiteContent(int eventType, XmlPullParser xpp, BodySite res) throws XmlPullParserException, IOException, FHIRFormatError {
2650      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2651        res.getIdentifier().add(parseIdentifier(xpp));
2652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
2653        res.setActiveElement(parseBoolean(xpp));
2654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2655        res.setCode(parseCodeableConcept(xpp));
2656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifier")) {
2657        res.getQualifier().add(parseCodeableConcept(xpp));
2658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2659        res.setDescriptionElement(parseString(xpp));
2660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
2661        res.getImage().add(parseAttachment(xpp));
2662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2663        res.setPatient(parseReference(xpp));
2664      } else if (!parseDomainResourceContent(eventType, xpp, res))
2665        return false;
2666    return true;
2667  }
2668
2669  protected Bundle parseBundle(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2670    Bundle res = new Bundle();
2671    parseResourceAttributes(xpp, res);
2672    next(xpp);
2673    int eventType = nextNoWhitespace(xpp);
2674    while (eventType != XmlPullParser.END_TAG) {
2675  if (!parseBundleContent(eventType, xpp, res))
2676        unknownContent(xpp);
2677      eventType = nextNoWhitespace(xpp);
2678    }
2679    next(xpp);
2680    parseElementClose(res);
2681    return res;
2682  }
2683
2684  protected boolean parseBundleContent(int eventType, XmlPullParser xpp, Bundle res) throws XmlPullParserException, IOException, FHIRFormatError {
2685      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2686        res.setIdentifier(parseIdentifier(xpp));
2687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2688        res.setTypeElement(parseEnumeration(xpp, Bundle.BundleType.NULL, new Bundle.BundleTypeEnumFactory()));
2689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
2690        res.setTotalElement(parseUnsignedInt(xpp));
2691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
2692        res.getLink().add(parseBundleBundleLinkComponent(xpp, res));
2693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
2694        res.getEntry().add(parseBundleBundleEntryComponent(xpp, res));
2695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
2696        res.setSignature(parseSignature(xpp));
2697      } else if (!parseResourceContent(eventType, xpp, res))
2698        return false;
2699    return true;
2700  }
2701
2702  protected Bundle.BundleLinkComponent parseBundleBundleLinkComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2703    Bundle.BundleLinkComponent res = new Bundle.BundleLinkComponent();
2704    parseBackboneAttributes(xpp, res);
2705    next(xpp);
2706    int eventType = nextNoWhitespace(xpp);
2707    while (eventType != XmlPullParser.END_TAG) {
2708  if (!parseBundleBundleLinkComponentContent(eventType, xpp, owner, res))
2709        unknownContent(xpp);
2710      eventType = nextNoWhitespace(xpp);
2711    }
2712    next(xpp);
2713    parseElementClose(res);
2714    return res;
2715  }
2716
2717  protected boolean parseBundleBundleLinkComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2718      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relation")) {
2719        res.setRelationElement(parseString(xpp));
2720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2721        res.setUrlElement(parseUri(xpp));
2722      } else if (!parseBackboneContent(eventType, xpp, res))
2723        return false;
2724    return true;
2725  }
2726
2727  protected Bundle.BundleEntryComponent parseBundleBundleEntryComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2728    Bundle.BundleEntryComponent res = new Bundle.BundleEntryComponent();
2729    parseBackboneAttributes(xpp, res);
2730    next(xpp);
2731    int eventType = nextNoWhitespace(xpp);
2732    while (eventType != XmlPullParser.END_TAG) {
2733  if (!parseBundleBundleEntryComponentContent(eventType, xpp, owner, res))
2734        unknownContent(xpp);
2735      eventType = nextNoWhitespace(xpp);
2736    }
2737    next(xpp);
2738    parseElementClose(res);
2739    return res;
2740  }
2741
2742  protected boolean parseBundleBundleEntryComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2743      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
2744        res.getLink().add(parseBundleBundleLinkComponent(xpp, owner));
2745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fullUrl")) {
2746        res.setFullUrlElement(parseUri(xpp));
2747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
2748        res.setResource(parseResourceContained(xpp));
2749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
2750        res.setSearch(parseBundleBundleEntrySearchComponent(xpp, owner));
2751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
2752        res.setRequest(parseBundleBundleEntryRequestComponent(xpp, owner));
2753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
2754        res.setResponse(parseBundleBundleEntryResponseComponent(xpp, owner));
2755      } else if (!parseBackboneContent(eventType, xpp, res))
2756        return false;
2757    return true;
2758  }
2759
2760  protected Bundle.BundleEntrySearchComponent parseBundleBundleEntrySearchComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2761    Bundle.BundleEntrySearchComponent res = new Bundle.BundleEntrySearchComponent();
2762    parseBackboneAttributes(xpp, res);
2763    next(xpp);
2764    int eventType = nextNoWhitespace(xpp);
2765    while (eventType != XmlPullParser.END_TAG) {
2766  if (!parseBundleBundleEntrySearchComponentContent(eventType, xpp, owner, res))
2767        unknownContent(xpp);
2768      eventType = nextNoWhitespace(xpp);
2769    }
2770    next(xpp);
2771    parseElementClose(res);
2772    return res;
2773  }
2774
2775  protected boolean parseBundleBundleEntrySearchComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntrySearchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2776      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
2777        res.setModeElement(parseEnumeration(xpp, Bundle.SearchEntryMode.NULL, new Bundle.SearchEntryModeEnumFactory()));
2778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
2779        res.setScoreElement(parseDecimal(xpp));
2780      } else if (!parseBackboneContent(eventType, xpp, res))
2781        return false;
2782    return true;
2783  }
2784
2785  protected Bundle.BundleEntryRequestComponent parseBundleBundleEntryRequestComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2786    Bundle.BundleEntryRequestComponent res = new Bundle.BundleEntryRequestComponent();
2787    parseBackboneAttributes(xpp, res);
2788    next(xpp);
2789    int eventType = nextNoWhitespace(xpp);
2790    while (eventType != XmlPullParser.END_TAG) {
2791  if (!parseBundleBundleEntryRequestComponentContent(eventType, xpp, owner, res))
2792        unknownContent(xpp);
2793      eventType = nextNoWhitespace(xpp);
2794    }
2795    next(xpp);
2796    parseElementClose(res);
2797    return res;
2798  }
2799
2800  protected boolean parseBundleBundleEntryRequestComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2801      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
2802        res.setMethodElement(parseEnumeration(xpp, Bundle.HTTPVerb.NULL, new Bundle.HTTPVerbEnumFactory()));
2803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2804        res.setUrlElement(parseUri(xpp));
2805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneMatch")) {
2806        res.setIfNoneMatchElement(parseString(xpp));
2807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifModifiedSince")) {
2808        res.setIfModifiedSinceElement(parseInstant(xpp));
2809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifMatch")) {
2810        res.setIfMatchElement(parseString(xpp));
2811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneExist")) {
2812        res.setIfNoneExistElement(parseString(xpp));
2813      } else if (!parseBackboneContent(eventType, xpp, res))
2814        return false;
2815    return true;
2816  }
2817
2818  protected Bundle.BundleEntryResponseComponent parseBundleBundleEntryResponseComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
2819    Bundle.BundleEntryResponseComponent res = new Bundle.BundleEntryResponseComponent();
2820    parseBackboneAttributes(xpp, res);
2821    next(xpp);
2822    int eventType = nextNoWhitespace(xpp);
2823    while (eventType != XmlPullParser.END_TAG) {
2824  if (!parseBundleBundleEntryResponseComponentContent(eventType, xpp, owner, res))
2825        unknownContent(xpp);
2826      eventType = nextNoWhitespace(xpp);
2827    }
2828    next(xpp);
2829    parseElementClose(res);
2830    return res;
2831  }
2832
2833  protected boolean parseBundleBundleEntryResponseComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2834      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2835        res.setStatusElement(parseString(xpp));
2836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2837        res.setLocationElement(parseUri(xpp));
2838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("etag")) {
2839        res.setEtagElement(parseString(xpp));
2840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
2841        res.setLastModifiedElement(parseInstant(xpp));
2842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2843        res.setOutcome(parseResourceContained(xpp));
2844      } else if (!parseBackboneContent(eventType, xpp, res))
2845        return false;
2846    return true;
2847  }
2848
2849  protected CapabilityStatement parseCapabilityStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2850    CapabilityStatement res = new CapabilityStatement();
2851    parseDomainResourceAttributes(xpp, res);
2852    next(xpp);
2853    int eventType = nextNoWhitespace(xpp);
2854    while (eventType != XmlPullParser.END_TAG) {
2855  if (!parseCapabilityStatementContent(eventType, xpp, res))
2856        unknownContent(xpp);
2857      eventType = nextNoWhitespace(xpp);
2858    }
2859    next(xpp);
2860    parseElementClose(res);
2861    return res;
2862  }
2863
2864  protected boolean parseCapabilityStatementContent(int eventType, XmlPullParser xpp, CapabilityStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
2865      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2866        res.setUrlElement(parseUri(xpp));
2867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
2868        res.setVersionElement(parseString(xpp));
2869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2870        res.setNameElement(parseString(xpp));
2871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
2872        res.setTitleElement(parseString(xpp));
2873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2874        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
2875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
2876        res.setExperimentalElement(parseBoolean(xpp));
2877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2878        res.setDateElement(parseDateTime(xpp));
2879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
2880        res.setPublisherElement(parseString(xpp));
2881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
2882        res.getContact().add(parseContactDetail(xpp));
2883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2884        res.setDescriptionElement(parseMarkdown(xpp));
2885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
2886        res.getUseContext().add(parseUsageContext(xpp));
2887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
2888        res.getJurisdiction().add(parseCodeableConcept(xpp));
2889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
2890        res.setPurposeElement(parseMarkdown(xpp));
2891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
2892        res.setCopyrightElement(parseMarkdown(xpp));
2893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
2894        res.setKindElement(parseEnumeration(xpp, CapabilityStatement.CapabilityStatementKind.NULL, new CapabilityStatement.CapabilityStatementKindEnumFactory()));
2895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
2896        res.getInstantiates().add(parseUri(xpp));
2897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
2898        res.setSoftware(parseCapabilityStatementCapabilityStatementSoftwareComponent(xpp, res));
2899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
2900        res.setImplementation(parseCapabilityStatementCapabilityStatementImplementationComponent(xpp, res));
2901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
2902        res.setFhirVersionElement(parseId(xpp));
2903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("acceptUnknown")) {
2904        res.setAcceptUnknownElement(parseEnumeration(xpp, CapabilityStatement.UnknownContentCode.NULL, new CapabilityStatement.UnknownContentCodeEnumFactory()));
2905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
2906        res.getFormat().add(parseCode(xpp));
2907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patchFormat")) {
2908        res.getPatchFormat().add(parseCode(xpp));
2909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementationGuide")) {
2910        res.getImplementationGuide().add(parseUri(xpp));
2911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
2912        res.getProfile().add(parseReference(xpp));
2913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rest")) {
2914        res.getRest().add(parseCapabilityStatementCapabilityStatementRestComponent(xpp, res));
2915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("messaging")) {
2916        res.getMessaging().add(parseCapabilityStatementCapabilityStatementMessagingComponent(xpp, res));
2917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
2918        res.getDocument().add(parseCapabilityStatementCapabilityStatementDocumentComponent(xpp, res));
2919      } else if (!parseDomainResourceContent(eventType, xpp, res))
2920        return false;
2921    return true;
2922  }
2923
2924  protected CapabilityStatement.CapabilityStatementSoftwareComponent parseCapabilityStatementCapabilityStatementSoftwareComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
2925    CapabilityStatement.CapabilityStatementSoftwareComponent res = new CapabilityStatement.CapabilityStatementSoftwareComponent();
2926    parseBackboneAttributes(xpp, res);
2927    next(xpp);
2928    int eventType = nextNoWhitespace(xpp);
2929    while (eventType != XmlPullParser.END_TAG) {
2930  if (!parseCapabilityStatementCapabilityStatementSoftwareComponentContent(eventType, xpp, owner, res))
2931        unknownContent(xpp);
2932      eventType = nextNoWhitespace(xpp);
2933    }
2934    next(xpp);
2935    parseElementClose(res);
2936    return res;
2937  }
2938
2939  protected boolean parseCapabilityStatementCapabilityStatementSoftwareComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2940      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2941        res.setNameElement(parseString(xpp));
2942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
2943        res.setVersionElement(parseString(xpp));
2944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("releaseDate")) {
2945        res.setReleaseDateElement(parseDateTime(xpp));
2946      } else if (!parseBackboneContent(eventType, xpp, res))
2947        return false;
2948    return true;
2949  }
2950
2951  protected CapabilityStatement.CapabilityStatementImplementationComponent parseCapabilityStatementCapabilityStatementImplementationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
2952    CapabilityStatement.CapabilityStatementImplementationComponent res = new CapabilityStatement.CapabilityStatementImplementationComponent();
2953    parseBackboneAttributes(xpp, res);
2954    next(xpp);
2955    int eventType = nextNoWhitespace(xpp);
2956    while (eventType != XmlPullParser.END_TAG) {
2957  if (!parseCapabilityStatementCapabilityStatementImplementationComponentContent(eventType, xpp, owner, res))
2958        unknownContent(xpp);
2959      eventType = nextNoWhitespace(xpp);
2960    }
2961    next(xpp);
2962    parseElementClose(res);
2963    return res;
2964  }
2965
2966  protected boolean parseCapabilityStatementCapabilityStatementImplementationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2967      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2968        res.setDescriptionElement(parseString(xpp));
2969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2970        res.setUrlElement(parseUri(xpp));
2971      } else if (!parseBackboneContent(eventType, xpp, res))
2972        return false;
2973    return true;
2974  }
2975
2976  protected CapabilityStatement.CapabilityStatementRestComponent parseCapabilityStatementCapabilityStatementRestComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
2977    CapabilityStatement.CapabilityStatementRestComponent res = new CapabilityStatement.CapabilityStatementRestComponent();
2978    parseBackboneAttributes(xpp, res);
2979    next(xpp);
2980    int eventType = nextNoWhitespace(xpp);
2981    while (eventType != XmlPullParser.END_TAG) {
2982  if (!parseCapabilityStatementCapabilityStatementRestComponentContent(eventType, xpp, owner, res))
2983        unknownContent(xpp);
2984      eventType = nextNoWhitespace(xpp);
2985    }
2986    next(xpp);
2987    parseElementClose(res);
2988    return res;
2989  }
2990
2991  protected boolean parseCapabilityStatementCapabilityStatementRestComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2992      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
2993        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.RestfulCapabilityMode.NULL, new CapabilityStatement.RestfulCapabilityModeEnumFactory()));
2994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
2995        res.setDocumentationElement(parseString(xpp));
2996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
2997        res.setSecurity(parseCapabilityStatementCapabilityStatementRestSecurityComponent(xpp, owner));
2998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
2999        res.getResource().add(parseCapabilityStatementCapabilityStatementRestResourceComponent(xpp, owner));
3000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3001        res.getInteraction().add(parseCapabilityStatementSystemInteractionComponent(xpp, owner));
3002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3003        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3005        res.getOperation().add(parseCapabilityStatementCapabilityStatementRestOperationComponent(xpp, owner));
3006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
3007        res.getCompartment().add(parseUri(xpp));
3008      } else if (!parseBackboneContent(eventType, xpp, res))
3009        return false;
3010    return true;
3011  }
3012
3013  protected CapabilityStatement.CapabilityStatementRestSecurityComponent parseCapabilityStatementCapabilityStatementRestSecurityComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3014    CapabilityStatement.CapabilityStatementRestSecurityComponent res = new CapabilityStatement.CapabilityStatementRestSecurityComponent();
3015    parseBackboneAttributes(xpp, res);
3016    next(xpp);
3017    int eventType = nextNoWhitespace(xpp);
3018    while (eventType != XmlPullParser.END_TAG) {
3019  if (!parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(eventType, xpp, owner, res))
3020        unknownContent(xpp);
3021      eventType = nextNoWhitespace(xpp);
3022    }
3023    next(xpp);
3024    parseElementClose(res);
3025    return res;
3026  }
3027
3028  protected boolean parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestSecurityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3029      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cors")) {
3030        res.setCorsElement(parseBoolean(xpp));
3031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3032        res.getService().add(parseCodeableConcept(xpp));
3033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3034        res.setDescriptionElement(parseString(xpp));
3035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certificate")) {
3036        res.getCertificate().add(parseCapabilityStatementCapabilityStatementRestSecurityCertificateComponent(xpp, owner));
3037      } else if (!parseBackboneContent(eventType, xpp, res))
3038        return false;
3039    return true;
3040  }
3041
3042  protected CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent parseCapabilityStatementCapabilityStatementRestSecurityCertificateComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3043    CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent res = new CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent();
3044    parseBackboneAttributes(xpp, res);
3045    next(xpp);
3046    int eventType = nextNoWhitespace(xpp);
3047    while (eventType != XmlPullParser.END_TAG) {
3048  if (!parseCapabilityStatementCapabilityStatementRestSecurityCertificateComponentContent(eventType, xpp, owner, res))
3049        unknownContent(xpp);
3050      eventType = nextNoWhitespace(xpp);
3051    }
3052    next(xpp);
3053    parseElementClose(res);
3054    return res;
3055  }
3056
3057  protected boolean parseCapabilityStatementCapabilityStatementRestSecurityCertificateComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3058      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3059        res.setTypeElement(parseCode(xpp));
3060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("blob")) {
3061        res.setBlobElement(parseBase64Binary(xpp));
3062      } else if (!parseBackboneContent(eventType, xpp, res))
3063        return false;
3064    return true;
3065  }
3066
3067  protected CapabilityStatement.CapabilityStatementRestResourceComponent parseCapabilityStatementCapabilityStatementRestResourceComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3068    CapabilityStatement.CapabilityStatementRestResourceComponent res = new CapabilityStatement.CapabilityStatementRestResourceComponent();
3069    parseBackboneAttributes(xpp, res);
3070    next(xpp);
3071    int eventType = nextNoWhitespace(xpp);
3072    while (eventType != XmlPullParser.END_TAG) {
3073  if (!parseCapabilityStatementCapabilityStatementRestResourceComponentContent(eventType, xpp, owner, res))
3074        unknownContent(xpp);
3075      eventType = nextNoWhitespace(xpp);
3076    }
3077    next(xpp);
3078    parseElementClose(res);
3079    return res;
3080  }
3081
3082  protected boolean parseCapabilityStatementCapabilityStatementRestResourceComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3083      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3084        res.setTypeElement(parseCode(xpp));
3085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3086        res.setProfile(parseReference(xpp));
3087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3088        res.setDocumentationElement(parseMarkdown(xpp));
3089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3090        res.getInteraction().add(parseCapabilityStatementResourceInteractionComponent(xpp, owner));
3091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
3092        res.setVersioningElement(parseEnumeration(xpp, CapabilityStatement.ResourceVersionPolicy.NULL, new CapabilityStatement.ResourceVersionPolicyEnumFactory()));
3093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readHistory")) {
3094        res.setReadHistoryElement(parseBoolean(xpp));
3095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("updateCreate")) {
3096        res.setUpdateCreateElement(parseBoolean(xpp));
3097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalCreate")) {
3098        res.setConditionalCreateElement(parseBoolean(xpp));
3099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalRead")) {
3100        res.setConditionalReadElement(parseEnumeration(xpp, CapabilityStatement.ConditionalReadStatus.NULL, new CapabilityStatement.ConditionalReadStatusEnumFactory()));
3101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalUpdate")) {
3102        res.setConditionalUpdateElement(parseBoolean(xpp));
3103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalDelete")) {
3104        res.setConditionalDeleteElement(parseEnumeration(xpp, CapabilityStatement.ConditionalDeleteStatus.NULL, new CapabilityStatement.ConditionalDeleteStatusEnumFactory()));
3105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencePolicy")) {
3106        res.getReferencePolicy().add(parseEnumeration(xpp, CapabilityStatement.ReferenceHandlingPolicy.NULL, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory()));
3107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchInclude")) {
3108        res.getSearchInclude().add(parseString(xpp));
3109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchRevInclude")) {
3110        res.getSearchRevInclude().add(parseString(xpp));
3111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3112        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3113      } else if (!parseBackboneContent(eventType, xpp, res))
3114        return false;
3115    return true;
3116  }
3117
3118  protected CapabilityStatement.ResourceInteractionComponent parseCapabilityStatementResourceInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3119    CapabilityStatement.ResourceInteractionComponent res = new CapabilityStatement.ResourceInteractionComponent();
3120    parseBackboneAttributes(xpp, res);
3121    next(xpp);
3122    int eventType = nextNoWhitespace(xpp);
3123    while (eventType != XmlPullParser.END_TAG) {
3124  if (!parseCapabilityStatementResourceInteractionComponentContent(eventType, xpp, owner, res))
3125        unknownContent(xpp);
3126      eventType = nextNoWhitespace(xpp);
3127    }
3128    next(xpp);
3129    parseElementClose(res);
3130    return res;
3131  }
3132
3133  protected boolean parseCapabilityStatementResourceInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.ResourceInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3134      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3135        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.TypeRestfulInteraction.NULL, new CapabilityStatement.TypeRestfulInteractionEnumFactory()));
3136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3137        res.setDocumentationElement(parseString(xpp));
3138      } else if (!parseBackboneContent(eventType, xpp, res))
3139        return false;
3140    return true;
3141  }
3142
3143  protected CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3144    CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res = new CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent();
3145    parseBackboneAttributes(xpp, res);
3146    next(xpp);
3147    int eventType = nextNoWhitespace(xpp);
3148    while (eventType != XmlPullParser.END_TAG) {
3149  if (!parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(eventType, xpp, owner, res))
3150        unknownContent(xpp);
3151      eventType = nextNoWhitespace(xpp);
3152    }
3153    next(xpp);
3154    parseElementClose(res);
3155    return res;
3156  }
3157
3158  protected boolean parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3159      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3160        res.setNameElement(parseString(xpp));
3161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3162        res.setDefinitionElement(parseUri(xpp));
3163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3164        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
3165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3166        res.setDocumentationElement(parseString(xpp));
3167      } else if (!parseBackboneContent(eventType, xpp, res))
3168        return false;
3169    return true;
3170  }
3171
3172  protected CapabilityStatement.SystemInteractionComponent parseCapabilityStatementSystemInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3173    CapabilityStatement.SystemInteractionComponent res = new CapabilityStatement.SystemInteractionComponent();
3174    parseBackboneAttributes(xpp, res);
3175    next(xpp);
3176    int eventType = nextNoWhitespace(xpp);
3177    while (eventType != XmlPullParser.END_TAG) {
3178  if (!parseCapabilityStatementSystemInteractionComponentContent(eventType, xpp, owner, res))
3179        unknownContent(xpp);
3180      eventType = nextNoWhitespace(xpp);
3181    }
3182    next(xpp);
3183    parseElementClose(res);
3184    return res;
3185  }
3186
3187  protected boolean parseCapabilityStatementSystemInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.SystemInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3188      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3189        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.SystemRestfulInteraction.NULL, new CapabilityStatement.SystemRestfulInteractionEnumFactory()));
3190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3191        res.setDocumentationElement(parseString(xpp));
3192      } else if (!parseBackboneContent(eventType, xpp, res))
3193        return false;
3194    return true;
3195  }
3196
3197  protected CapabilityStatement.CapabilityStatementRestOperationComponent parseCapabilityStatementCapabilityStatementRestOperationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3198    CapabilityStatement.CapabilityStatementRestOperationComponent res = new CapabilityStatement.CapabilityStatementRestOperationComponent();
3199    parseBackboneAttributes(xpp, res);
3200    next(xpp);
3201    int eventType = nextNoWhitespace(xpp);
3202    while (eventType != XmlPullParser.END_TAG) {
3203  if (!parseCapabilityStatementCapabilityStatementRestOperationComponentContent(eventType, xpp, owner, res))
3204        unknownContent(xpp);
3205      eventType = nextNoWhitespace(xpp);
3206    }
3207    next(xpp);
3208    parseElementClose(res);
3209    return res;
3210  }
3211
3212  protected boolean parseCapabilityStatementCapabilityStatementRestOperationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3213      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3214        res.setNameElement(parseString(xpp));
3215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3216        res.setDefinition(parseReference(xpp));
3217      } else if (!parseBackboneContent(eventType, xpp, res))
3218        return false;
3219    return true;
3220  }
3221
3222  protected CapabilityStatement.CapabilityStatementMessagingComponent parseCapabilityStatementCapabilityStatementMessagingComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3223    CapabilityStatement.CapabilityStatementMessagingComponent res = new CapabilityStatement.CapabilityStatementMessagingComponent();
3224    parseBackboneAttributes(xpp, res);
3225    next(xpp);
3226    int eventType = nextNoWhitespace(xpp);
3227    while (eventType != XmlPullParser.END_TAG) {
3228  if (!parseCapabilityStatementCapabilityStatementMessagingComponentContent(eventType, xpp, owner, res))
3229        unknownContent(xpp);
3230      eventType = nextNoWhitespace(xpp);
3231    }
3232    next(xpp);
3233    parseElementClose(res);
3234    return res;
3235  }
3236
3237  protected boolean parseCapabilityStatementCapabilityStatementMessagingComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3238      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
3239        res.getEndpoint().add(parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(xpp, owner));
3240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reliableCache")) {
3241        res.setReliableCacheElement(parseUnsignedInt(xpp));
3242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3243        res.setDocumentationElement(parseString(xpp));
3244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedMessage")) {
3245        res.getSupportedMessage().add(parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(xpp, owner));
3246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
3247        res.getEvent().add(parseCapabilityStatementCapabilityStatementMessagingEventComponent(xpp, owner));
3248      } else if (!parseBackboneContent(eventType, xpp, res))
3249        return false;
3250    return true;
3251  }
3252
3253  protected CapabilityStatement.CapabilityStatementMessagingEndpointComponent parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3254    CapabilityStatement.CapabilityStatementMessagingEndpointComponent res = new CapabilityStatement.CapabilityStatementMessagingEndpointComponent();
3255    parseBackboneAttributes(xpp, res);
3256    next(xpp);
3257    int eventType = nextNoWhitespace(xpp);
3258    while (eventType != XmlPullParser.END_TAG) {
3259  if (!parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(eventType, xpp, owner, res))
3260        unknownContent(xpp);
3261      eventType = nextNoWhitespace(xpp);
3262    }
3263    next(xpp);
3264    parseElementClose(res);
3265    return res;
3266  }
3267
3268  protected boolean parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingEndpointComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3269      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
3270        res.setProtocol(parseCoding(xpp));
3271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
3272        res.setAddressElement(parseUri(xpp));
3273      } else if (!parseBackboneContent(eventType, xpp, res))
3274        return false;
3275    return true;
3276  }
3277
3278  protected CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3279    CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res = new CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent();
3280    parseBackboneAttributes(xpp, res);
3281    next(xpp);
3282    int eventType = nextNoWhitespace(xpp);
3283    while (eventType != XmlPullParser.END_TAG) {
3284  if (!parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(eventType, xpp, owner, res))
3285        unknownContent(xpp);
3286      eventType = nextNoWhitespace(xpp);
3287    }
3288    next(xpp);
3289    parseElementClose(res);
3290    return res;
3291  }
3292
3293  protected boolean parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3294      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3295        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.EventCapabilityMode.NULL, new CapabilityStatement.EventCapabilityModeEnumFactory()));
3296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3297        res.setDefinition(parseReference(xpp));
3298      } else if (!parseBackboneContent(eventType, xpp, res))
3299        return false;
3300    return true;
3301  }
3302
3303  protected CapabilityStatement.CapabilityStatementMessagingEventComponent parseCapabilityStatementCapabilityStatementMessagingEventComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3304    CapabilityStatement.CapabilityStatementMessagingEventComponent res = new CapabilityStatement.CapabilityStatementMessagingEventComponent();
3305    parseBackboneAttributes(xpp, res);
3306    next(xpp);
3307    int eventType = nextNoWhitespace(xpp);
3308    while (eventType != XmlPullParser.END_TAG) {
3309  if (!parseCapabilityStatementCapabilityStatementMessagingEventComponentContent(eventType, xpp, owner, res))
3310        unknownContent(xpp);
3311      eventType = nextNoWhitespace(xpp);
3312    }
3313    next(xpp);
3314    parseElementClose(res);
3315    return res;
3316  }
3317
3318  protected boolean parseCapabilityStatementCapabilityStatementMessagingEventComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3319      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3320        res.setCode(parseCoding(xpp));
3321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3322        res.setCategoryElement(parseEnumeration(xpp, CapabilityStatement.MessageSignificanceCategory.NULL, new CapabilityStatement.MessageSignificanceCategoryEnumFactory()));
3323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3324        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.EventCapabilityMode.NULL, new CapabilityStatement.EventCapabilityModeEnumFactory()));
3325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
3326        res.setFocusElement(parseCode(xpp));
3327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3328        res.setRequest(parseReference(xpp));
3329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
3330        res.setResponse(parseReference(xpp));
3331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3332        res.setDocumentationElement(parseString(xpp));
3333      } else if (!parseBackboneContent(eventType, xpp, res))
3334        return false;
3335    return true;
3336  }
3337
3338  protected CapabilityStatement.CapabilityStatementDocumentComponent parseCapabilityStatementCapabilityStatementDocumentComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3339    CapabilityStatement.CapabilityStatementDocumentComponent res = new CapabilityStatement.CapabilityStatementDocumentComponent();
3340    parseBackboneAttributes(xpp, res);
3341    next(xpp);
3342    int eventType = nextNoWhitespace(xpp);
3343    while (eventType != XmlPullParser.END_TAG) {
3344  if (!parseCapabilityStatementCapabilityStatementDocumentComponentContent(eventType, xpp, owner, res))
3345        unknownContent(xpp);
3346      eventType = nextNoWhitespace(xpp);
3347    }
3348    next(xpp);
3349    parseElementClose(res);
3350    return res;
3351  }
3352
3353  protected boolean parseCapabilityStatementCapabilityStatementDocumentComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementDocumentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3354      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3355        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.DocumentMode.NULL, new CapabilityStatement.DocumentModeEnumFactory()));
3356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3357        res.setDocumentationElement(parseString(xpp));
3358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3359        res.setProfile(parseReference(xpp));
3360      } else if (!parseBackboneContent(eventType, xpp, res))
3361        return false;
3362    return true;
3363  }
3364
3365  protected CarePlan parseCarePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3366    CarePlan res = new CarePlan();
3367    parseDomainResourceAttributes(xpp, res);
3368    next(xpp);
3369    int eventType = nextNoWhitespace(xpp);
3370    while (eventType != XmlPullParser.END_TAG) {
3371  if (!parseCarePlanContent(eventType, xpp, res))
3372        unknownContent(xpp);
3373      eventType = nextNoWhitespace(xpp);
3374    }
3375    next(xpp);
3376    parseElementClose(res);
3377    return res;
3378  }
3379
3380  protected boolean parseCarePlanContent(int eventType, XmlPullParser xpp, CarePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
3381      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3382        res.getIdentifier().add(parseIdentifier(xpp));
3383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3384        res.getDefinition().add(parseReference(xpp));
3385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
3386        res.getBasedOn().add(parseReference(xpp));
3387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
3388        res.getReplaces().add(parseReference(xpp));
3389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
3390        res.getPartOf().add(parseReference(xpp));
3391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3392        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanStatus.NULL, new CarePlan.CarePlanStatusEnumFactory()));
3393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
3394        res.setIntentElement(parseEnumeration(xpp, CarePlan.CarePlanIntent.NULL, new CarePlan.CarePlanIntentEnumFactory()));
3395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3396        res.getCategory().add(parseCodeableConcept(xpp));
3397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3398        res.setTitleElement(parseString(xpp));
3399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3400        res.setDescriptionElement(parseString(xpp));
3401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3402        res.setSubject(parseReference(xpp));
3403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
3404        res.setContext(parseReference(xpp));
3405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3406        res.setPeriod(parsePeriod(xpp));
3407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
3408        res.getAuthor().add(parseReference(xpp));
3409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
3410        res.getCareTeam().add(parseReference(xpp));
3411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
3412        res.getAddresses().add(parseReference(xpp));
3413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
3414        res.getSupportingInfo().add(parseReference(xpp));
3415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3416        res.getGoal().add(parseReference(xpp));
3417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
3418        res.getActivity().add(parseCarePlanCarePlanActivityComponent(xpp, res));
3419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3420        res.getNote().add(parseAnnotation(xpp));
3421      } else if (!parseDomainResourceContent(eventType, xpp, res))
3422        return false;
3423    return true;
3424  }
3425
3426  protected CarePlan.CarePlanActivityComponent parseCarePlanCarePlanActivityComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3427    CarePlan.CarePlanActivityComponent res = new CarePlan.CarePlanActivityComponent();
3428    parseBackboneAttributes(xpp, res);
3429    next(xpp);
3430    int eventType = nextNoWhitespace(xpp);
3431    while (eventType != XmlPullParser.END_TAG) {
3432  if (!parseCarePlanCarePlanActivityComponentContent(eventType, xpp, owner, res))
3433        unknownContent(xpp);
3434      eventType = nextNoWhitespace(xpp);
3435    }
3436    next(xpp);
3437    parseElementClose(res);
3438    return res;
3439  }
3440
3441  protected boolean parseCarePlanCarePlanActivityComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3442      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCodeableConcept")) {
3443        res.getOutcomeCodeableConcept().add(parseCodeableConcept(xpp));
3444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
3445        res.getOutcomeReference().add(parseReference(xpp));
3446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progress")) {
3447        res.getProgress().add(parseAnnotation(xpp));
3448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
3449        res.setReference(parseReference(xpp));
3450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3451        res.setDetail(parseCarePlanCarePlanActivityDetailComponent(xpp, owner));
3452      } else if (!parseBackboneContent(eventType, xpp, res))
3453        return false;
3454    return true;
3455  }
3456
3457  protected CarePlan.CarePlanActivityDetailComponent parseCarePlanCarePlanActivityDetailComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3458    CarePlan.CarePlanActivityDetailComponent res = new CarePlan.CarePlanActivityDetailComponent();
3459    parseBackboneAttributes(xpp, res);
3460    next(xpp);
3461    int eventType = nextNoWhitespace(xpp);
3462    while (eventType != XmlPullParser.END_TAG) {
3463  if (!parseCarePlanCarePlanActivityDetailComponentContent(eventType, xpp, owner, res))
3464        unknownContent(xpp);
3465      eventType = nextNoWhitespace(xpp);
3466    }
3467    next(xpp);
3468    parseElementClose(res);
3469    return res;
3470  }
3471
3472  protected boolean parseCarePlanCarePlanActivityDetailComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3473      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3474        res.setCategory(parseCodeableConcept(xpp));
3475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3476        res.setDefinition(parseReference(xpp));
3477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3478        res.setCode(parseCodeableConcept(xpp));
3479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
3480        res.getReasonCode().add(parseCodeableConcept(xpp));
3481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
3482        res.getReasonReference().add(parseReference(xpp));
3483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3484        res.getGoal().add(parseReference(xpp));
3485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3486        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanActivityStatus.NULL, new CarePlan.CarePlanActivityStatusEnumFactory()));
3487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
3488        res.setStatusReasonElement(parseString(xpp));
3489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prohibited")) {
3490        res.setProhibitedElement(parseBoolean(xpp));
3491      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
3492        res.setScheduled(parseType("scheduled", xpp));
3493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3494        res.setLocation(parseReference(xpp));
3495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
3496        res.getPerformer().add(parseReference(xpp));
3497      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
3498        res.setProduct(parseType("product", xpp));
3499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dailyAmount")) {
3500        res.setDailyAmount(parseSimpleQuantity(xpp));
3501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3502        res.setQuantity(parseSimpleQuantity(xpp));
3503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3504        res.setDescriptionElement(parseString(xpp));
3505      } else if (!parseBackboneContent(eventType, xpp, res))
3506        return false;
3507    return true;
3508  }
3509
3510  protected CareTeam parseCareTeam(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3511    CareTeam res = new CareTeam();
3512    parseDomainResourceAttributes(xpp, res);
3513    next(xpp);
3514    int eventType = nextNoWhitespace(xpp);
3515    while (eventType != XmlPullParser.END_TAG) {
3516  if (!parseCareTeamContent(eventType, xpp, res))
3517        unknownContent(xpp);
3518      eventType = nextNoWhitespace(xpp);
3519    }
3520    next(xpp);
3521    parseElementClose(res);
3522    return res;
3523  }
3524
3525  protected boolean parseCareTeamContent(int eventType, XmlPullParser xpp, CareTeam res) throws XmlPullParserException, IOException, FHIRFormatError {
3526      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3527        res.getIdentifier().add(parseIdentifier(xpp));
3528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3529        res.setStatusElement(parseEnumeration(xpp, CareTeam.CareTeamStatus.NULL, new CareTeam.CareTeamStatusEnumFactory()));
3530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3531        res.getCategory().add(parseCodeableConcept(xpp));
3532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3533        res.setNameElement(parseString(xpp));
3534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3535        res.setSubject(parseReference(xpp));
3536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
3537        res.setContext(parseReference(xpp));
3538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3539        res.setPeriod(parsePeriod(xpp));
3540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
3541        res.getParticipant().add(parseCareTeamCareTeamParticipantComponent(xpp, res));
3542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
3543        res.getReasonCode().add(parseCodeableConcept(xpp));
3544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
3545        res.getReasonReference().add(parseReference(xpp));
3546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
3547        res.getManagingOrganization().add(parseReference(xpp));
3548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3549        res.getNote().add(parseAnnotation(xpp));
3550      } else if (!parseDomainResourceContent(eventType, xpp, res))
3551        return false;
3552    return true;
3553  }
3554
3555  protected CareTeam.CareTeamParticipantComponent parseCareTeamCareTeamParticipantComponent(XmlPullParser xpp, CareTeam owner) throws XmlPullParserException, IOException, FHIRFormatError {
3556    CareTeam.CareTeamParticipantComponent res = new CareTeam.CareTeamParticipantComponent();
3557    parseBackboneAttributes(xpp, res);
3558    next(xpp);
3559    int eventType = nextNoWhitespace(xpp);
3560    while (eventType != XmlPullParser.END_TAG) {
3561  if (!parseCareTeamCareTeamParticipantComponentContent(eventType, xpp, owner, res))
3562        unknownContent(xpp);
3563      eventType = nextNoWhitespace(xpp);
3564    }
3565    next(xpp);
3566    parseElementClose(res);
3567    return res;
3568  }
3569
3570  protected boolean parseCareTeamCareTeamParticipantComponentContent(int eventType, XmlPullParser xpp, CareTeam owner, CareTeam.CareTeamParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3571      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3572        res.setRole(parseCodeableConcept(xpp));
3573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
3574        res.setMember(parseReference(xpp));
3575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
3576        res.setOnBehalfOf(parseReference(xpp));
3577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3578        res.setPeriod(parsePeriod(xpp));
3579      } else if (!parseBackboneContent(eventType, xpp, res))
3580        return false;
3581    return true;
3582  }
3583
3584  protected ChargeItem parseChargeItem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3585    ChargeItem res = new ChargeItem();
3586    parseDomainResourceAttributes(xpp, res);
3587    next(xpp);
3588    int eventType = nextNoWhitespace(xpp);
3589    while (eventType != XmlPullParser.END_TAG) {
3590  if (!parseChargeItemContent(eventType, xpp, res))
3591        unknownContent(xpp);
3592      eventType = nextNoWhitespace(xpp);
3593    }
3594    next(xpp);
3595    parseElementClose(res);
3596    return res;
3597  }
3598
3599  protected boolean parseChargeItemContent(int eventType, XmlPullParser xpp, ChargeItem res) throws XmlPullParserException, IOException, FHIRFormatError {
3600      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3601        res.setIdentifier(parseIdentifier(xpp));
3602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3603        res.getDefinition().add(parseUri(xpp));
3604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3605        res.setStatusElement(parseEnumeration(xpp, ChargeItem.ChargeItemStatus.NULL, new ChargeItem.ChargeItemStatusEnumFactory()));
3606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
3607        res.getPartOf().add(parseReference(xpp));
3608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3609        res.setCode(parseCodeableConcept(xpp));
3610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3611        res.setSubject(parseReference(xpp));
3612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
3613        res.setContext(parseReference(xpp));
3614      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
3615        res.setOccurrence(parseType("occurrence", xpp));
3616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
3617        res.getParticipant().add(parseChargeItemChargeItemParticipantComponent(xpp, res));
3618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performingOrganization")) {
3619        res.setPerformingOrganization(parseReference(xpp));
3620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestingOrganization")) {
3621        res.setRequestingOrganization(parseReference(xpp));
3622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3623        res.setQuantity(parseQuantity(xpp));
3624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodysite")) {
3625        res.getBodysite().add(parseCodeableConcept(xpp));
3626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factorOverride")) {
3627        res.setFactorOverrideElement(parseDecimal(xpp));
3628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceOverride")) {
3629        res.setPriceOverride(parseMoney(xpp));
3630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overrideReason")) {
3631        res.setOverrideReasonElement(parseString(xpp));
3632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
3633        res.setEnterer(parseReference(xpp));
3634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteredDate")) {
3635        res.setEnteredDateElement(parseDateTime(xpp));
3636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
3637        res.getReason().add(parseCodeableConcept(xpp));
3638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3639        res.getService().add(parseReference(xpp));
3640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
3641        res.getAccount().add(parseReference(xpp));
3642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3643        res.getNote().add(parseAnnotation(xpp));
3644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
3645        res.getSupportingInformation().add(parseReference(xpp));
3646      } else if (!parseDomainResourceContent(eventType, xpp, res))
3647        return false;
3648    return true;
3649  }
3650
3651  protected ChargeItem.ChargeItemParticipantComponent parseChargeItemChargeItemParticipantComponent(XmlPullParser xpp, ChargeItem owner) throws XmlPullParserException, IOException, FHIRFormatError {
3652    ChargeItem.ChargeItemParticipantComponent res = new ChargeItem.ChargeItemParticipantComponent();
3653    parseBackboneAttributes(xpp, res);
3654    next(xpp);
3655    int eventType = nextNoWhitespace(xpp);
3656    while (eventType != XmlPullParser.END_TAG) {
3657  if (!parseChargeItemChargeItemParticipantComponentContent(eventType, xpp, owner, res))
3658        unknownContent(xpp);
3659      eventType = nextNoWhitespace(xpp);
3660    }
3661    next(xpp);
3662    parseElementClose(res);
3663    return res;
3664  }
3665
3666  protected boolean parseChargeItemChargeItemParticipantComponentContent(int eventType, XmlPullParser xpp, ChargeItem owner, ChargeItem.ChargeItemParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3667      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3668        res.setRole(parseCodeableConcept(xpp));
3669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
3670        res.setActor(parseReference(xpp));
3671      } else if (!parseBackboneContent(eventType, xpp, res))
3672        return false;
3673    return true;
3674  }
3675
3676  protected Claim parseClaim(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3677    Claim res = new Claim();
3678    parseDomainResourceAttributes(xpp, res);
3679    next(xpp);
3680    int eventType = nextNoWhitespace(xpp);
3681    while (eventType != XmlPullParser.END_TAG) {
3682  if (!parseClaimContent(eventType, xpp, res))
3683        unknownContent(xpp);
3684      eventType = nextNoWhitespace(xpp);
3685    }
3686    next(xpp);
3687    parseElementClose(res);
3688    return res;
3689  }
3690
3691  protected boolean parseClaimContent(int eventType, XmlPullParser xpp, Claim res) throws XmlPullParserException, IOException, FHIRFormatError {
3692      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3693        res.getIdentifier().add(parseIdentifier(xpp));
3694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3695        res.setStatusElement(parseEnumeration(xpp, Claim.ClaimStatus.NULL, new Claim.ClaimStatusEnumFactory()));
3696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3697        res.setType(parseCodeableConcept(xpp));
3698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
3699        res.getSubType().add(parseCodeableConcept(xpp));
3700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
3701        res.setUseElement(parseEnumeration(xpp, Claim.Use.NULL, new Claim.UseEnumFactory()));
3702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3703        res.setPatient(parseReference(xpp));
3704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
3705        res.setBillablePeriod(parsePeriod(xpp));
3706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
3707        res.setCreatedElement(parseDateTime(xpp));
3708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
3709        res.setEnterer(parseReference(xpp));
3710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
3711        res.setInsurer(parseReference(xpp));
3712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
3713        res.setProvider(parseReference(xpp));
3714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
3715        res.setOrganization(parseReference(xpp));
3716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
3717        res.setPriority(parseCodeableConcept(xpp));
3718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
3719        res.setFundsReserve(parseCodeableConcept(xpp));
3720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
3721        res.getRelated().add(parseClaimRelatedClaimComponent(xpp, res));
3722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
3723        res.setPrescription(parseReference(xpp));
3724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
3725        res.setOriginalPrescription(parseReference(xpp));
3726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
3727        res.setPayee(parseClaimPayeeComponent(xpp, res));
3728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
3729        res.setReferral(parseReference(xpp));
3730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
3731        res.setFacility(parseReference(xpp));
3732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
3733        res.getCareTeam().add(parseClaimCareTeamComponent(xpp, res));
3734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
3735        res.getInformation().add(parseClaimSpecialConditionComponent(xpp, res));
3736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
3737        res.getDiagnosis().add(parseClaimDiagnosisComponent(xpp, res));
3738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
3739        res.getProcedure().add(parseClaimProcedureComponent(xpp, res));
3740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
3741        res.getInsurance().add(parseClaimInsuranceComponent(xpp, res));
3742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
3743        res.setAccident(parseClaimAccidentComponent(xpp, res));
3744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("employmentImpacted")) {
3745        res.setEmploymentImpacted(parsePeriod(xpp));
3746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
3747        res.setHospitalization(parsePeriod(xpp));
3748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
3749        res.getItem().add(parseClaimItemComponent(xpp, res));
3750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
3751        res.setTotal(parseMoney(xpp));
3752      } else if (!parseDomainResourceContent(eventType, xpp, res))
3753        return false;
3754    return true;
3755  }
3756
3757  protected Claim.RelatedClaimComponent parseClaimRelatedClaimComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3758    Claim.RelatedClaimComponent res = new Claim.RelatedClaimComponent();
3759    parseBackboneAttributes(xpp, res);
3760    next(xpp);
3761    int eventType = nextNoWhitespace(xpp);
3762    while (eventType != XmlPullParser.END_TAG) {
3763  if (!parseClaimRelatedClaimComponentContent(eventType, xpp, owner, res))
3764        unknownContent(xpp);
3765      eventType = nextNoWhitespace(xpp);
3766    }
3767    next(xpp);
3768    parseElementClose(res);
3769    return res;
3770  }
3771
3772  protected boolean parseClaimRelatedClaimComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3773      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
3774        res.setClaim(parseReference(xpp));
3775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
3776        res.setRelationship(parseCodeableConcept(xpp));
3777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
3778        res.setReference(parseIdentifier(xpp));
3779      } else if (!parseBackboneContent(eventType, xpp, res))
3780        return false;
3781    return true;
3782  }
3783
3784  protected Claim.PayeeComponent parseClaimPayeeComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3785    Claim.PayeeComponent res = new Claim.PayeeComponent();
3786    parseBackboneAttributes(xpp, res);
3787    next(xpp);
3788    int eventType = nextNoWhitespace(xpp);
3789    while (eventType != XmlPullParser.END_TAG) {
3790  if (!parseClaimPayeeComponentContent(eventType, xpp, owner, res))
3791        unknownContent(xpp);
3792      eventType = nextNoWhitespace(xpp);
3793    }
3794    next(xpp);
3795    parseElementClose(res);
3796    return res;
3797  }
3798
3799  protected boolean parseClaimPayeeComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3800      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3801        res.setType(parseCodeableConcept(xpp));
3802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceType")) {
3803        res.setResourceType(parseCoding(xpp));
3804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
3805        res.setParty(parseReference(xpp));
3806      } else if (!parseBackboneContent(eventType, xpp, res))
3807        return false;
3808    return true;
3809  }
3810
3811  protected Claim.CareTeamComponent parseClaimCareTeamComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3812    Claim.CareTeamComponent res = new Claim.CareTeamComponent();
3813    parseBackboneAttributes(xpp, res);
3814    next(xpp);
3815    int eventType = nextNoWhitespace(xpp);
3816    while (eventType != XmlPullParser.END_TAG) {
3817  if (!parseClaimCareTeamComponentContent(eventType, xpp, owner, res))
3818        unknownContent(xpp);
3819      eventType = nextNoWhitespace(xpp);
3820    }
3821    next(xpp);
3822    parseElementClose(res);
3823    return res;
3824  }
3825
3826  protected boolean parseClaimCareTeamComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3827      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3828        res.setSequenceElement(parsePositiveInt(xpp));
3829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
3830        res.setProvider(parseReference(xpp));
3831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
3832        res.setResponsibleElement(parseBoolean(xpp));
3833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3834        res.setRole(parseCodeableConcept(xpp));
3835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
3836        res.setQualification(parseCodeableConcept(xpp));
3837      } else if (!parseBackboneContent(eventType, xpp, res))
3838        return false;
3839    return true;
3840  }
3841
3842  protected Claim.SpecialConditionComponent parseClaimSpecialConditionComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3843    Claim.SpecialConditionComponent res = new Claim.SpecialConditionComponent();
3844    parseBackboneAttributes(xpp, res);
3845    next(xpp);
3846    int eventType = nextNoWhitespace(xpp);
3847    while (eventType != XmlPullParser.END_TAG) {
3848  if (!parseClaimSpecialConditionComponentContent(eventType, xpp, owner, res))
3849        unknownContent(xpp);
3850      eventType = nextNoWhitespace(xpp);
3851    }
3852    next(xpp);
3853    parseElementClose(res);
3854    return res;
3855  }
3856
3857  protected boolean parseClaimSpecialConditionComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SpecialConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3858      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3859        res.setSequenceElement(parsePositiveInt(xpp));
3860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3861        res.setCategory(parseCodeableConcept(xpp));
3862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3863        res.setCode(parseCodeableConcept(xpp));
3864      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
3865        res.setTiming(parseType("timing", xpp));
3866      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
3867        res.setValue(parseType("value", xpp));
3868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
3869        res.setReason(parseCodeableConcept(xpp));
3870      } else if (!parseBackboneContent(eventType, xpp, res))
3871        return false;
3872    return true;
3873  }
3874
3875  protected Claim.DiagnosisComponent parseClaimDiagnosisComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3876    Claim.DiagnosisComponent res = new Claim.DiagnosisComponent();
3877    parseBackboneAttributes(xpp, res);
3878    next(xpp);
3879    int eventType = nextNoWhitespace(xpp);
3880    while (eventType != XmlPullParser.END_TAG) {
3881  if (!parseClaimDiagnosisComponentContent(eventType, xpp, owner, res))
3882        unknownContent(xpp);
3883      eventType = nextNoWhitespace(xpp);
3884    }
3885    next(xpp);
3886    parseElementClose(res);
3887    return res;
3888  }
3889
3890  protected boolean parseClaimDiagnosisComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3891      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3892        res.setSequenceElement(parsePositiveInt(xpp));
3893      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
3894        res.setDiagnosis(parseType("diagnosis", xpp));
3895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3896        res.getType().add(parseCodeableConcept(xpp));
3897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
3898        res.setPackageCode(parseCodeableConcept(xpp));
3899      } else if (!parseBackboneContent(eventType, xpp, res))
3900        return false;
3901    return true;
3902  }
3903
3904  protected Claim.ProcedureComponent parseClaimProcedureComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3905    Claim.ProcedureComponent res = new Claim.ProcedureComponent();
3906    parseBackboneAttributes(xpp, res);
3907    next(xpp);
3908    int eventType = nextNoWhitespace(xpp);
3909    while (eventType != XmlPullParser.END_TAG) {
3910  if (!parseClaimProcedureComponentContent(eventType, xpp, owner, res))
3911        unknownContent(xpp);
3912      eventType = nextNoWhitespace(xpp);
3913    }
3914    next(xpp);
3915    parseElementClose(res);
3916    return res;
3917  }
3918
3919  protected boolean parseClaimProcedureComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3920      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3921        res.setSequenceElement(parsePositiveInt(xpp));
3922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3923        res.setDateElement(parseDateTime(xpp));
3924      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
3925        res.setProcedure(parseType("procedure", xpp));
3926      } else if (!parseBackboneContent(eventType, xpp, res))
3927        return false;
3928    return true;
3929  }
3930
3931  protected Claim.InsuranceComponent parseClaimInsuranceComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3932    Claim.InsuranceComponent res = new Claim.InsuranceComponent();
3933    parseBackboneAttributes(xpp, res);
3934    next(xpp);
3935    int eventType = nextNoWhitespace(xpp);
3936    while (eventType != XmlPullParser.END_TAG) {
3937  if (!parseClaimInsuranceComponentContent(eventType, xpp, owner, res))
3938        unknownContent(xpp);
3939      eventType = nextNoWhitespace(xpp);
3940    }
3941    next(xpp);
3942    parseElementClose(res);
3943    return res;
3944  }
3945
3946  protected boolean parseClaimInsuranceComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3947      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
3948        res.setSequenceElement(parsePositiveInt(xpp));
3949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
3950        res.setFocalElement(parseBoolean(xpp));
3951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
3952        res.setCoverage(parseReference(xpp));
3953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
3954        res.setBusinessArrangementElement(parseString(xpp));
3955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
3956        res.getPreAuthRef().add(parseString(xpp));
3957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
3958        res.setClaimResponse(parseReference(xpp));
3959      } else if (!parseBackboneContent(eventType, xpp, res))
3960        return false;
3961    return true;
3962  }
3963
3964  protected Claim.AccidentComponent parseClaimAccidentComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3965    Claim.AccidentComponent res = new Claim.AccidentComponent();
3966    parseBackboneAttributes(xpp, res);
3967    next(xpp);
3968    int eventType = nextNoWhitespace(xpp);
3969    while (eventType != XmlPullParser.END_TAG) {
3970  if (!parseClaimAccidentComponentContent(eventType, xpp, owner, res))
3971        unknownContent(xpp);
3972      eventType = nextNoWhitespace(xpp);
3973    }
3974    next(xpp);
3975    parseElementClose(res);
3976    return res;
3977  }
3978
3979  protected boolean parseClaimAccidentComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3980      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3981        res.setDateElement(parseDate(xpp));
3982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3983        res.setType(parseCodeableConcept(xpp));
3984      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
3985        res.setLocation(parseType("location", xpp));
3986      } else if (!parseBackboneContent(eventType, xpp, res))
3987        return false;
3988    return true;
3989  }
3990
3991  protected Claim.ItemComponent parseClaimItemComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
3992    Claim.ItemComponent res = new Claim.ItemComponent();
3993    parseBackboneAttributes(xpp, res);
3994    next(xpp);
3995    int eventType = nextNoWhitespace(xpp);
3996    while (eventType != XmlPullParser.END_TAG) {
3997  if (!parseClaimItemComponentContent(eventType, xpp, owner, res))
3998        unknownContent(xpp);
3999      eventType = nextNoWhitespace(xpp);
4000    }
4001    next(xpp);
4002    parseElementClose(res);
4003    return res;
4004  }
4005
4006  protected boolean parseClaimItemComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4007      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4008        res.setSequenceElement(parsePositiveInt(xpp));
4009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamLinkId")) {
4010        res.getCareTeamLinkId().add(parsePositiveInt(xpp));
4011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisLinkId")) {
4012        res.getDiagnosisLinkId().add(parsePositiveInt(xpp));
4013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureLinkId")) {
4014        res.getProcedureLinkId().add(parsePositiveInt(xpp));
4015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationLinkId")) {
4016        res.getInformationLinkId().add(parsePositiveInt(xpp));
4017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4018        res.setRevenue(parseCodeableConcept(xpp));
4019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4020        res.setCategory(parseCodeableConcept(xpp));
4021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4022        res.setService(parseCodeableConcept(xpp));
4023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4024        res.getModifier().add(parseCodeableConcept(xpp));
4025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4026        res.getProgramCode().add(parseCodeableConcept(xpp));
4027      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
4028        res.setServiced(parseType("serviced", xpp));
4029      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
4030        res.setLocation(parseType("location", xpp));
4031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4032        res.setQuantity(parseSimpleQuantity(xpp));
4033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4034        res.setUnitPrice(parseMoney(xpp));
4035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4036        res.setFactorElement(parseDecimal(xpp));
4037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4038        res.setNet(parseMoney(xpp));
4039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4040        res.getUdi().add(parseReference(xpp));
4041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
4042        res.setBodySite(parseCodeableConcept(xpp));
4043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
4044        res.getSubSite().add(parseCodeableConcept(xpp));
4045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4046        res.getEncounter().add(parseReference(xpp));
4047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4048        res.getDetail().add(parseClaimDetailComponent(xpp, owner));
4049      } else if (!parseBackboneContent(eventType, xpp, res))
4050        return false;
4051    return true;
4052  }
4053
4054  protected Claim.DetailComponent parseClaimDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4055    Claim.DetailComponent res = new Claim.DetailComponent();
4056    parseBackboneAttributes(xpp, res);
4057    next(xpp);
4058    int eventType = nextNoWhitespace(xpp);
4059    while (eventType != XmlPullParser.END_TAG) {
4060  if (!parseClaimDetailComponentContent(eventType, xpp, owner, res))
4061        unknownContent(xpp);
4062      eventType = nextNoWhitespace(xpp);
4063    }
4064    next(xpp);
4065    parseElementClose(res);
4066    return res;
4067  }
4068
4069  protected boolean parseClaimDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4070      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4071        res.setSequenceElement(parsePositiveInt(xpp));
4072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4073        res.setRevenue(parseCodeableConcept(xpp));
4074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4075        res.setCategory(parseCodeableConcept(xpp));
4076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4077        res.setService(parseCodeableConcept(xpp));
4078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4079        res.getModifier().add(parseCodeableConcept(xpp));
4080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4081        res.getProgramCode().add(parseCodeableConcept(xpp));
4082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4083        res.setQuantity(parseSimpleQuantity(xpp));
4084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4085        res.setUnitPrice(parseMoney(xpp));
4086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4087        res.setFactorElement(parseDecimal(xpp));
4088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4089        res.setNet(parseMoney(xpp));
4090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4091        res.getUdi().add(parseReference(xpp));
4092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4093        res.getSubDetail().add(parseClaimSubDetailComponent(xpp, owner));
4094      } else if (!parseBackboneContent(eventType, xpp, res))
4095        return false;
4096    return true;
4097  }
4098
4099  protected Claim.SubDetailComponent parseClaimSubDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4100    Claim.SubDetailComponent res = new Claim.SubDetailComponent();
4101    parseBackboneAttributes(xpp, res);
4102    next(xpp);
4103    int eventType = nextNoWhitespace(xpp);
4104    while (eventType != XmlPullParser.END_TAG) {
4105  if (!parseClaimSubDetailComponentContent(eventType, xpp, owner, res))
4106        unknownContent(xpp);
4107      eventType = nextNoWhitespace(xpp);
4108    }
4109    next(xpp);
4110    parseElementClose(res);
4111    return res;
4112  }
4113
4114  protected boolean parseClaimSubDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4115      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4116        res.setSequenceElement(parsePositiveInt(xpp));
4117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4118        res.setRevenue(parseCodeableConcept(xpp));
4119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4120        res.setCategory(parseCodeableConcept(xpp));
4121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4122        res.setService(parseCodeableConcept(xpp));
4123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4124        res.getModifier().add(parseCodeableConcept(xpp));
4125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4126        res.getProgramCode().add(parseCodeableConcept(xpp));
4127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4128        res.setQuantity(parseSimpleQuantity(xpp));
4129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4130        res.setUnitPrice(parseMoney(xpp));
4131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4132        res.setFactorElement(parseDecimal(xpp));
4133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4134        res.setNet(parseMoney(xpp));
4135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4136        res.getUdi().add(parseReference(xpp));
4137      } else if (!parseBackboneContent(eventType, xpp, res))
4138        return false;
4139    return true;
4140  }
4141
4142  protected ClaimResponse parseClaimResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4143    ClaimResponse res = new ClaimResponse();
4144    parseDomainResourceAttributes(xpp, res);
4145    next(xpp);
4146    int eventType = nextNoWhitespace(xpp);
4147    while (eventType != XmlPullParser.END_TAG) {
4148  if (!parseClaimResponseContent(eventType, xpp, res))
4149        unknownContent(xpp);
4150      eventType = nextNoWhitespace(xpp);
4151    }
4152    next(xpp);
4153    parseElementClose(res);
4154    return res;
4155  }
4156
4157  protected boolean parseClaimResponseContent(int eventType, XmlPullParser xpp, ClaimResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
4158      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4159        res.getIdentifier().add(parseIdentifier(xpp));
4160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4161        res.setStatusElement(parseEnumeration(xpp, ClaimResponse.ClaimResponseStatus.NULL, new ClaimResponse.ClaimResponseStatusEnumFactory()));
4162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4163        res.setPatient(parseReference(xpp));
4164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4165        res.setCreatedElement(parseDateTime(xpp));
4166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
4167        res.setInsurer(parseReference(xpp));
4168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
4169        res.setRequestProvider(parseReference(xpp));
4170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
4171        res.setRequestOrganization(parseReference(xpp));
4172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4173        res.setRequest(parseReference(xpp));
4174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
4175        res.setOutcome(parseCodeableConcept(xpp));
4176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
4177        res.setDispositionElement(parseString(xpp));
4178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payeeType")) {
4179        res.setPayeeType(parseCodeableConcept(xpp));
4180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4181        res.getItem().add(parseClaimResponseItemComponent(xpp, res));
4182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
4183        res.getAddItem().add(parseClaimResponseAddedItemComponent(xpp, res));
4184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
4185        res.getError().add(parseClaimResponseErrorComponent(xpp, res));
4186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalCost")) {
4187        res.setTotalCost(parseMoney(xpp));
4188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unallocDeductable")) {
4189        res.setUnallocDeductable(parseMoney(xpp));
4190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalBenefit")) {
4191        res.setTotalBenefit(parseMoney(xpp));
4192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
4193        res.setPayment(parseClaimResponsePaymentComponent(xpp, res));
4194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reserved")) {
4195        res.setReserved(parseCoding(xpp));
4196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
4197        res.setForm(parseCodeableConcept(xpp));
4198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
4199        res.getProcessNote().add(parseClaimResponseNoteComponent(xpp, res));
4200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
4201        res.getCommunicationRequest().add(parseReference(xpp));
4202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
4203        res.getInsurance().add(parseClaimResponseInsuranceComponent(xpp, res));
4204      } else if (!parseDomainResourceContent(eventType, xpp, res))
4205        return false;
4206    return true;
4207  }
4208
4209  protected ClaimResponse.ItemComponent parseClaimResponseItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4210    ClaimResponse.ItemComponent res = new ClaimResponse.ItemComponent();
4211    parseBackboneAttributes(xpp, res);
4212    next(xpp);
4213    int eventType = nextNoWhitespace(xpp);
4214    while (eventType != XmlPullParser.END_TAG) {
4215  if (!parseClaimResponseItemComponentContent(eventType, xpp, owner, res))
4216        unknownContent(xpp);
4217      eventType = nextNoWhitespace(xpp);
4218    }
4219    next(xpp);
4220    parseElementClose(res);
4221    return res;
4222  }
4223
4224  protected boolean parseClaimResponseItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4225      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4226        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
4227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4228        res.getNoteNumber().add(parsePositiveInt(xpp));
4229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4230        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4232        res.getDetail().add(parseClaimResponseItemDetailComponent(xpp, owner));
4233      } else if (!parseBackboneContent(eventType, xpp, res))
4234        return false;
4235    return true;
4236  }
4237
4238  protected ClaimResponse.AdjudicationComponent parseClaimResponseAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4239    ClaimResponse.AdjudicationComponent res = new ClaimResponse.AdjudicationComponent();
4240    parseBackboneAttributes(xpp, res);
4241    next(xpp);
4242    int eventType = nextNoWhitespace(xpp);
4243    while (eventType != XmlPullParser.END_TAG) {
4244  if (!parseClaimResponseAdjudicationComponentContent(eventType, xpp, owner, res))
4245        unknownContent(xpp);
4246      eventType = nextNoWhitespace(xpp);
4247    }
4248    next(xpp);
4249    parseElementClose(res);
4250    return res;
4251  }
4252
4253  protected boolean parseClaimResponseAdjudicationComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4254      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4255        res.setCategory(parseCodeableConcept(xpp));
4256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4257        res.setReason(parseCodeableConcept(xpp));
4258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4259        res.setAmount(parseMoney(xpp));
4260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4261        res.setValueElement(parseDecimal(xpp));
4262      } else if (!parseBackboneContent(eventType, xpp, res))
4263        return false;
4264    return true;
4265  }
4266
4267  protected ClaimResponse.ItemDetailComponent parseClaimResponseItemDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4268    ClaimResponse.ItemDetailComponent res = new ClaimResponse.ItemDetailComponent();
4269    parseBackboneAttributes(xpp, res);
4270    next(xpp);
4271    int eventType = nextNoWhitespace(xpp);
4272    while (eventType != XmlPullParser.END_TAG) {
4273  if (!parseClaimResponseItemDetailComponentContent(eventType, xpp, owner, res))
4274        unknownContent(xpp);
4275      eventType = nextNoWhitespace(xpp);
4276    }
4277    next(xpp);
4278    parseElementClose(res);
4279    return res;
4280  }
4281
4282  protected boolean parseClaimResponseItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4283      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4284        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
4285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4286        res.getNoteNumber().add(parsePositiveInt(xpp));
4287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4288        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4290        res.getSubDetail().add(parseClaimResponseSubDetailComponent(xpp, owner));
4291      } else if (!parseBackboneContent(eventType, xpp, res))
4292        return false;
4293    return true;
4294  }
4295
4296  protected ClaimResponse.SubDetailComponent parseClaimResponseSubDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4297    ClaimResponse.SubDetailComponent res = new ClaimResponse.SubDetailComponent();
4298    parseBackboneAttributes(xpp, res);
4299    next(xpp);
4300    int eventType = nextNoWhitespace(xpp);
4301    while (eventType != XmlPullParser.END_TAG) {
4302  if (!parseClaimResponseSubDetailComponentContent(eventType, xpp, owner, res))
4303        unknownContent(xpp);
4304      eventType = nextNoWhitespace(xpp);
4305    }
4306    next(xpp);
4307    parseElementClose(res);
4308    return res;
4309  }
4310
4311  protected boolean parseClaimResponseSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4312      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4313        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
4314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4315        res.getNoteNumber().add(parsePositiveInt(xpp));
4316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4317        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4318      } else if (!parseBackboneContent(eventType, xpp, res))
4319        return false;
4320    return true;
4321  }
4322
4323  protected ClaimResponse.AddedItemComponent parseClaimResponseAddedItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4324    ClaimResponse.AddedItemComponent res = new ClaimResponse.AddedItemComponent();
4325    parseBackboneAttributes(xpp, res);
4326    next(xpp);
4327    int eventType = nextNoWhitespace(xpp);
4328    while (eventType != XmlPullParser.END_TAG) {
4329  if (!parseClaimResponseAddedItemComponentContent(eventType, xpp, owner, res))
4330        unknownContent(xpp);
4331      eventType = nextNoWhitespace(xpp);
4332    }
4333    next(xpp);
4334    parseElementClose(res);
4335    return res;
4336  }
4337
4338  protected boolean parseClaimResponseAddedItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4339      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4340        res.getSequenceLinkId().add(parsePositiveInt(xpp));
4341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4342        res.setRevenue(parseCodeableConcept(xpp));
4343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4344        res.setCategory(parseCodeableConcept(xpp));
4345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4346        res.setService(parseCodeableConcept(xpp));
4347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4348        res.getModifier().add(parseCodeableConcept(xpp));
4349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
4350        res.setFee(parseMoney(xpp));
4351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4352        res.getNoteNumber().add(parsePositiveInt(xpp));
4353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4354        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4356        res.getDetail().add(parseClaimResponseAddedItemsDetailComponent(xpp, owner));
4357      } else if (!parseBackboneContent(eventType, xpp, res))
4358        return false;
4359    return true;
4360  }
4361
4362  protected ClaimResponse.AddedItemsDetailComponent parseClaimResponseAddedItemsDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4363    ClaimResponse.AddedItemsDetailComponent res = new ClaimResponse.AddedItemsDetailComponent();
4364    parseBackboneAttributes(xpp, res);
4365    next(xpp);
4366    int eventType = nextNoWhitespace(xpp);
4367    while (eventType != XmlPullParser.END_TAG) {
4368  if (!parseClaimResponseAddedItemsDetailComponentContent(eventType, xpp, owner, res))
4369        unknownContent(xpp);
4370      eventType = nextNoWhitespace(xpp);
4371    }
4372    next(xpp);
4373    parseElementClose(res);
4374    return res;
4375  }
4376
4377  protected boolean parseClaimResponseAddedItemsDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemsDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4378      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4379        res.setRevenue(parseCodeableConcept(xpp));
4380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4381        res.setCategory(parseCodeableConcept(xpp));
4382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4383        res.setService(parseCodeableConcept(xpp));
4384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4385        res.getModifier().add(parseCodeableConcept(xpp));
4386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
4387        res.setFee(parseMoney(xpp));
4388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4389        res.getNoteNumber().add(parsePositiveInt(xpp));
4390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4391        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4392      } else if (!parseBackboneContent(eventType, xpp, res))
4393        return false;
4394    return true;
4395  }
4396
4397  protected ClaimResponse.ErrorComponent parseClaimResponseErrorComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4398    ClaimResponse.ErrorComponent res = new ClaimResponse.ErrorComponent();
4399    parseBackboneAttributes(xpp, res);
4400    next(xpp);
4401    int eventType = nextNoWhitespace(xpp);
4402    while (eventType != XmlPullParser.END_TAG) {
4403  if (!parseClaimResponseErrorComponentContent(eventType, xpp, owner, res))
4404        unknownContent(xpp);
4405      eventType = nextNoWhitespace(xpp);
4406    }
4407    next(xpp);
4408    parseElementClose(res);
4409    return res;
4410  }
4411
4412  protected boolean parseClaimResponseErrorComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ErrorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4413      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
4414        res.setSequenceLinkIdElement(parsePositiveInt(xpp));
4415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequenceLinkId")) {
4416        res.setDetailSequenceLinkIdElement(parsePositiveInt(xpp));
4417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subdetailSequenceLinkId")) {
4418        res.setSubdetailSequenceLinkIdElement(parsePositiveInt(xpp));
4419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4420        res.setCode(parseCodeableConcept(xpp));
4421      } else if (!parseBackboneContent(eventType, xpp, res))
4422        return false;
4423    return true;
4424  }
4425
4426  protected ClaimResponse.PaymentComponent parseClaimResponsePaymentComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4427    ClaimResponse.PaymentComponent res = new ClaimResponse.PaymentComponent();
4428    parseBackboneAttributes(xpp, res);
4429    next(xpp);
4430    int eventType = nextNoWhitespace(xpp);
4431    while (eventType != XmlPullParser.END_TAG) {
4432  if (!parseClaimResponsePaymentComponentContent(eventType, xpp, owner, res))
4433        unknownContent(xpp);
4434      eventType = nextNoWhitespace(xpp);
4435    }
4436    next(xpp);
4437    parseElementClose(res);
4438    return res;
4439  }
4440
4441  protected boolean parseClaimResponsePaymentComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4442      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4443        res.setType(parseCodeableConcept(xpp));
4444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
4445        res.setAdjustment(parseMoney(xpp));
4446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
4447        res.setAdjustmentReason(parseCodeableConcept(xpp));
4448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4449        res.setDateElement(parseDate(xpp));
4450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4451        res.setAmount(parseMoney(xpp));
4452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4453        res.setIdentifier(parseIdentifier(xpp));
4454      } else if (!parseBackboneContent(eventType, xpp, res))
4455        return false;
4456    return true;
4457  }
4458
4459  protected ClaimResponse.NoteComponent parseClaimResponseNoteComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4460    ClaimResponse.NoteComponent res = new ClaimResponse.NoteComponent();
4461    parseBackboneAttributes(xpp, res);
4462    next(xpp);
4463    int eventType = nextNoWhitespace(xpp);
4464    while (eventType != XmlPullParser.END_TAG) {
4465  if (!parseClaimResponseNoteComponentContent(eventType, xpp, owner, res))
4466        unknownContent(xpp);
4467      eventType = nextNoWhitespace(xpp);
4468    }
4469    next(xpp);
4470    parseElementClose(res);
4471    return res;
4472  }
4473
4474  protected boolean parseClaimResponseNoteComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4475      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
4476        res.setNumberElement(parsePositiveInt(xpp));
4477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4478        res.setType(parseCodeableConcept(xpp));
4479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
4480        res.setTextElement(parseString(xpp));
4481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4482        res.setLanguage(parseCodeableConcept(xpp));
4483      } else if (!parseBackboneContent(eventType, xpp, res))
4484        return false;
4485    return true;
4486  }
4487
4488  protected ClaimResponse.InsuranceComponent parseClaimResponseInsuranceComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4489    ClaimResponse.InsuranceComponent res = new ClaimResponse.InsuranceComponent();
4490    parseBackboneAttributes(xpp, res);
4491    next(xpp);
4492    int eventType = nextNoWhitespace(xpp);
4493    while (eventType != XmlPullParser.END_TAG) {
4494  if (!parseClaimResponseInsuranceComponentContent(eventType, xpp, owner, res))
4495        unknownContent(xpp);
4496      eventType = nextNoWhitespace(xpp);
4497    }
4498    next(xpp);
4499    parseElementClose(res);
4500    return res;
4501  }
4502
4503  protected boolean parseClaimResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4504      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4505        res.setSequenceElement(parsePositiveInt(xpp));
4506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
4507        res.setFocalElement(parseBoolean(xpp));
4508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
4509        res.setCoverage(parseReference(xpp));
4510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
4511        res.setBusinessArrangementElement(parseString(xpp));
4512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
4513        res.getPreAuthRef().add(parseString(xpp));
4514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
4515        res.setClaimResponse(parseReference(xpp));
4516      } else if (!parseBackboneContent(eventType, xpp, res))
4517        return false;
4518    return true;
4519  }
4520
4521  protected ClinicalImpression parseClinicalImpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4522    ClinicalImpression res = new ClinicalImpression();
4523    parseDomainResourceAttributes(xpp, res);
4524    next(xpp);
4525    int eventType = nextNoWhitespace(xpp);
4526    while (eventType != XmlPullParser.END_TAG) {
4527  if (!parseClinicalImpressionContent(eventType, xpp, res))
4528        unknownContent(xpp);
4529      eventType = nextNoWhitespace(xpp);
4530    }
4531    next(xpp);
4532    parseElementClose(res);
4533    return res;
4534  }
4535
4536  protected boolean parseClinicalImpressionContent(int eventType, XmlPullParser xpp, ClinicalImpression res) throws XmlPullParserException, IOException, FHIRFormatError {
4537      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4538        res.getIdentifier().add(parseIdentifier(xpp));
4539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4540        res.setStatusElement(parseEnumeration(xpp, ClinicalImpression.ClinicalImpressionStatus.NULL, new ClinicalImpression.ClinicalImpressionStatusEnumFactory()));
4541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4542        res.setCode(parseCodeableConcept(xpp));
4543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4544        res.setDescriptionElement(parseString(xpp));
4545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4546        res.setSubject(parseReference(xpp));
4547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4548        res.setContext(parseReference(xpp));
4549      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
4550        res.setEffective(parseType("effective", xpp));
4551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4552        res.setDateElement(parseDateTime(xpp));
4553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessor")) {
4554        res.setAssessor(parseReference(xpp));
4555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
4556        res.setPrevious(parseReference(xpp));
4557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("problem")) {
4558        res.getProblem().add(parseReference(xpp));
4559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("investigation")) {
4560        res.getInvestigation().add(parseClinicalImpressionClinicalImpressionInvestigationComponent(xpp, res));
4561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
4562        res.getProtocol().add(parseUri(xpp));
4563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
4564        res.setSummaryElement(parseString(xpp));
4565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("finding")) {
4566        res.getFinding().add(parseClinicalImpressionClinicalImpressionFindingComponent(xpp, res));
4567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisCodeableConcept")) {
4568        res.getPrognosisCodeableConcept().add(parseCodeableConcept(xpp));
4569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisReference")) {
4570        res.getPrognosisReference().add(parseReference(xpp));
4571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
4572        res.getAction().add(parseReference(xpp));
4573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4574        res.getNote().add(parseAnnotation(xpp));
4575      } else if (!parseDomainResourceContent(eventType, xpp, res))
4576        return false;
4577    return true;
4578  }
4579
4580  protected ClinicalImpression.ClinicalImpressionInvestigationComponent parseClinicalImpressionClinicalImpressionInvestigationComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
4581    ClinicalImpression.ClinicalImpressionInvestigationComponent res = new ClinicalImpression.ClinicalImpressionInvestigationComponent();
4582    parseBackboneAttributes(xpp, res);
4583    next(xpp);
4584    int eventType = nextNoWhitespace(xpp);
4585    while (eventType != XmlPullParser.END_TAG) {
4586  if (!parseClinicalImpressionClinicalImpressionInvestigationComponentContent(eventType, xpp, owner, res))
4587        unknownContent(xpp);
4588      eventType = nextNoWhitespace(xpp);
4589    }
4590    next(xpp);
4591    parseElementClose(res);
4592    return res;
4593  }
4594
4595  protected boolean parseClinicalImpressionClinicalImpressionInvestigationComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionInvestigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4596      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4597        res.setCode(parseCodeableConcept(xpp));
4598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4599        res.getItem().add(parseReference(xpp));
4600      } else if (!parseBackboneContent(eventType, xpp, res))
4601        return false;
4602    return true;
4603  }
4604
4605  protected ClinicalImpression.ClinicalImpressionFindingComponent parseClinicalImpressionClinicalImpressionFindingComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
4606    ClinicalImpression.ClinicalImpressionFindingComponent res = new ClinicalImpression.ClinicalImpressionFindingComponent();
4607    parseBackboneAttributes(xpp, res);
4608    next(xpp);
4609    int eventType = nextNoWhitespace(xpp);
4610    while (eventType != XmlPullParser.END_TAG) {
4611  if (!parseClinicalImpressionClinicalImpressionFindingComponentContent(eventType, xpp, owner, res))
4612        unknownContent(xpp);
4613      eventType = nextNoWhitespace(xpp);
4614    }
4615    next(xpp);
4616    parseElementClose(res);
4617    return res;
4618  }
4619
4620  protected boolean parseClinicalImpressionClinicalImpressionFindingComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionFindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4621      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
4622        res.setItem(parseType("item", xpp));
4623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
4624        res.setBasisElement(parseString(xpp));
4625      } else if (!parseBackboneContent(eventType, xpp, res))
4626        return false;
4627    return true;
4628  }
4629
4630  protected CodeSystem parseCodeSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4631    CodeSystem res = new CodeSystem();
4632    parseDomainResourceAttributes(xpp, res);
4633    next(xpp);
4634    int eventType = nextNoWhitespace(xpp);
4635    while (eventType != XmlPullParser.END_TAG) {
4636  if (!parseCodeSystemContent(eventType, xpp, res))
4637        unknownContent(xpp);
4638      eventType = nextNoWhitespace(xpp);
4639    }
4640    next(xpp);
4641    parseElementClose(res);
4642    return res;
4643  }
4644
4645  protected boolean parseCodeSystemContent(int eventType, XmlPullParser xpp, CodeSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
4646      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4647        res.setUrlElement(parseUri(xpp));
4648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4649        res.setIdentifier(parseIdentifier(xpp));
4650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4651        res.setVersionElement(parseString(xpp));
4652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4653        res.setNameElement(parseString(xpp));
4654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
4655        res.setTitleElement(parseString(xpp));
4656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4657        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
4659        res.setExperimentalElement(parseBoolean(xpp));
4660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4661        res.setDateElement(parseDateTime(xpp));
4662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
4663        res.setPublisherElement(parseString(xpp));
4664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4665        res.getContact().add(parseContactDetail(xpp));
4666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4667        res.setDescriptionElement(parseMarkdown(xpp));
4668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
4669        res.getUseContext().add(parseUsageContext(xpp));
4670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
4671        res.getJurisdiction().add(parseCodeableConcept(xpp));
4672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
4673        res.setPurposeElement(parseMarkdown(xpp));
4674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4675        res.setCopyrightElement(parseMarkdown(xpp));
4676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caseSensitive")) {
4677        res.setCaseSensitiveElement(parseBoolean(xpp));
4678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
4679        res.setValueSetElement(parseUri(xpp));
4680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchyMeaning")) {
4681        res.setHierarchyMeaningElement(parseEnumeration(xpp, CodeSystem.CodeSystemHierarchyMeaning.NULL, new CodeSystem.CodeSystemHierarchyMeaningEnumFactory()));
4682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
4683        res.setCompositionalElement(parseBoolean(xpp));
4684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionNeeded")) {
4685        res.setVersionNeededElement(parseBoolean(xpp));
4686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
4687        res.setContentElement(parseEnumeration(xpp, CodeSystem.CodeSystemContentMode.NULL, new CodeSystem.CodeSystemContentModeEnumFactory()));
4688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
4689        res.setCountElement(parseUnsignedInt(xpp));
4690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
4691        res.getFilter().add(parseCodeSystemCodeSystemFilterComponent(xpp, res));
4692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
4693        res.getProperty().add(parseCodeSystemPropertyComponent(xpp, res));
4694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
4695        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, res));
4696      } else if (!parseDomainResourceContent(eventType, xpp, res))
4697        return false;
4698    return true;
4699  }
4700
4701  protected CodeSystem.CodeSystemFilterComponent parseCodeSystemCodeSystemFilterComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4702    CodeSystem.CodeSystemFilterComponent res = new CodeSystem.CodeSystemFilterComponent();
4703    parseBackboneAttributes(xpp, res);
4704    next(xpp);
4705    int eventType = nextNoWhitespace(xpp);
4706    while (eventType != XmlPullParser.END_TAG) {
4707  if (!parseCodeSystemCodeSystemFilterComponentContent(eventType, xpp, owner, res))
4708        unknownContent(xpp);
4709      eventType = nextNoWhitespace(xpp);
4710    }
4711    next(xpp);
4712    parseElementClose(res);
4713    return res;
4714  }
4715
4716  protected boolean parseCodeSystemCodeSystemFilterComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.CodeSystemFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4717      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4718        res.setCodeElement(parseCode(xpp));
4719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4720        res.setDescriptionElement(parseString(xpp));
4721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
4722        res.getOperator().add(parseEnumeration(xpp, CodeSystem.FilterOperator.NULL, new CodeSystem.FilterOperatorEnumFactory()));
4723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4724        res.setValueElement(parseString(xpp));
4725      } else if (!parseBackboneContent(eventType, xpp, res))
4726        return false;
4727    return true;
4728  }
4729
4730  protected CodeSystem.PropertyComponent parseCodeSystemPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4731    CodeSystem.PropertyComponent res = new CodeSystem.PropertyComponent();
4732    parseBackboneAttributes(xpp, res);
4733    next(xpp);
4734    int eventType = nextNoWhitespace(xpp);
4735    while (eventType != XmlPullParser.END_TAG) {
4736  if (!parseCodeSystemPropertyComponentContent(eventType, xpp, owner, res))
4737        unknownContent(xpp);
4738      eventType = nextNoWhitespace(xpp);
4739    }
4740    next(xpp);
4741    parseElementClose(res);
4742    return res;
4743  }
4744
4745  protected boolean parseCodeSystemPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.PropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4746      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4747        res.setCodeElement(parseCode(xpp));
4748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
4749        res.setUriElement(parseUri(xpp));
4750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4751        res.setDescriptionElement(parseString(xpp));
4752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4753        res.setTypeElement(parseEnumeration(xpp, CodeSystem.PropertyType.NULL, new CodeSystem.PropertyTypeEnumFactory()));
4754      } else if (!parseBackboneContent(eventType, xpp, res))
4755        return false;
4756    return true;
4757  }
4758
4759  protected CodeSystem.ConceptDefinitionComponent parseCodeSystemConceptDefinitionComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4760    CodeSystem.ConceptDefinitionComponent res = new CodeSystem.ConceptDefinitionComponent();
4761    parseBackboneAttributes(xpp, res);
4762    next(xpp);
4763    int eventType = nextNoWhitespace(xpp);
4764    while (eventType != XmlPullParser.END_TAG) {
4765  if (!parseCodeSystemConceptDefinitionComponentContent(eventType, xpp, owner, res))
4766        unknownContent(xpp);
4767      eventType = nextNoWhitespace(xpp);
4768    }
4769    next(xpp);
4770    parseElementClose(res);
4771    return res;
4772  }
4773
4774  protected boolean parseCodeSystemConceptDefinitionComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4775      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4776        res.setCodeElement(parseCode(xpp));
4777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
4778        res.setDisplayElement(parseString(xpp));
4779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
4780        res.setDefinitionElement(parseString(xpp));
4781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
4782        res.getDesignation().add(parseCodeSystemConceptDefinitionDesignationComponent(xpp, owner));
4783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
4784        res.getProperty().add(parseCodeSystemConceptPropertyComponent(xpp, owner));
4785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
4786        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, owner));
4787      } else if (!parseBackboneContent(eventType, xpp, res))
4788        return false;
4789    return true;
4790  }
4791
4792  protected CodeSystem.ConceptDefinitionDesignationComponent parseCodeSystemConceptDefinitionDesignationComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4793    CodeSystem.ConceptDefinitionDesignationComponent res = new CodeSystem.ConceptDefinitionDesignationComponent();
4794    parseBackboneAttributes(xpp, res);
4795    next(xpp);
4796    int eventType = nextNoWhitespace(xpp);
4797    while (eventType != XmlPullParser.END_TAG) {
4798  if (!parseCodeSystemConceptDefinitionDesignationComponentContent(eventType, xpp, owner, res))
4799        unknownContent(xpp);
4800      eventType = nextNoWhitespace(xpp);
4801    }
4802    next(xpp);
4803    parseElementClose(res);
4804    return res;
4805  }
4806
4807  protected boolean parseCodeSystemConceptDefinitionDesignationComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4808      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4809        res.setLanguageElement(parseCode(xpp));
4810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
4811        res.setUse(parseCoding(xpp));
4812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4813        res.setValueElement(parseString(xpp));
4814      } else if (!parseBackboneContent(eventType, xpp, res))
4815        return false;
4816    return true;
4817  }
4818
4819  protected CodeSystem.ConceptPropertyComponent parseCodeSystemConceptPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4820    CodeSystem.ConceptPropertyComponent res = new CodeSystem.ConceptPropertyComponent();
4821    parseBackboneAttributes(xpp, res);
4822    next(xpp);
4823    int eventType = nextNoWhitespace(xpp);
4824    while (eventType != XmlPullParser.END_TAG) {
4825  if (!parseCodeSystemConceptPropertyComponentContent(eventType, xpp, owner, res))
4826        unknownContent(xpp);
4827      eventType = nextNoWhitespace(xpp);
4828    }
4829    next(xpp);
4830    parseElementClose(res);
4831    return res;
4832  }
4833
4834  protected boolean parseCodeSystemConceptPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4835      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4836        res.setCodeElement(parseCode(xpp));
4837      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
4838        res.setValue(parseType("value", xpp));
4839      } else if (!parseBackboneContent(eventType, xpp, res))
4840        return false;
4841    return true;
4842  }
4843
4844  protected Communication parseCommunication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4845    Communication res = new Communication();
4846    parseDomainResourceAttributes(xpp, res);
4847    next(xpp);
4848    int eventType = nextNoWhitespace(xpp);
4849    while (eventType != XmlPullParser.END_TAG) {
4850  if (!parseCommunicationContent(eventType, xpp, res))
4851        unknownContent(xpp);
4852      eventType = nextNoWhitespace(xpp);
4853    }
4854    next(xpp);
4855    parseElementClose(res);
4856    return res;
4857  }
4858
4859  protected boolean parseCommunicationContent(int eventType, XmlPullParser xpp, Communication res) throws XmlPullParserException, IOException, FHIRFormatError {
4860      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4861        res.getIdentifier().add(parseIdentifier(xpp));
4862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
4863        res.getDefinition().add(parseReference(xpp));
4864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
4865        res.getBasedOn().add(parseReference(xpp));
4866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4867        res.getPartOf().add(parseReference(xpp));
4868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4869        res.setStatusElement(parseEnumeration(xpp, Communication.CommunicationStatus.NULL, new Communication.CommunicationStatusEnumFactory()));
4870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDone")) {
4871        res.setNotDoneElement(parseBoolean(xpp));
4872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDoneReason")) {
4873        res.setNotDoneReason(parseCodeableConcept(xpp));
4874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4875        res.getCategory().add(parseCodeableConcept(xpp));
4876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
4877        res.getMedium().add(parseCodeableConcept(xpp));
4878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4879        res.setSubject(parseReference(xpp));
4880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
4881        res.getRecipient().add(parseReference(xpp));
4882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
4883        res.getTopic().add(parseReference(xpp));
4884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4885        res.setContext(parseReference(xpp));
4886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sent")) {
4887        res.setSentElement(parseDateTime(xpp));
4888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("received")) {
4889        res.setReceivedElement(parseDateTime(xpp));
4890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
4891        res.setSender(parseReference(xpp));
4892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
4893        res.getReasonCode().add(parseCodeableConcept(xpp));
4894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
4895        res.getReasonReference().add(parseReference(xpp));
4896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
4897        res.getPayload().add(parseCommunicationCommunicationPayloadComponent(xpp, res));
4898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4899        res.getNote().add(parseAnnotation(xpp));
4900      } else if (!parseDomainResourceContent(eventType, xpp, res))
4901        return false;
4902    return true;
4903  }
4904
4905  protected Communication.CommunicationPayloadComponent parseCommunicationCommunicationPayloadComponent(XmlPullParser xpp, Communication owner) throws XmlPullParserException, IOException, FHIRFormatError {
4906    Communication.CommunicationPayloadComponent res = new Communication.CommunicationPayloadComponent();
4907    parseBackboneAttributes(xpp, res);
4908    next(xpp);
4909    int eventType = nextNoWhitespace(xpp);
4910    while (eventType != XmlPullParser.END_TAG) {
4911  if (!parseCommunicationCommunicationPayloadComponentContent(eventType, xpp, owner, res))
4912        unknownContent(xpp);
4913      eventType = nextNoWhitespace(xpp);
4914    }
4915    next(xpp);
4916    parseElementClose(res);
4917    return res;
4918  }
4919
4920  protected boolean parseCommunicationCommunicationPayloadComponentContent(int eventType, XmlPullParser xpp, Communication owner, Communication.CommunicationPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4921      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
4922        res.setContent(parseType("content", xpp));
4923      } else if (!parseBackboneContent(eventType, xpp, res))
4924        return false;
4925    return true;
4926  }
4927
4928  protected CommunicationRequest parseCommunicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4929    CommunicationRequest res = new CommunicationRequest();
4930    parseDomainResourceAttributes(xpp, res);
4931    next(xpp);
4932    int eventType = nextNoWhitespace(xpp);
4933    while (eventType != XmlPullParser.END_TAG) {
4934  if (!parseCommunicationRequestContent(eventType, xpp, res))
4935        unknownContent(xpp);
4936      eventType = nextNoWhitespace(xpp);
4937    }
4938    next(xpp);
4939    parseElementClose(res);
4940    return res;
4941  }
4942
4943  protected boolean parseCommunicationRequestContent(int eventType, XmlPullParser xpp, CommunicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
4944      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4945        res.getIdentifier().add(parseIdentifier(xpp));
4946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
4947        res.getBasedOn().add(parseReference(xpp));
4948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
4949        res.getReplaces().add(parseReference(xpp));
4950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
4951        res.setGroupIdentifier(parseIdentifier(xpp));
4952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4953        res.setStatusElement(parseEnumeration(xpp, CommunicationRequest.CommunicationRequestStatus.NULL, new CommunicationRequest.CommunicationRequestStatusEnumFactory()));
4954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4955        res.getCategory().add(parseCodeableConcept(xpp));
4956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
4957        res.setPriorityElement(parseEnumeration(xpp, CommunicationRequest.CommunicationPriority.NULL, new CommunicationRequest.CommunicationPriorityEnumFactory()));
4958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
4959        res.getMedium().add(parseCodeableConcept(xpp));
4960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4961        res.setSubject(parseReference(xpp));
4962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
4963        res.getRecipient().add(parseReference(xpp));
4964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
4965        res.getTopic().add(parseReference(xpp));
4966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4967        res.setContext(parseReference(xpp));
4968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
4969        res.getPayload().add(parseCommunicationRequestCommunicationRequestPayloadComponent(xpp, res));
4970      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
4971        res.setOccurrence(parseType("occurrence", xpp));
4972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
4973        res.setAuthoredOnElement(parseDateTime(xpp));
4974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
4975        res.setSender(parseReference(xpp));
4976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
4977        res.setRequester(parseCommunicationRequestCommunicationRequestRequesterComponent(xpp, res));
4978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
4979        res.getReasonCode().add(parseCodeableConcept(xpp));
4980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
4981        res.getReasonReference().add(parseReference(xpp));
4982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4983        res.getNote().add(parseAnnotation(xpp));
4984      } else if (!parseDomainResourceContent(eventType, xpp, res))
4985        return false;
4986    return true;
4987  }
4988
4989  protected CommunicationRequest.CommunicationRequestPayloadComponent parseCommunicationRequestCommunicationRequestPayloadComponent(XmlPullParser xpp, CommunicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
4990    CommunicationRequest.CommunicationRequestPayloadComponent res = new CommunicationRequest.CommunicationRequestPayloadComponent();
4991    parseBackboneAttributes(xpp, res);
4992    next(xpp);
4993    int eventType = nextNoWhitespace(xpp);
4994    while (eventType != XmlPullParser.END_TAG) {
4995  if (!parseCommunicationRequestCommunicationRequestPayloadComponentContent(eventType, xpp, owner, res))
4996        unknownContent(xpp);
4997      eventType = nextNoWhitespace(xpp);
4998    }
4999    next(xpp);
5000    parseElementClose(res);
5001    return res;
5002  }
5003
5004  protected boolean parseCommunicationRequestCommunicationRequestPayloadComponentContent(int eventType, XmlPullParser xpp, CommunicationRequest owner, CommunicationRequest.CommunicationRequestPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5005      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
5006        res.setContent(parseType("content", xpp));
5007      } else if (!parseBackboneContent(eventType, xpp, res))
5008        return false;
5009    return true;
5010  }
5011
5012  protected CommunicationRequest.CommunicationRequestRequesterComponent parseCommunicationRequestCommunicationRequestRequesterComponent(XmlPullParser xpp, CommunicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
5013    CommunicationRequest.CommunicationRequestRequesterComponent res = new CommunicationRequest.CommunicationRequestRequesterComponent();
5014    parseBackboneAttributes(xpp, res);
5015    next(xpp);
5016    int eventType = nextNoWhitespace(xpp);
5017    while (eventType != XmlPullParser.END_TAG) {
5018  if (!parseCommunicationRequestCommunicationRequestRequesterComponentContent(eventType, xpp, owner, res))
5019        unknownContent(xpp);
5020      eventType = nextNoWhitespace(xpp);
5021    }
5022    next(xpp);
5023    parseElementClose(res);
5024    return res;
5025  }
5026
5027  protected boolean parseCommunicationRequestCommunicationRequestRequesterComponentContent(int eventType, XmlPullParser xpp, CommunicationRequest owner, CommunicationRequest.CommunicationRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5028      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
5029        res.setAgent(parseReference(xpp));
5030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
5031        res.setOnBehalfOf(parseReference(xpp));
5032      } else if (!parseBackboneContent(eventType, xpp, res))
5033        return false;
5034    return true;
5035  }
5036
5037  protected CompartmentDefinition parseCompartmentDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5038    CompartmentDefinition res = new CompartmentDefinition();
5039    parseDomainResourceAttributes(xpp, res);
5040    next(xpp);
5041    int eventType = nextNoWhitespace(xpp);
5042    while (eventType != XmlPullParser.END_TAG) {
5043  if (!parseCompartmentDefinitionContent(eventType, xpp, res))
5044        unknownContent(xpp);
5045      eventType = nextNoWhitespace(xpp);
5046    }
5047    next(xpp);
5048    parseElementClose(res);
5049    return res;
5050  }
5051
5052  protected boolean parseCompartmentDefinitionContent(int eventType, XmlPullParser xpp, CompartmentDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
5053      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5054        res.setUrlElement(parseUri(xpp));
5055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5056        res.setNameElement(parseString(xpp));
5057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5058        res.setTitleElement(parseString(xpp));
5059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5060        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5062        res.setExperimentalElement(parseBoolean(xpp));
5063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5064        res.setDateElement(parseDateTime(xpp));
5065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5066        res.setPublisherElement(parseString(xpp));
5067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5068        res.getContact().add(parseContactDetail(xpp));
5069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5070        res.setDescriptionElement(parseMarkdown(xpp));
5071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5072        res.setPurposeElement(parseMarkdown(xpp));
5073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5074        res.getUseContext().add(parseUsageContext(xpp));
5075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5076        res.getJurisdiction().add(parseCodeableConcept(xpp));
5077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5078        res.setCodeElement(parseEnumeration(xpp, CompartmentDefinition.CompartmentType.NULL, new CompartmentDefinition.CompartmentTypeEnumFactory()));
5079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
5080        res.setSearchElement(parseBoolean(xpp));
5081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
5082        res.getResource().add(parseCompartmentDefinitionCompartmentDefinitionResourceComponent(xpp, res));
5083      } else if (!parseDomainResourceContent(eventType, xpp, res))
5084        return false;
5085    return true;
5086  }
5087
5088  protected CompartmentDefinition.CompartmentDefinitionResourceComponent parseCompartmentDefinitionCompartmentDefinitionResourceComponent(XmlPullParser xpp, CompartmentDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5089    CompartmentDefinition.CompartmentDefinitionResourceComponent res = new CompartmentDefinition.CompartmentDefinitionResourceComponent();
5090    parseBackboneAttributes(xpp, res);
5091    next(xpp);
5092    int eventType = nextNoWhitespace(xpp);
5093    while (eventType != XmlPullParser.END_TAG) {
5094  if (!parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(eventType, xpp, owner, res))
5095        unknownContent(xpp);
5096      eventType = nextNoWhitespace(xpp);
5097    }
5098    next(xpp);
5099    parseElementClose(res);
5100    return res;
5101  }
5102
5103  protected boolean parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, CompartmentDefinition owner, CompartmentDefinition.CompartmentDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5104      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5105        res.setCodeElement(parseCode(xpp));
5106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
5107        res.getParam().add(parseString(xpp));
5108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
5109        res.setDocumentationElement(parseString(xpp));
5110      } else if (!parseBackboneContent(eventType, xpp, res))
5111        return false;
5112    return true;
5113  }
5114
5115  protected Composition parseComposition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5116    Composition res = new Composition();
5117    parseDomainResourceAttributes(xpp, res);
5118    next(xpp);
5119    int eventType = nextNoWhitespace(xpp);
5120    while (eventType != XmlPullParser.END_TAG) {
5121  if (!parseCompositionContent(eventType, xpp, res))
5122        unknownContent(xpp);
5123      eventType = nextNoWhitespace(xpp);
5124    }
5125    next(xpp);
5126    parseElementClose(res);
5127    return res;
5128  }
5129
5130  protected boolean parseCompositionContent(int eventType, XmlPullParser xpp, Composition res) throws XmlPullParserException, IOException, FHIRFormatError {
5131      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5132        res.setIdentifier(parseIdentifier(xpp));
5133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5134        res.setStatusElement(parseEnumeration(xpp, Composition.CompositionStatus.NULL, new Composition.CompositionStatusEnumFactory()));
5135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5136        res.setType(parseCodeableConcept(xpp));
5137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
5138        res.setClass_(parseCodeableConcept(xpp));
5139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5140        res.setSubject(parseReference(xpp));
5141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5142        res.setEncounter(parseReference(xpp));
5143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5144        res.setDateElement(parseDateTime(xpp));
5145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5146        res.getAuthor().add(parseReference(xpp));
5147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5148        res.setTitleElement(parseString(xpp));
5149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
5150        res.setConfidentialityElement(parseEnumeration(xpp, Composition.DocumentConfidentiality.NULL, new Composition.DocumentConfidentialityEnumFactory()));
5151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attester")) {
5152        res.getAttester().add(parseCompositionCompositionAttesterComponent(xpp, res));
5153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
5154        res.setCustodian(parseReference(xpp));
5155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
5156        res.getRelatesTo().add(parseCompositionCompositionRelatesToComponent(xpp, res));
5157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
5158        res.getEvent().add(parseCompositionCompositionEventComponent(xpp, res));
5159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
5160        res.getSection().add(parseCompositionSectionComponent(xpp, res));
5161      } else if (!parseDomainResourceContent(eventType, xpp, res))
5162        return false;
5163    return true;
5164  }
5165
5166  protected Composition.CompositionAttesterComponent parseCompositionCompositionAttesterComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5167    Composition.CompositionAttesterComponent res = new Composition.CompositionAttesterComponent();
5168    parseBackboneAttributes(xpp, res);
5169    next(xpp);
5170    int eventType = nextNoWhitespace(xpp);
5171    while (eventType != XmlPullParser.END_TAG) {
5172  if (!parseCompositionCompositionAttesterComponentContent(eventType, xpp, owner, res))
5173        unknownContent(xpp);
5174      eventType = nextNoWhitespace(xpp);
5175    }
5176    next(xpp);
5177    parseElementClose(res);
5178    return res;
5179  }
5180
5181  protected boolean parseCompositionCompositionAttesterComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionAttesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5182      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5183        res.getMode().add(parseEnumeration(xpp, Composition.CompositionAttestationMode.NULL, new Composition.CompositionAttestationModeEnumFactory()));
5184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
5185        res.setTimeElement(parseDateTime(xpp));
5186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
5187        res.setParty(parseReference(xpp));
5188      } else if (!parseBackboneContent(eventType, xpp, res))
5189        return false;
5190    return true;
5191  }
5192
5193  protected Composition.CompositionRelatesToComponent parseCompositionCompositionRelatesToComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5194    Composition.CompositionRelatesToComponent res = new Composition.CompositionRelatesToComponent();
5195    parseBackboneAttributes(xpp, res);
5196    next(xpp);
5197    int eventType = nextNoWhitespace(xpp);
5198    while (eventType != XmlPullParser.END_TAG) {
5199  if (!parseCompositionCompositionRelatesToComponentContent(eventType, xpp, owner, res))
5200        unknownContent(xpp);
5201      eventType = nextNoWhitespace(xpp);
5202    }
5203    next(xpp);
5204    parseElementClose(res);
5205    return res;
5206  }
5207
5208  protected boolean parseCompositionCompositionRelatesToComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5209      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5210        res.setCodeElement(parseEnumeration(xpp, Composition.DocumentRelationshipType.NULL, new Composition.DocumentRelationshipTypeEnumFactory()));
5211      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5212        res.setTarget(parseType("target", xpp));
5213      } else if (!parseBackboneContent(eventType, xpp, res))
5214        return false;
5215    return true;
5216  }
5217
5218  protected Composition.CompositionEventComponent parseCompositionCompositionEventComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5219    Composition.CompositionEventComponent res = new Composition.CompositionEventComponent();
5220    parseBackboneAttributes(xpp, res);
5221    next(xpp);
5222    int eventType = nextNoWhitespace(xpp);
5223    while (eventType != XmlPullParser.END_TAG) {
5224  if (!parseCompositionCompositionEventComponentContent(eventType, xpp, owner, res))
5225        unknownContent(xpp);
5226      eventType = nextNoWhitespace(xpp);
5227    }
5228    next(xpp);
5229    parseElementClose(res);
5230    return res;
5231  }
5232
5233  protected boolean parseCompositionCompositionEventComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5234      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5235        res.getCode().add(parseCodeableConcept(xpp));
5236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5237        res.setPeriod(parsePeriod(xpp));
5238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5239        res.getDetail().add(parseReference(xpp));
5240      } else if (!parseBackboneContent(eventType, xpp, res))
5241        return false;
5242    return true;
5243  }
5244
5245  protected Composition.SectionComponent parseCompositionSectionComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5246    Composition.SectionComponent res = new Composition.SectionComponent();
5247    parseBackboneAttributes(xpp, res);
5248    next(xpp);
5249    int eventType = nextNoWhitespace(xpp);
5250    while (eventType != XmlPullParser.END_TAG) {
5251  if (!parseCompositionSectionComponentContent(eventType, xpp, owner, res))
5252        unknownContent(xpp);
5253      eventType = nextNoWhitespace(xpp);
5254    }
5255    next(xpp);
5256    parseElementClose(res);
5257    return res;
5258  }
5259
5260  protected boolean parseCompositionSectionComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.SectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5261      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5262        res.setTitleElement(parseString(xpp));
5263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5264        res.setCode(parseCodeableConcept(xpp));
5265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
5266        res.setText(parseNarrative(xpp));
5267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5268        res.setModeElement(parseEnumeration(xpp, Composition.SectionMode.NULL, new Composition.SectionModeEnumFactory()));
5269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
5270        res.setOrderedBy(parseCodeableConcept(xpp));
5271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
5272        res.getEntry().add(parseReference(xpp));
5273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
5274        res.setEmptyReason(parseCodeableConcept(xpp));
5275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
5276        res.getSection().add(parseCompositionSectionComponent(xpp, owner));
5277      } else if (!parseBackboneContent(eventType, xpp, res))
5278        return false;
5279    return true;
5280  }
5281
5282  protected ConceptMap parseConceptMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5283    ConceptMap res = new ConceptMap();
5284    parseDomainResourceAttributes(xpp, res);
5285    next(xpp);
5286    int eventType = nextNoWhitespace(xpp);
5287    while (eventType != XmlPullParser.END_TAG) {
5288  if (!parseConceptMapContent(eventType, xpp, res))
5289        unknownContent(xpp);
5290      eventType = nextNoWhitespace(xpp);
5291    }
5292    next(xpp);
5293    parseElementClose(res);
5294    return res;
5295  }
5296
5297  protected boolean parseConceptMapContent(int eventType, XmlPullParser xpp, ConceptMap res) throws XmlPullParserException, IOException, FHIRFormatError {
5298      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5299        res.setUrlElement(parseUri(xpp));
5300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5301        res.setIdentifier(parseIdentifier(xpp));
5302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5303        res.setVersionElement(parseString(xpp));
5304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5305        res.setNameElement(parseString(xpp));
5306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5307        res.setTitleElement(parseString(xpp));
5308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5309        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5311        res.setExperimentalElement(parseBoolean(xpp));
5312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5313        res.setDateElement(parseDateTime(xpp));
5314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5315        res.setPublisherElement(parseString(xpp));
5316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5317        res.getContact().add(parseContactDetail(xpp));
5318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5319        res.setDescriptionElement(parseMarkdown(xpp));
5320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5321        res.getUseContext().add(parseUsageContext(xpp));
5322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5323        res.getJurisdiction().add(parseCodeableConcept(xpp));
5324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5325        res.setPurposeElement(parseMarkdown(xpp));
5326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
5327        res.setCopyrightElement(parseMarkdown(xpp));
5328      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
5329        res.setSource(parseType("source", xpp));
5330      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5331        res.setTarget(parseType("target", xpp));
5332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
5333        res.getGroup().add(parseConceptMapConceptMapGroupComponent(xpp, res));
5334      } else if (!parseDomainResourceContent(eventType, xpp, res))
5335        return false;
5336    return true;
5337  }
5338
5339  protected ConceptMap.ConceptMapGroupComponent parseConceptMapConceptMapGroupComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5340    ConceptMap.ConceptMapGroupComponent res = new ConceptMap.ConceptMapGroupComponent();
5341    parseBackboneAttributes(xpp, res);
5342    next(xpp);
5343    int eventType = nextNoWhitespace(xpp);
5344    while (eventType != XmlPullParser.END_TAG) {
5345  if (!parseConceptMapConceptMapGroupComponentContent(eventType, xpp, owner, res))
5346        unknownContent(xpp);
5347      eventType = nextNoWhitespace(xpp);
5348    }
5349    next(xpp);
5350    parseElementClose(res);
5351    return res;
5352  }
5353
5354  protected boolean parseConceptMapConceptMapGroupComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5355      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
5356        res.setSourceElement(parseUri(xpp));
5357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceVersion")) {
5358        res.setSourceVersionElement(parseString(xpp));
5359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
5360        res.setTargetElement(parseUri(xpp));
5361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetVersion")) {
5362        res.setTargetVersionElement(parseString(xpp));
5363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
5364        res.getElement().add(parseConceptMapSourceElementComponent(xpp, owner));
5365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unmapped")) {
5366        res.setUnmapped(parseConceptMapConceptMapGroupUnmappedComponent(xpp, owner));
5367      } else if (!parseBackboneContent(eventType, xpp, res))
5368        return false;
5369    return true;
5370  }
5371
5372  protected ConceptMap.SourceElementComponent parseConceptMapSourceElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5373    ConceptMap.SourceElementComponent res = new ConceptMap.SourceElementComponent();
5374    parseBackboneAttributes(xpp, res);
5375    next(xpp);
5376    int eventType = nextNoWhitespace(xpp);
5377    while (eventType != XmlPullParser.END_TAG) {
5378  if (!parseConceptMapSourceElementComponentContent(eventType, xpp, owner, res))
5379        unknownContent(xpp);
5380      eventType = nextNoWhitespace(xpp);
5381    }
5382    next(xpp);
5383    parseElementClose(res);
5384    return res;
5385  }
5386
5387  protected boolean parseConceptMapSourceElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.SourceElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5388      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5389        res.setCodeElement(parseCode(xpp));
5390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5391        res.setDisplayElement(parseString(xpp));
5392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
5393        res.getTarget().add(parseConceptMapTargetElementComponent(xpp, owner));
5394      } else if (!parseBackboneContent(eventType, xpp, res))
5395        return false;
5396    return true;
5397  }
5398
5399  protected ConceptMap.TargetElementComponent parseConceptMapTargetElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5400    ConceptMap.TargetElementComponent res = new ConceptMap.TargetElementComponent();
5401    parseBackboneAttributes(xpp, res);
5402    next(xpp);
5403    int eventType = nextNoWhitespace(xpp);
5404    while (eventType != XmlPullParser.END_TAG) {
5405  if (!parseConceptMapTargetElementComponentContent(eventType, xpp, owner, res))
5406        unknownContent(xpp);
5407      eventType = nextNoWhitespace(xpp);
5408    }
5409    next(xpp);
5410    parseElementClose(res);
5411    return res;
5412  }
5413
5414  protected boolean parseConceptMapTargetElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.TargetElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5415      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5416        res.setCodeElement(parseCode(xpp));
5417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5418        res.setDisplayElement(parseString(xpp));
5419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("equivalence")) {
5420        res.setEquivalenceElement(parseEnumeration(xpp, Enumerations.ConceptMapEquivalence.NULL, new Enumerations.ConceptMapEquivalenceEnumFactory()));
5421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
5422        res.setCommentElement(parseString(xpp));
5423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
5424        res.getDependsOn().add(parseConceptMapOtherElementComponent(xpp, owner));
5425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
5426        res.getProduct().add(parseConceptMapOtherElementComponent(xpp, owner));
5427      } else if (!parseBackboneContent(eventType, xpp, res))
5428        return false;
5429    return true;
5430  }
5431
5432  protected ConceptMap.OtherElementComponent parseConceptMapOtherElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5433    ConceptMap.OtherElementComponent res = new ConceptMap.OtherElementComponent();
5434    parseBackboneAttributes(xpp, res);
5435    next(xpp);
5436    int eventType = nextNoWhitespace(xpp);
5437    while (eventType != XmlPullParser.END_TAG) {
5438  if (!parseConceptMapOtherElementComponentContent(eventType, xpp, owner, res))
5439        unknownContent(xpp);
5440      eventType = nextNoWhitespace(xpp);
5441    }
5442    next(xpp);
5443    parseElementClose(res);
5444    return res;
5445  }
5446
5447  protected boolean parseConceptMapOtherElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.OtherElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5448      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
5449        res.setPropertyElement(parseUri(xpp));
5450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
5451        res.setSystemElement(parseUri(xpp));
5452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5453        res.setCodeElement(parseString(xpp));
5454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5455        res.setDisplayElement(parseString(xpp));
5456      } else if (!parseBackboneContent(eventType, xpp, res))
5457        return false;
5458    return true;
5459  }
5460
5461  protected ConceptMap.ConceptMapGroupUnmappedComponent parseConceptMapConceptMapGroupUnmappedComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
5462    ConceptMap.ConceptMapGroupUnmappedComponent res = new ConceptMap.ConceptMapGroupUnmappedComponent();
5463    parseBackboneAttributes(xpp, res);
5464    next(xpp);
5465    int eventType = nextNoWhitespace(xpp);
5466    while (eventType != XmlPullParser.END_TAG) {
5467  if (!parseConceptMapConceptMapGroupUnmappedComponentContent(eventType, xpp, owner, res))
5468        unknownContent(xpp);
5469      eventType = nextNoWhitespace(xpp);
5470    }
5471    next(xpp);
5472    parseElementClose(res);
5473    return res;
5474  }
5475
5476  protected boolean parseConceptMapConceptMapGroupUnmappedComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupUnmappedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5477      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5478        res.setModeElement(parseEnumeration(xpp, ConceptMap.ConceptMapGroupUnmappedMode.NULL, new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory()));
5479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5480        res.setCodeElement(parseCode(xpp));
5481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5482        res.setDisplayElement(parseString(xpp));
5483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5484        res.setUrlElement(parseUri(xpp));
5485      } else if (!parseBackboneContent(eventType, xpp, res))
5486        return false;
5487    return true;
5488  }
5489
5490  protected Condition parseCondition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5491    Condition res = new Condition();
5492    parseDomainResourceAttributes(xpp, res);
5493    next(xpp);
5494    int eventType = nextNoWhitespace(xpp);
5495    while (eventType != XmlPullParser.END_TAG) {
5496  if (!parseConditionContent(eventType, xpp, res))
5497        unknownContent(xpp);
5498      eventType = nextNoWhitespace(xpp);
5499    }
5500    next(xpp);
5501    parseElementClose(res);
5502    return res;
5503  }
5504
5505  protected boolean parseConditionContent(int eventType, XmlPullParser xpp, Condition res) throws XmlPullParserException, IOException, FHIRFormatError {
5506      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5507        res.getIdentifier().add(parseIdentifier(xpp));
5508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
5509        res.setClinicalStatusElement(parseEnumeration(xpp, Condition.ConditionClinicalStatus.NULL, new Condition.ConditionClinicalStatusEnumFactory()));
5510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
5511        res.setVerificationStatusElement(parseEnumeration(xpp, Condition.ConditionVerificationStatus.NULL, new Condition.ConditionVerificationStatusEnumFactory()));
5512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5513        res.getCategory().add(parseCodeableConcept(xpp));
5514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
5515        res.setSeverity(parseCodeableConcept(xpp));
5516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5517        res.setCode(parseCodeableConcept(xpp));
5518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
5519        res.getBodySite().add(parseCodeableConcept(xpp));
5520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5521        res.setSubject(parseReference(xpp));
5522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
5523        res.setContext(parseReference(xpp));
5524      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
5525        res.setOnset(parseType("onset", xpp));
5526      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "abatement")) {
5527        res.setAbatement(parseType("abatement", xpp));
5528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assertedDate")) {
5529        res.setAssertedDateElement(parseDateTime(xpp));
5530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
5531        res.setAsserter(parseReference(xpp));
5532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stage")) {
5533        res.setStage(parseConditionConditionStageComponent(xpp, res));
5534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
5535        res.getEvidence().add(parseConditionConditionEvidenceComponent(xpp, res));
5536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5537        res.getNote().add(parseAnnotation(xpp));
5538      } else if (!parseDomainResourceContent(eventType, xpp, res))
5539        return false;
5540    return true;
5541  }
5542
5543  protected Condition.ConditionStageComponent parseConditionConditionStageComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5544    Condition.ConditionStageComponent res = new Condition.ConditionStageComponent();
5545    parseBackboneAttributes(xpp, res);
5546    next(xpp);
5547    int eventType = nextNoWhitespace(xpp);
5548    while (eventType != XmlPullParser.END_TAG) {
5549  if (!parseConditionConditionStageComponentContent(eventType, xpp, owner, res))
5550        unknownContent(xpp);
5551      eventType = nextNoWhitespace(xpp);
5552    }
5553    next(xpp);
5554    parseElementClose(res);
5555    return res;
5556  }
5557
5558  protected boolean parseConditionConditionStageComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionStageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5559      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
5560        res.setSummary(parseCodeableConcept(xpp));
5561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
5562        res.getAssessment().add(parseReference(xpp));
5563      } else if (!parseBackboneContent(eventType, xpp, res))
5564        return false;
5565    return true;
5566  }
5567
5568  protected Condition.ConditionEvidenceComponent parseConditionConditionEvidenceComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5569    Condition.ConditionEvidenceComponent res = new Condition.ConditionEvidenceComponent();
5570    parseBackboneAttributes(xpp, res);
5571    next(xpp);
5572    int eventType = nextNoWhitespace(xpp);
5573    while (eventType != XmlPullParser.END_TAG) {
5574  if (!parseConditionConditionEvidenceComponentContent(eventType, xpp, owner, res))
5575        unknownContent(xpp);
5576      eventType = nextNoWhitespace(xpp);
5577    }
5578    next(xpp);
5579    parseElementClose(res);
5580    return res;
5581  }
5582
5583  protected boolean parseConditionConditionEvidenceComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionEvidenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5584      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5585        res.getCode().add(parseCodeableConcept(xpp));
5586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5587        res.getDetail().add(parseReference(xpp));
5588      } else if (!parseBackboneContent(eventType, xpp, res))
5589        return false;
5590    return true;
5591  }
5592
5593  protected Consent parseConsent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5594    Consent res = new Consent();
5595    parseDomainResourceAttributes(xpp, res);
5596    next(xpp);
5597    int eventType = nextNoWhitespace(xpp);
5598    while (eventType != XmlPullParser.END_TAG) {
5599  if (!parseConsentContent(eventType, xpp, res))
5600        unknownContent(xpp);
5601      eventType = nextNoWhitespace(xpp);
5602    }
5603    next(xpp);
5604    parseElementClose(res);
5605    return res;
5606  }
5607
5608  protected boolean parseConsentContent(int eventType, XmlPullParser xpp, Consent res) throws XmlPullParserException, IOException, FHIRFormatError {
5609      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5610        res.setIdentifier(parseIdentifier(xpp));
5611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5612        res.setStatusElement(parseEnumeration(xpp, Consent.ConsentState.NULL, new Consent.ConsentStateEnumFactory()));
5613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5614        res.getCategory().add(parseCodeableConcept(xpp));
5615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
5616        res.setPatient(parseReference(xpp));
5617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5618        res.setPeriod(parsePeriod(xpp));
5619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
5620        res.setDateTimeElement(parseDateTime(xpp));
5621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("consentingParty")) {
5622        res.getConsentingParty().add(parseReference(xpp));
5623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
5624        res.getActor().add(parseConsentConsentActorComponent(xpp, res));
5625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
5626        res.getAction().add(parseCodeableConcept(xpp));
5627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
5628        res.getOrganization().add(parseReference(xpp));
5629      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
5630        res.setSource(parseType("source", xpp));
5631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
5632        res.getPolicy().add(parseConsentConsentPolicyComponent(xpp, res));
5633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyRule")) {
5634        res.setPolicyRuleElement(parseUri(xpp));
5635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
5636        res.getSecurityLabel().add(parseCoding(xpp));
5637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5638        res.getPurpose().add(parseCoding(xpp));
5639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataPeriod")) {
5640        res.setDataPeriod(parsePeriod(xpp));
5641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
5642        res.getData().add(parseConsentConsentDataComponent(xpp, res));
5643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("except")) {
5644        res.getExcept().add(parseConsentExceptComponent(xpp, res));
5645      } else if (!parseDomainResourceContent(eventType, xpp, res))
5646        return false;
5647    return true;
5648  }
5649
5650  protected Consent.ConsentActorComponent parseConsentConsentActorComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5651    Consent.ConsentActorComponent res = new Consent.ConsentActorComponent();
5652    parseBackboneAttributes(xpp, res);
5653    next(xpp);
5654    int eventType = nextNoWhitespace(xpp);
5655    while (eventType != XmlPullParser.END_TAG) {
5656  if (!parseConsentConsentActorComponentContent(eventType, xpp, owner, res))
5657        unknownContent(xpp);
5658      eventType = nextNoWhitespace(xpp);
5659    }
5660    next(xpp);
5661    parseElementClose(res);
5662    return res;
5663  }
5664
5665  protected boolean parseConsentConsentActorComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5666      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5667        res.setRole(parseCodeableConcept(xpp));
5668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
5669        res.setReference(parseReference(xpp));
5670      } else if (!parseBackboneContent(eventType, xpp, res))
5671        return false;
5672    return true;
5673  }
5674
5675  protected Consent.ConsentPolicyComponent parseConsentConsentPolicyComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5676    Consent.ConsentPolicyComponent res = new Consent.ConsentPolicyComponent();
5677    parseBackboneAttributes(xpp, res);
5678    next(xpp);
5679    int eventType = nextNoWhitespace(xpp);
5680    while (eventType != XmlPullParser.END_TAG) {
5681  if (!parseConsentConsentPolicyComponentContent(eventType, xpp, owner, res))
5682        unknownContent(xpp);
5683      eventType = nextNoWhitespace(xpp);
5684    }
5685    next(xpp);
5686    parseElementClose(res);
5687    return res;
5688  }
5689
5690  protected boolean parseConsentConsentPolicyComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentPolicyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5691      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
5692        res.setAuthorityElement(parseUri(xpp));
5693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
5694        res.setUriElement(parseUri(xpp));
5695      } else if (!parseBackboneContent(eventType, xpp, res))
5696        return false;
5697    return true;
5698  }
5699
5700  protected Consent.ConsentDataComponent parseConsentConsentDataComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5701    Consent.ConsentDataComponent res = new Consent.ConsentDataComponent();
5702    parseBackboneAttributes(xpp, res);
5703    next(xpp);
5704    int eventType = nextNoWhitespace(xpp);
5705    while (eventType != XmlPullParser.END_TAG) {
5706  if (!parseConsentConsentDataComponentContent(eventType, xpp, owner, res))
5707        unknownContent(xpp);
5708      eventType = nextNoWhitespace(xpp);
5709    }
5710    next(xpp);
5711    parseElementClose(res);
5712    return res;
5713  }
5714
5715  protected boolean parseConsentConsentDataComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5716      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
5717        res.setMeaningElement(parseEnumeration(xpp, Consent.ConsentDataMeaning.NULL, new Consent.ConsentDataMeaningEnumFactory()));
5718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
5719        res.setReference(parseReference(xpp));
5720      } else if (!parseBackboneContent(eventType, xpp, res))
5721        return false;
5722    return true;
5723  }
5724
5725  protected Consent.ExceptComponent parseConsentExceptComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5726    Consent.ExceptComponent res = new Consent.ExceptComponent();
5727    parseBackboneAttributes(xpp, res);
5728    next(xpp);
5729    int eventType = nextNoWhitespace(xpp);
5730    while (eventType != XmlPullParser.END_TAG) {
5731  if (!parseConsentExceptComponentContent(eventType, xpp, owner, res))
5732        unknownContent(xpp);
5733      eventType = nextNoWhitespace(xpp);
5734    }
5735    next(xpp);
5736    parseElementClose(res);
5737    return res;
5738  }
5739
5740  protected boolean parseConsentExceptComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ExceptComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5741      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5742        res.setTypeElement(parseEnumeration(xpp, Consent.ConsentExceptType.NULL, new Consent.ConsentExceptTypeEnumFactory()));
5743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5744        res.setPeriod(parsePeriod(xpp));
5745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
5746        res.getActor().add(parseConsentExceptActorComponent(xpp, owner));
5747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
5748        res.getAction().add(parseCodeableConcept(xpp));
5749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
5750        res.getSecurityLabel().add(parseCoding(xpp));
5751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5752        res.getPurpose().add(parseCoding(xpp));
5753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
5754        res.getClass_().add(parseCoding(xpp));
5755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5756        res.getCode().add(parseCoding(xpp));
5757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataPeriod")) {
5758        res.setDataPeriod(parsePeriod(xpp));
5759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
5760        res.getData().add(parseConsentExceptDataComponent(xpp, owner));
5761      } else if (!parseBackboneContent(eventType, xpp, res))
5762        return false;
5763    return true;
5764  }
5765
5766  protected Consent.ExceptActorComponent parseConsentExceptActorComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5767    Consent.ExceptActorComponent res = new Consent.ExceptActorComponent();
5768    parseBackboneAttributes(xpp, res);
5769    next(xpp);
5770    int eventType = nextNoWhitespace(xpp);
5771    while (eventType != XmlPullParser.END_TAG) {
5772  if (!parseConsentExceptActorComponentContent(eventType, xpp, owner, res))
5773        unknownContent(xpp);
5774      eventType = nextNoWhitespace(xpp);
5775    }
5776    next(xpp);
5777    parseElementClose(res);
5778    return res;
5779  }
5780
5781  protected boolean parseConsentExceptActorComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ExceptActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5782      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5783        res.setRole(parseCodeableConcept(xpp));
5784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
5785        res.setReference(parseReference(xpp));
5786      } else if (!parseBackboneContent(eventType, xpp, res))
5787        return false;
5788    return true;
5789  }
5790
5791  protected Consent.ExceptDataComponent parseConsentExceptDataComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
5792    Consent.ExceptDataComponent res = new Consent.ExceptDataComponent();
5793    parseBackboneAttributes(xpp, res);
5794    next(xpp);
5795    int eventType = nextNoWhitespace(xpp);
5796    while (eventType != XmlPullParser.END_TAG) {
5797  if (!parseConsentExceptDataComponentContent(eventType, xpp, owner, res))
5798        unknownContent(xpp);
5799      eventType = nextNoWhitespace(xpp);
5800    }
5801    next(xpp);
5802    parseElementClose(res);
5803    return res;
5804  }
5805
5806  protected boolean parseConsentExceptDataComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ExceptDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5807      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
5808        res.setMeaningElement(parseEnumeration(xpp, Consent.ConsentDataMeaning.NULL, new Consent.ConsentDataMeaningEnumFactory()));
5809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
5810        res.setReference(parseReference(xpp));
5811      } else if (!parseBackboneContent(eventType, xpp, res))
5812        return false;
5813    return true;
5814  }
5815
5816  protected Contract parseContract(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5817    Contract res = new Contract();
5818    parseDomainResourceAttributes(xpp, res);
5819    next(xpp);
5820    int eventType = nextNoWhitespace(xpp);
5821    while (eventType != XmlPullParser.END_TAG) {
5822  if (!parseContractContent(eventType, xpp, res))
5823        unknownContent(xpp);
5824      eventType = nextNoWhitespace(xpp);
5825    }
5826    next(xpp);
5827    parseElementClose(res);
5828    return res;
5829  }
5830
5831  protected boolean parseContractContent(int eventType, XmlPullParser xpp, Contract res) throws XmlPullParserException, IOException, FHIRFormatError {
5832      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5833        res.setIdentifier(parseIdentifier(xpp));
5834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5835        res.setStatusElement(parseEnumeration(xpp, Contract.ContractStatus.NULL, new Contract.ContractStatusEnumFactory()));
5836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
5837        res.setIssuedElement(parseDateTime(xpp));
5838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
5839        res.setApplies(parsePeriod(xpp));
5840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5841        res.getSubject().add(parseReference(xpp));
5842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
5843        res.getTopic().add(parseReference(xpp));
5844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
5845        res.getAuthority().add(parseReference(xpp));
5846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
5847        res.getDomain().add(parseReference(xpp));
5848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5849        res.setType(parseCodeableConcept(xpp));
5850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
5851        res.getSubType().add(parseCodeableConcept(xpp));
5852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
5853        res.getAction().add(parseCodeableConcept(xpp));
5854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionReason")) {
5855        res.getActionReason().add(parseCodeableConcept(xpp));
5856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decisionType")) {
5857        res.setDecisionType(parseCodeableConcept(xpp));
5858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDerivative")) {
5859        res.setContentDerivative(parseCodeableConcept(xpp));
5860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
5861        res.getSecurityLabel().add(parseCoding(xpp));
5862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
5863        res.getAgent().add(parseContractAgentComponent(xpp, res));
5864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signer")) {
5865        res.getSigner().add(parseContractSignatoryComponent(xpp, res));
5866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
5867        res.getValuedItem().add(parseContractValuedItemComponent(xpp, res));
5868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
5869        res.getTerm().add(parseContractTermComponent(xpp, res));
5870      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "binding")) {
5871        res.setBinding(parseType("binding", xpp));
5872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("friendly")) {
5873        res.getFriendly().add(parseContractFriendlyLanguageComponent(xpp, res));
5874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legal")) {
5875        res.getLegal().add(parseContractLegalLanguageComponent(xpp, res));
5876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
5877        res.getRule().add(parseContractComputableLanguageComponent(xpp, res));
5878      } else if (!parseDomainResourceContent(eventType, xpp, res))
5879        return false;
5880    return true;
5881  }
5882
5883  protected Contract.AgentComponent parseContractAgentComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
5884    Contract.AgentComponent res = new Contract.AgentComponent();
5885    parseBackboneAttributes(xpp, res);
5886    next(xpp);
5887    int eventType = nextNoWhitespace(xpp);
5888    while (eventType != XmlPullParser.END_TAG) {
5889  if (!parseContractAgentComponentContent(eventType, xpp, owner, res))
5890        unknownContent(xpp);
5891      eventType = nextNoWhitespace(xpp);
5892    }
5893    next(xpp);
5894    parseElementClose(res);
5895    return res;
5896  }
5897
5898  protected boolean parseContractAgentComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.AgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5899      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
5900        res.setActor(parseReference(xpp));
5901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5902        res.getRole().add(parseCodeableConcept(xpp));
5903      } else if (!parseBackboneContent(eventType, xpp, res))
5904        return false;
5905    return true;
5906  }
5907
5908  protected Contract.SignatoryComponent parseContractSignatoryComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
5909    Contract.SignatoryComponent res = new Contract.SignatoryComponent();
5910    parseBackboneAttributes(xpp, res);
5911    next(xpp);
5912    int eventType = nextNoWhitespace(xpp);
5913    while (eventType != XmlPullParser.END_TAG) {
5914  if (!parseContractSignatoryComponentContent(eventType, xpp, owner, res))
5915        unknownContent(xpp);
5916      eventType = nextNoWhitespace(xpp);
5917    }
5918    next(xpp);
5919    parseElementClose(res);
5920    return res;
5921  }
5922
5923  protected boolean parseContractSignatoryComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.SignatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5924      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5925        res.setType(parseCoding(xpp));
5926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
5927        res.setParty(parseReference(xpp));
5928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
5929        res.getSignature().add(parseSignature(xpp));
5930      } else if (!parseBackboneContent(eventType, xpp, res))
5931        return false;
5932    return true;
5933  }
5934
5935  protected Contract.ValuedItemComponent parseContractValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
5936    Contract.ValuedItemComponent res = new Contract.ValuedItemComponent();
5937    parseBackboneAttributes(xpp, res);
5938    next(xpp);
5939    int eventType = nextNoWhitespace(xpp);
5940    while (eventType != XmlPullParser.END_TAG) {
5941  if (!parseContractValuedItemComponentContent(eventType, xpp, owner, res))
5942        unknownContent(xpp);
5943      eventType = nextNoWhitespace(xpp);
5944    }
5945    next(xpp);
5946    parseElementClose(res);
5947    return res;
5948  }
5949
5950  protected boolean parseContractValuedItemComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ValuedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5951      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
5952        res.setEntity(parseType("entity", xpp));
5953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5954        res.setIdentifier(parseIdentifier(xpp));
5955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
5956        res.setEffectiveTimeElement(parseDateTime(xpp));
5957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5958        res.setQuantity(parseSimpleQuantity(xpp));
5959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5960        res.setUnitPrice(parseMoney(xpp));
5961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5962        res.setFactorElement(parseDecimal(xpp));
5963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
5964        res.setPointsElement(parseDecimal(xpp));
5965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5966        res.setNet(parseMoney(xpp));
5967      } else if (!parseBackboneContent(eventType, xpp, res))
5968        return false;
5969    return true;
5970  }
5971
5972  protected Contract.TermComponent parseContractTermComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
5973    Contract.TermComponent res = new Contract.TermComponent();
5974    parseBackboneAttributes(xpp, res);
5975    next(xpp);
5976    int eventType = nextNoWhitespace(xpp);
5977    while (eventType != XmlPullParser.END_TAG) {
5978  if (!parseContractTermComponentContent(eventType, xpp, owner, res))
5979        unknownContent(xpp);
5980      eventType = nextNoWhitespace(xpp);
5981    }
5982    next(xpp);
5983    parseElementClose(res);
5984    return res;
5985  }
5986
5987  protected boolean parseContractTermComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.TermComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5988      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5989        res.setIdentifier(parseIdentifier(xpp));
5990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
5991        res.setIssuedElement(parseDateTime(xpp));
5992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
5993        res.setApplies(parsePeriod(xpp));
5994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5995        res.setType(parseCodeableConcept(xpp));
5996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
5997        res.setSubType(parseCodeableConcept(xpp));
5998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
5999        res.getTopic().add(parseReference(xpp));
6000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6001        res.getAction().add(parseCodeableConcept(xpp));
6002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionReason")) {
6003        res.getActionReason().add(parseCodeableConcept(xpp));
6004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
6005        res.getSecurityLabel().add(parseCoding(xpp));
6006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
6007        res.getAgent().add(parseContractTermAgentComponent(xpp, owner));
6008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6009        res.setTextElement(parseString(xpp));
6010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
6011        res.getValuedItem().add(parseContractTermValuedItemComponent(xpp, owner));
6012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
6013        res.getGroup().add(parseContractTermComponent(xpp, owner));
6014      } else if (!parseBackboneContent(eventType, xpp, res))
6015        return false;
6016    return true;
6017  }
6018
6019  protected Contract.TermAgentComponent parseContractTermAgentComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6020    Contract.TermAgentComponent res = new Contract.TermAgentComponent();
6021    parseBackboneAttributes(xpp, res);
6022    next(xpp);
6023    int eventType = nextNoWhitespace(xpp);
6024    while (eventType != XmlPullParser.END_TAG) {
6025  if (!parseContractTermAgentComponentContent(eventType, xpp, owner, res))
6026        unknownContent(xpp);
6027      eventType = nextNoWhitespace(xpp);
6028    }
6029    next(xpp);
6030    parseElementClose(res);
6031    return res;
6032  }
6033
6034  protected boolean parseContractTermAgentComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.TermAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6035      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
6036        res.setActor(parseReference(xpp));
6037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6038        res.getRole().add(parseCodeableConcept(xpp));
6039      } else if (!parseBackboneContent(eventType, xpp, res))
6040        return false;
6041    return true;
6042  }
6043
6044  protected Contract.TermValuedItemComponent parseContractTermValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6045    Contract.TermValuedItemComponent res = new Contract.TermValuedItemComponent();
6046    parseBackboneAttributes(xpp, res);
6047    next(xpp);
6048    int eventType = nextNoWhitespace(xpp);
6049    while (eventType != XmlPullParser.END_TAG) {
6050  if (!parseContractTermValuedItemComponentContent(eventType, xpp, owner, res))
6051        unknownContent(xpp);
6052      eventType = nextNoWhitespace(xpp);
6053    }
6054    next(xpp);
6055    parseElementClose(res);
6056    return res;
6057  }
6058
6059  protected boolean parseContractTermValuedItemComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.TermValuedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6060      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
6061        res.setEntity(parseType("entity", xpp));
6062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6063        res.setIdentifier(parseIdentifier(xpp));
6064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
6065        res.setEffectiveTimeElement(parseDateTime(xpp));
6066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6067        res.setQuantity(parseSimpleQuantity(xpp));
6068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6069        res.setUnitPrice(parseMoney(xpp));
6070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6071        res.setFactorElement(parseDecimal(xpp));
6072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
6073        res.setPointsElement(parseDecimal(xpp));
6074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6075        res.setNet(parseMoney(xpp));
6076      } else if (!parseBackboneContent(eventType, xpp, res))
6077        return false;
6078    return true;
6079  }
6080
6081  protected Contract.FriendlyLanguageComponent parseContractFriendlyLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6082    Contract.FriendlyLanguageComponent res = new Contract.FriendlyLanguageComponent();
6083    parseBackboneAttributes(xpp, res);
6084    next(xpp);
6085    int eventType = nextNoWhitespace(xpp);
6086    while (eventType != XmlPullParser.END_TAG) {
6087  if (!parseContractFriendlyLanguageComponentContent(eventType, xpp, owner, res))
6088        unknownContent(xpp);
6089      eventType = nextNoWhitespace(xpp);
6090    }
6091    next(xpp);
6092    parseElementClose(res);
6093    return res;
6094  }
6095
6096  protected boolean parseContractFriendlyLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.FriendlyLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6097      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
6098        res.setContent(parseType("content", xpp));
6099      } else if (!parseBackboneContent(eventType, xpp, res))
6100        return false;
6101    return true;
6102  }
6103
6104  protected Contract.LegalLanguageComponent parseContractLegalLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6105    Contract.LegalLanguageComponent res = new Contract.LegalLanguageComponent();
6106    parseBackboneAttributes(xpp, res);
6107    next(xpp);
6108    int eventType = nextNoWhitespace(xpp);
6109    while (eventType != XmlPullParser.END_TAG) {
6110  if (!parseContractLegalLanguageComponentContent(eventType, xpp, owner, res))
6111        unknownContent(xpp);
6112      eventType = nextNoWhitespace(xpp);
6113    }
6114    next(xpp);
6115    parseElementClose(res);
6116    return res;
6117  }
6118
6119  protected boolean parseContractLegalLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.LegalLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6120      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
6121        res.setContent(parseType("content", xpp));
6122      } else if (!parseBackboneContent(eventType, xpp, res))
6123        return false;
6124    return true;
6125  }
6126
6127  protected Contract.ComputableLanguageComponent parseContractComputableLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6128    Contract.ComputableLanguageComponent res = new Contract.ComputableLanguageComponent();
6129    parseBackboneAttributes(xpp, res);
6130    next(xpp);
6131    int eventType = nextNoWhitespace(xpp);
6132    while (eventType != XmlPullParser.END_TAG) {
6133  if (!parseContractComputableLanguageComponentContent(eventType, xpp, owner, res))
6134        unknownContent(xpp);
6135      eventType = nextNoWhitespace(xpp);
6136    }
6137    next(xpp);
6138    parseElementClose(res);
6139    return res;
6140  }
6141
6142  protected boolean parseContractComputableLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ComputableLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6143      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
6144        res.setContent(parseType("content", xpp));
6145      } else if (!parseBackboneContent(eventType, xpp, res))
6146        return false;
6147    return true;
6148  }
6149
6150  protected Coverage parseCoverage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6151    Coverage res = new Coverage();
6152    parseDomainResourceAttributes(xpp, res);
6153    next(xpp);
6154    int eventType = nextNoWhitespace(xpp);
6155    while (eventType != XmlPullParser.END_TAG) {
6156  if (!parseCoverageContent(eventType, xpp, res))
6157        unknownContent(xpp);
6158      eventType = nextNoWhitespace(xpp);
6159    }
6160    next(xpp);
6161    parseElementClose(res);
6162    return res;
6163  }
6164
6165  protected boolean parseCoverageContent(int eventType, XmlPullParser xpp, Coverage res) throws XmlPullParserException, IOException, FHIRFormatError {
6166      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6167        res.getIdentifier().add(parseIdentifier(xpp));
6168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6169        res.setStatusElement(parseEnumeration(xpp, Coverage.CoverageStatus.NULL, new Coverage.CoverageStatusEnumFactory()));
6170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6171        res.setType(parseCodeableConcept(xpp));
6172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyHolder")) {
6173        res.setPolicyHolder(parseReference(xpp));
6174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriber")) {
6175        res.setSubscriber(parseReference(xpp));
6176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriberId")) {
6177        res.setSubscriberIdElement(parseString(xpp));
6178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("beneficiary")) {
6179        res.setBeneficiary(parseReference(xpp));
6180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
6181        res.setRelationship(parseCodeableConcept(xpp));
6182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6183        res.setPeriod(parsePeriod(xpp));
6184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payor")) {
6185        res.getPayor().add(parseReference(xpp));
6186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("grouping")) {
6187        res.setGrouping(parseCoverageGroupComponent(xpp, res));
6188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
6189        res.setDependentElement(parseString(xpp));
6190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6191        res.setSequenceElement(parseString(xpp));
6192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
6193        res.setOrderElement(parsePositiveInt(xpp));
6194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
6195        res.setNetworkElement(parseString(xpp));
6196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
6197        res.getContract().add(parseReference(xpp));
6198      } else if (!parseDomainResourceContent(eventType, xpp, res))
6199        return false;
6200    return true;
6201  }
6202
6203  protected Coverage.GroupComponent parseCoverageGroupComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
6204    Coverage.GroupComponent res = new Coverage.GroupComponent();
6205    parseBackboneAttributes(xpp, res);
6206    next(xpp);
6207    int eventType = nextNoWhitespace(xpp);
6208    while (eventType != XmlPullParser.END_TAG) {
6209  if (!parseCoverageGroupComponentContent(eventType, xpp, owner, res))
6210        unknownContent(xpp);
6211      eventType = nextNoWhitespace(xpp);
6212    }
6213    next(xpp);
6214    parseElementClose(res);
6215    return res;
6216  }
6217
6218  protected boolean parseCoverageGroupComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.GroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6219      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
6220        res.setGroupElement(parseString(xpp));
6221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupDisplay")) {
6222        res.setGroupDisplayElement(parseString(xpp));
6223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subGroup")) {
6224        res.setSubGroupElement(parseString(xpp));
6225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subGroupDisplay")) {
6226        res.setSubGroupDisplayElement(parseString(xpp));
6227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
6228        res.setPlanElement(parseString(xpp));
6229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planDisplay")) {
6230        res.setPlanDisplayElement(parseString(xpp));
6231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subPlan")) {
6232        res.setSubPlanElement(parseString(xpp));
6233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subPlanDisplay")) {
6234        res.setSubPlanDisplayElement(parseString(xpp));
6235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
6236        res.setClass_Element(parseString(xpp));
6237      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classDisplay")) {
6238        res.setClassDisplayElement(parseString(xpp));
6239      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subClass")) {
6240        res.setSubClassElement(parseString(xpp));
6241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subClassDisplay")) {
6242        res.setSubClassDisplayElement(parseString(xpp));
6243      } else if (!parseBackboneContent(eventType, xpp, res))
6244        return false;
6245    return true;
6246  }
6247
6248  protected DataElement parseDataElement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6249    DataElement res = new DataElement();
6250    parseDomainResourceAttributes(xpp, res);
6251    next(xpp);
6252    int eventType = nextNoWhitespace(xpp);
6253    while (eventType != XmlPullParser.END_TAG) {
6254  if (!parseDataElementContent(eventType, xpp, res))
6255        unknownContent(xpp);
6256      eventType = nextNoWhitespace(xpp);
6257    }
6258    next(xpp);
6259    parseElementClose(res);
6260    return res;
6261  }
6262
6263  protected boolean parseDataElementContent(int eventType, XmlPullParser xpp, DataElement res) throws XmlPullParserException, IOException, FHIRFormatError {
6264      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6265        res.setUrlElement(parseUri(xpp));
6266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6267        res.getIdentifier().add(parseIdentifier(xpp));
6268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6269        res.setVersionElement(parseString(xpp));
6270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6271        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
6272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
6273        res.setExperimentalElement(parseBoolean(xpp));
6274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6275        res.setDateElement(parseDateTime(xpp));
6276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6277        res.setPublisherElement(parseString(xpp));
6278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6279        res.setNameElement(parseString(xpp));
6280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6281        res.setTitleElement(parseString(xpp));
6282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6283        res.getContact().add(parseContactDetail(xpp));
6284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
6285        res.getUseContext().add(parseUsageContext(xpp));
6286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
6287        res.getJurisdiction().add(parseCodeableConcept(xpp));
6288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
6289        res.setCopyrightElement(parseMarkdown(xpp));
6290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stringency")) {
6291        res.setStringencyElement(parseEnumeration(xpp, DataElement.DataElementStringency.NULL, new DataElement.DataElementStringencyEnumFactory()));
6292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
6293        res.getMapping().add(parseDataElementDataElementMappingComponent(xpp, res));
6294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
6295        res.getElement().add(parseElementDefinition(xpp));
6296      } else if (!parseDomainResourceContent(eventType, xpp, res))
6297        return false;
6298    return true;
6299  }
6300
6301  protected DataElement.DataElementMappingComponent parseDataElementDataElementMappingComponent(XmlPullParser xpp, DataElement owner) throws XmlPullParserException, IOException, FHIRFormatError {
6302    DataElement.DataElementMappingComponent res = new DataElement.DataElementMappingComponent();
6303    parseBackboneAttributes(xpp, res);
6304    next(xpp);
6305    int eventType = nextNoWhitespace(xpp);
6306    while (eventType != XmlPullParser.END_TAG) {
6307  if (!parseDataElementDataElementMappingComponentContent(eventType, xpp, owner, res))
6308        unknownContent(xpp);
6309      eventType = nextNoWhitespace(xpp);
6310    }
6311    next(xpp);
6312    parseElementClose(res);
6313    return res;
6314  }
6315
6316  protected boolean parseDataElementDataElementMappingComponentContent(int eventType, XmlPullParser xpp, DataElement owner, DataElement.DataElementMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6317      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
6318        res.setIdentityElement(parseId(xpp));
6319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
6320        res.setUriElement(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("comment")) {
6324        res.setCommentElement(parseString(xpp));
6325      } else if (!parseBackboneContent(eventType, xpp, res))
6326        return false;
6327    return true;
6328  }
6329
6330  protected DetectedIssue parseDetectedIssue(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6331    DetectedIssue res = new DetectedIssue();
6332    parseDomainResourceAttributes(xpp, res);
6333    next(xpp);
6334    int eventType = nextNoWhitespace(xpp);
6335    while (eventType != XmlPullParser.END_TAG) {
6336  if (!parseDetectedIssueContent(eventType, xpp, res))
6337        unknownContent(xpp);
6338      eventType = nextNoWhitespace(xpp);
6339    }
6340    next(xpp);
6341    parseElementClose(res);
6342    return res;
6343  }
6344
6345  protected boolean parseDetectedIssueContent(int eventType, XmlPullParser xpp, DetectedIssue res) throws XmlPullParserException, IOException, FHIRFormatError {
6346      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6347        res.setIdentifier(parseIdentifier(xpp));
6348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6349        res.setStatusElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueStatus.NULL, new DetectedIssue.DetectedIssueStatusEnumFactory()));
6350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6351        res.setCategory(parseCodeableConcept(xpp));
6352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
6353        res.setSeverityElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueSeverity.NULL, new DetectedIssue.DetectedIssueSeverityEnumFactory()));
6354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6355        res.setPatient(parseReference(xpp));
6356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6357        res.setDateElement(parseDateTime(xpp));
6358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6359        res.setAuthor(parseReference(xpp));
6360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicated")) {
6361        res.getImplicated().add(parseReference(xpp));
6362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6363        res.setDetailElement(parseString(xpp));
6364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6365        res.setReferenceElement(parseUri(xpp));
6366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
6367        res.getMitigation().add(parseDetectedIssueDetectedIssueMitigationComponent(xpp, res));
6368      } else if (!parseDomainResourceContent(eventType, xpp, res))
6369        return false;
6370    return true;
6371  }
6372
6373  protected DetectedIssue.DetectedIssueMitigationComponent parseDetectedIssueDetectedIssueMitigationComponent(XmlPullParser xpp, DetectedIssue owner) throws XmlPullParserException, IOException, FHIRFormatError {
6374    DetectedIssue.DetectedIssueMitigationComponent res = new DetectedIssue.DetectedIssueMitigationComponent();
6375    parseBackboneAttributes(xpp, res);
6376    next(xpp);
6377    int eventType = nextNoWhitespace(xpp);
6378    while (eventType != XmlPullParser.END_TAG) {
6379  if (!parseDetectedIssueDetectedIssueMitigationComponentContent(eventType, xpp, owner, res))
6380        unknownContent(xpp);
6381      eventType = nextNoWhitespace(xpp);
6382    }
6383    next(xpp);
6384    parseElementClose(res);
6385    return res;
6386  }
6387
6388  protected boolean parseDetectedIssueDetectedIssueMitigationComponentContent(int eventType, XmlPullParser xpp, DetectedIssue owner, DetectedIssue.DetectedIssueMitigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6389      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6390        res.setAction(parseCodeableConcept(xpp));
6391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6392        res.setDateElement(parseDateTime(xpp));
6393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6394        res.setAuthor(parseReference(xpp));
6395      } else if (!parseBackboneContent(eventType, xpp, res))
6396        return false;
6397    return true;
6398  }
6399
6400  protected Device parseDevice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6401    Device res = new Device();
6402    parseDomainResourceAttributes(xpp, res);
6403    next(xpp);
6404    int eventType = nextNoWhitespace(xpp);
6405    while (eventType != XmlPullParser.END_TAG) {
6406  if (!parseDeviceContent(eventType, xpp, res))
6407        unknownContent(xpp);
6408      eventType = nextNoWhitespace(xpp);
6409    }
6410    next(xpp);
6411    parseElementClose(res);
6412    return res;
6413  }
6414
6415  protected boolean parseDeviceContent(int eventType, XmlPullParser xpp, Device res) throws XmlPullParserException, IOException, FHIRFormatError {
6416      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6417        res.getIdentifier().add(parseIdentifier(xpp));
6418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
6419        res.setUdi(parseDeviceDeviceUdiComponent(xpp, res));
6420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6421        res.setStatusElement(parseEnumeration(xpp, Device.FHIRDeviceStatus.NULL, new Device.FHIRDeviceStatusEnumFactory()));
6422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6423        res.setType(parseCodeableConcept(xpp));
6424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
6425        res.setLotNumberElement(parseString(xpp));
6426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
6427        res.setManufacturerElement(parseString(xpp));
6428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
6429        res.setManufactureDateElement(parseDateTime(xpp));
6430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
6431        res.setExpirationDateElement(parseDateTime(xpp));
6432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("model")) {
6433        res.setModelElement(parseString(xpp));
6434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6435        res.setVersionElement(parseString(xpp));
6436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6437        res.setPatient(parseReference(xpp));
6438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
6439        res.setOwner(parseReference(xpp));
6440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6441        res.getContact().add(parseContactPoint(xpp));
6442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
6443        res.setLocation(parseReference(xpp));
6444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6445        res.setUrlElement(parseUri(xpp));
6446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6447        res.getNote().add(parseAnnotation(xpp));
6448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
6449        res.getSafety().add(parseCodeableConcept(xpp));
6450      } else if (!parseDomainResourceContent(eventType, xpp, res))
6451        return false;
6452    return true;
6453  }
6454
6455  protected Device.DeviceUdiComponent parseDeviceDeviceUdiComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
6456    Device.DeviceUdiComponent res = new Device.DeviceUdiComponent();
6457    parseBackboneAttributes(xpp, res);
6458    next(xpp);
6459    int eventType = nextNoWhitespace(xpp);
6460    while (eventType != XmlPullParser.END_TAG) {
6461  if (!parseDeviceDeviceUdiComponentContent(eventType, xpp, owner, res))
6462        unknownContent(xpp);
6463      eventType = nextNoWhitespace(xpp);
6464    }
6465    next(xpp);
6466    parseElementClose(res);
6467    return res;
6468  }
6469
6470  protected boolean parseDeviceDeviceUdiComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceUdiComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6471      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
6472        res.setDeviceIdentifierElement(parseString(xpp));
6473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6474        res.setNameElement(parseString(xpp));
6475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
6476        res.setJurisdictionElement(parseUri(xpp));
6477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierHRF")) {
6478        res.setCarrierHRFElement(parseString(xpp));
6479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierAIDC")) {
6480        res.setCarrierAIDCElement(parseBase64Binary(xpp));
6481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
6482        res.setIssuerElement(parseUri(xpp));
6483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryType")) {
6484        res.setEntryTypeElement(parseEnumeration(xpp, Device.UDIEntryType.NULL, new Device.UDIEntryTypeEnumFactory()));
6485      } else if (!parseBackboneContent(eventType, xpp, res))
6486        return false;
6487    return true;
6488  }
6489
6490  protected DeviceComponent parseDeviceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6491    DeviceComponent res = new DeviceComponent();
6492    parseDomainResourceAttributes(xpp, res);
6493    next(xpp);
6494    int eventType = nextNoWhitespace(xpp);
6495    while (eventType != XmlPullParser.END_TAG) {
6496  if (!parseDeviceComponentContent(eventType, xpp, res))
6497        unknownContent(xpp);
6498      eventType = nextNoWhitespace(xpp);
6499    }
6500    next(xpp);
6501    parseElementClose(res);
6502    return res;
6503  }
6504
6505  protected boolean parseDeviceComponentContent(int eventType, XmlPullParser xpp, DeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6506      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6507        res.setIdentifier(parseIdentifier(xpp));
6508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6509        res.setType(parseCodeableConcept(xpp));
6510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastSystemChange")) {
6511        res.setLastSystemChangeElement(parseInstant(xpp));
6512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6513        res.setSource(parseReference(xpp));
6514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
6515        res.setParent(parseReference(xpp));
6516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
6517        res.getOperationalStatus().add(parseCodeableConcept(xpp));
6518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterGroup")) {
6519        res.setParameterGroup(parseCodeableConcept(xpp));
6520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPrinciple")) {
6521        res.setMeasurementPrincipleElement(parseEnumeration(xpp, DeviceComponent.MeasmntPrinciple.NULL, new DeviceComponent.MeasmntPrincipleEnumFactory()));
6522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionSpecification")) {
6523        res.getProductionSpecification().add(parseDeviceComponentDeviceComponentProductionSpecificationComponent(xpp, res));
6524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("languageCode")) {
6525        res.setLanguageCode(parseCodeableConcept(xpp));
6526      } else if (!parseDomainResourceContent(eventType, xpp, res))
6527        return false;
6528    return true;
6529  }
6530
6531  protected DeviceComponent.DeviceComponentProductionSpecificationComponent parseDeviceComponentDeviceComponentProductionSpecificationComponent(XmlPullParser xpp, DeviceComponent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6532    DeviceComponent.DeviceComponentProductionSpecificationComponent res = new DeviceComponent.DeviceComponentProductionSpecificationComponent();
6533    parseBackboneAttributes(xpp, res);
6534    next(xpp);
6535    int eventType = nextNoWhitespace(xpp);
6536    while (eventType != XmlPullParser.END_TAG) {
6537  if (!parseDeviceComponentDeviceComponentProductionSpecificationComponentContent(eventType, xpp, owner, res))
6538        unknownContent(xpp);
6539      eventType = nextNoWhitespace(xpp);
6540    }
6541    next(xpp);
6542    parseElementClose(res);
6543    return res;
6544  }
6545
6546  protected boolean parseDeviceComponentDeviceComponentProductionSpecificationComponentContent(int eventType, XmlPullParser xpp, DeviceComponent owner, DeviceComponent.DeviceComponentProductionSpecificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6547      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specType")) {
6548        res.setSpecType(parseCodeableConcept(xpp));
6549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("componentId")) {
6550        res.setComponentId(parseIdentifier(xpp));
6551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionSpec")) {
6552        res.setProductionSpecElement(parseString(xpp));
6553      } else if (!parseBackboneContent(eventType, xpp, res))
6554        return false;
6555    return true;
6556  }
6557
6558  protected DeviceMetric parseDeviceMetric(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6559    DeviceMetric res = new DeviceMetric();
6560    parseDomainResourceAttributes(xpp, res);
6561    next(xpp);
6562    int eventType = nextNoWhitespace(xpp);
6563    while (eventType != XmlPullParser.END_TAG) {
6564  if (!parseDeviceMetricContent(eventType, xpp, res))
6565        unknownContent(xpp);
6566      eventType = nextNoWhitespace(xpp);
6567    }
6568    next(xpp);
6569    parseElementClose(res);
6570    return res;
6571  }
6572
6573  protected boolean parseDeviceMetricContent(int eventType, XmlPullParser xpp, DeviceMetric res) throws XmlPullParserException, IOException, FHIRFormatError {
6574      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6575        res.setIdentifier(parseIdentifier(xpp));
6576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6577        res.setType(parseCodeableConcept(xpp));
6578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
6579        res.setUnit(parseCodeableConcept(xpp));
6580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6581        res.setSource(parseReference(xpp));
6582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
6583        res.setParent(parseReference(xpp));
6584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
6585        res.setOperationalStatusElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricOperationalStatus.NULL, new DeviceMetric.DeviceMetricOperationalStatusEnumFactory()));
6586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
6587        res.setColorElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricColor.NULL, new DeviceMetric.DeviceMetricColorEnumFactory()));
6588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6589        res.setCategoryElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCategory.NULL, new DeviceMetric.DeviceMetricCategoryEnumFactory()));
6590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPeriod")) {
6591        res.setMeasurementPeriod(parseTiming(xpp));
6592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("calibration")) {
6593        res.getCalibration().add(parseDeviceMetricDeviceMetricCalibrationComponent(xpp, res));
6594      } else if (!parseDomainResourceContent(eventType, xpp, res))
6595        return false;
6596    return true;
6597  }
6598
6599  protected DeviceMetric.DeviceMetricCalibrationComponent parseDeviceMetricDeviceMetricCalibrationComponent(XmlPullParser xpp, DeviceMetric owner) throws XmlPullParserException, IOException, FHIRFormatError {
6600    DeviceMetric.DeviceMetricCalibrationComponent res = new DeviceMetric.DeviceMetricCalibrationComponent();
6601    parseBackboneAttributes(xpp, res);
6602    next(xpp);
6603    int eventType = nextNoWhitespace(xpp);
6604    while (eventType != XmlPullParser.END_TAG) {
6605  if (!parseDeviceMetricDeviceMetricCalibrationComponentContent(eventType, xpp, owner, res))
6606        unknownContent(xpp);
6607      eventType = nextNoWhitespace(xpp);
6608    }
6609    next(xpp);
6610    parseElementClose(res);
6611    return res;
6612  }
6613
6614  protected boolean parseDeviceMetricDeviceMetricCalibrationComponentContent(int eventType, XmlPullParser xpp, DeviceMetric owner, DeviceMetric.DeviceMetricCalibrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6615      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6616        res.setTypeElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationType.NULL, new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory()));
6617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
6618        res.setStateElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationState.NULL, new DeviceMetric.DeviceMetricCalibrationStateEnumFactory()));
6619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
6620        res.setTimeElement(parseInstant(xpp));
6621      } else if (!parseBackboneContent(eventType, xpp, res))
6622        return false;
6623    return true;
6624  }
6625
6626  protected DeviceRequest parseDeviceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6627    DeviceRequest res = new DeviceRequest();
6628    parseDomainResourceAttributes(xpp, res);
6629    next(xpp);
6630    int eventType = nextNoWhitespace(xpp);
6631    while (eventType != XmlPullParser.END_TAG) {
6632  if (!parseDeviceRequestContent(eventType, xpp, res))
6633        unknownContent(xpp);
6634      eventType = nextNoWhitespace(xpp);
6635    }
6636    next(xpp);
6637    parseElementClose(res);
6638    return res;
6639  }
6640
6641  protected boolean parseDeviceRequestContent(int eventType, XmlPullParser xpp, DeviceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
6642      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6643        res.getIdentifier().add(parseIdentifier(xpp));
6644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
6645        res.getDefinition().add(parseReference(xpp));
6646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
6647        res.getBasedOn().add(parseReference(xpp));
6648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorRequest")) {
6649        res.getPriorRequest().add(parseReference(xpp));
6650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
6651        res.setGroupIdentifier(parseIdentifier(xpp));
6652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6653        res.setStatusElement(parseEnumeration(xpp, DeviceRequest.DeviceRequestStatus.NULL, new DeviceRequest.DeviceRequestStatusEnumFactory()));
6654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
6655        res.setIntent(parseCodeableConcept(xpp));
6656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
6657        res.setPriorityElement(parseEnumeration(xpp, DeviceRequest.RequestPriority.NULL, new DeviceRequest.RequestPriorityEnumFactory()));
6658      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "code")) {
6659        res.setCode(parseType("code", xpp));
6660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6661        res.setSubject(parseReference(xpp));
6662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6663        res.setContext(parseReference(xpp));
6664      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
6665        res.setOccurrence(parseType("occurrence", xpp));
6666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
6667        res.setAuthoredOnElement(parseDateTime(xpp));
6668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
6669        res.setRequester(parseDeviceRequestDeviceRequestRequesterComponent(xpp, res));
6670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
6671        res.setPerformerType(parseCodeableConcept(xpp));
6672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
6673        res.setPerformer(parseReference(xpp));
6674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
6675        res.getReasonCode().add(parseCodeableConcept(xpp));
6676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
6677        res.getReasonReference().add(parseReference(xpp));
6678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
6679        res.getSupportingInfo().add(parseReference(xpp));
6680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6681        res.getNote().add(parseAnnotation(xpp));
6682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
6683        res.getRelevantHistory().add(parseReference(xpp));
6684      } else if (!parseDomainResourceContent(eventType, xpp, res))
6685        return false;
6686    return true;
6687  }
6688
6689  protected DeviceRequest.DeviceRequestRequesterComponent parseDeviceRequestDeviceRequestRequesterComponent(XmlPullParser xpp, DeviceRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
6690    DeviceRequest.DeviceRequestRequesterComponent res = new DeviceRequest.DeviceRequestRequesterComponent();
6691    parseBackboneAttributes(xpp, res);
6692    next(xpp);
6693    int eventType = nextNoWhitespace(xpp);
6694    while (eventType != XmlPullParser.END_TAG) {
6695  if (!parseDeviceRequestDeviceRequestRequesterComponentContent(eventType, xpp, owner, res))
6696        unknownContent(xpp);
6697      eventType = nextNoWhitespace(xpp);
6698    }
6699    next(xpp);
6700    parseElementClose(res);
6701    return res;
6702  }
6703
6704  protected boolean parseDeviceRequestDeviceRequestRequesterComponentContent(int eventType, XmlPullParser xpp, DeviceRequest owner, DeviceRequest.DeviceRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6705      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
6706        res.setAgent(parseReference(xpp));
6707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
6708        res.setOnBehalfOf(parseReference(xpp));
6709      } else if (!parseBackboneContent(eventType, xpp, res))
6710        return false;
6711    return true;
6712  }
6713
6714  protected DeviceUseStatement parseDeviceUseStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6715    DeviceUseStatement res = new DeviceUseStatement();
6716    parseDomainResourceAttributes(xpp, res);
6717    next(xpp);
6718    int eventType = nextNoWhitespace(xpp);
6719    while (eventType != XmlPullParser.END_TAG) {
6720  if (!parseDeviceUseStatementContent(eventType, xpp, res))
6721        unknownContent(xpp);
6722      eventType = nextNoWhitespace(xpp);
6723    }
6724    next(xpp);
6725    parseElementClose(res);
6726    return res;
6727  }
6728
6729  protected boolean parseDeviceUseStatementContent(int eventType, XmlPullParser xpp, DeviceUseStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
6730      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6731        res.getIdentifier().add(parseIdentifier(xpp));
6732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6733        res.setStatusElement(parseEnumeration(xpp, DeviceUseStatement.DeviceUseStatementStatus.NULL, new DeviceUseStatement.DeviceUseStatementStatusEnumFactory()));
6734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6735        res.setSubject(parseReference(xpp));
6736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenUsed")) {
6737        res.setWhenUsed(parsePeriod(xpp));
6738      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
6739        res.setTiming(parseType("timing", xpp));
6740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
6741        res.setRecordedOnElement(parseDateTime(xpp));
6742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6743        res.setSource(parseReference(xpp));
6744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
6745        res.setDevice(parseReference(xpp));
6746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
6747        res.getIndication().add(parseCodeableConcept(xpp));
6748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
6749        res.setBodySite(parseCodeableConcept(xpp));
6750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6751        res.getNote().add(parseAnnotation(xpp));
6752      } else if (!parseDomainResourceContent(eventType, xpp, res))
6753        return false;
6754    return true;
6755  }
6756
6757  protected DiagnosticReport parseDiagnosticReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6758    DiagnosticReport res = new DiagnosticReport();
6759    parseDomainResourceAttributes(xpp, res);
6760    next(xpp);
6761    int eventType = nextNoWhitespace(xpp);
6762    while (eventType != XmlPullParser.END_TAG) {
6763  if (!parseDiagnosticReportContent(eventType, xpp, res))
6764        unknownContent(xpp);
6765      eventType = nextNoWhitespace(xpp);
6766    }
6767    next(xpp);
6768    parseElementClose(res);
6769    return res;
6770  }
6771
6772  protected boolean parseDiagnosticReportContent(int eventType, XmlPullParser xpp, DiagnosticReport res) throws XmlPullParserException, IOException, FHIRFormatError {
6773      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6774        res.getIdentifier().add(parseIdentifier(xpp));
6775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
6776        res.getBasedOn().add(parseReference(xpp));
6777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6778        res.setStatusElement(parseEnumeration(xpp, DiagnosticReport.DiagnosticReportStatus.NULL, new DiagnosticReport.DiagnosticReportStatusEnumFactory()));
6779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6780        res.setCategory(parseCodeableConcept(xpp));
6781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6782        res.setCode(parseCodeableConcept(xpp));
6783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6784        res.setSubject(parseReference(xpp));
6785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6786        res.setContext(parseReference(xpp));
6787      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
6788        res.setEffective(parseType("effective", xpp));
6789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
6790        res.setIssuedElement(parseInstant(xpp));
6791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
6792        res.getPerformer().add(parseDiagnosticReportDiagnosticReportPerformerComponent(xpp, res));
6793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
6794        res.getSpecimen().add(parseReference(xpp));
6795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
6796        res.getResult().add(parseReference(xpp));
6797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
6798        res.getImagingStudy().add(parseReference(xpp));
6799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
6800        res.getImage().add(parseDiagnosticReportDiagnosticReportImageComponent(xpp, res));
6801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusion")) {
6802        res.setConclusionElement(parseString(xpp));
6803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codedDiagnosis")) {
6804        res.getCodedDiagnosis().add(parseCodeableConcept(xpp));
6805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentedForm")) {
6806        res.getPresentedForm().add(parseAttachment(xpp));
6807      } else if (!parseDomainResourceContent(eventType, xpp, res))
6808        return false;
6809    return true;
6810  }
6811
6812  protected DiagnosticReport.DiagnosticReportPerformerComponent parseDiagnosticReportDiagnosticReportPerformerComponent(XmlPullParser xpp, DiagnosticReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
6813    DiagnosticReport.DiagnosticReportPerformerComponent res = new DiagnosticReport.DiagnosticReportPerformerComponent();
6814    parseBackboneAttributes(xpp, res);
6815    next(xpp);
6816    int eventType = nextNoWhitespace(xpp);
6817    while (eventType != XmlPullParser.END_TAG) {
6818  if (!parseDiagnosticReportDiagnosticReportPerformerComponentContent(eventType, xpp, owner, res))
6819        unknownContent(xpp);
6820      eventType = nextNoWhitespace(xpp);
6821    }
6822    next(xpp);
6823    parseElementClose(res);
6824    return res;
6825  }
6826
6827  protected boolean parseDiagnosticReportDiagnosticReportPerformerComponentContent(int eventType, XmlPullParser xpp, DiagnosticReport owner, DiagnosticReport.DiagnosticReportPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6828      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6829        res.setRole(parseCodeableConcept(xpp));
6830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
6831        res.setActor(parseReference(xpp));
6832      } else if (!parseBackboneContent(eventType, xpp, res))
6833        return false;
6834    return true;
6835  }
6836
6837  protected DiagnosticReport.DiagnosticReportImageComponent parseDiagnosticReportDiagnosticReportImageComponent(XmlPullParser xpp, DiagnosticReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
6838    DiagnosticReport.DiagnosticReportImageComponent res = new DiagnosticReport.DiagnosticReportImageComponent();
6839    parseBackboneAttributes(xpp, res);
6840    next(xpp);
6841    int eventType = nextNoWhitespace(xpp);
6842    while (eventType != XmlPullParser.END_TAG) {
6843  if (!parseDiagnosticReportDiagnosticReportImageComponentContent(eventType, xpp, owner, res))
6844        unknownContent(xpp);
6845      eventType = nextNoWhitespace(xpp);
6846    }
6847    next(xpp);
6848    parseElementClose(res);
6849    return res;
6850  }
6851
6852  protected boolean parseDiagnosticReportDiagnosticReportImageComponentContent(int eventType, XmlPullParser xpp, DiagnosticReport owner, DiagnosticReport.DiagnosticReportImageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6853      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
6854        res.setCommentElement(parseString(xpp));
6855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
6856        res.setLink(parseReference(xpp));
6857      } else if (!parseBackboneContent(eventType, xpp, res))
6858        return false;
6859    return true;
6860  }
6861
6862  protected DocumentManifest parseDocumentManifest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6863    DocumentManifest res = new DocumentManifest();
6864    parseDomainResourceAttributes(xpp, res);
6865    next(xpp);
6866    int eventType = nextNoWhitespace(xpp);
6867    while (eventType != XmlPullParser.END_TAG) {
6868  if (!parseDocumentManifestContent(eventType, xpp, res))
6869        unknownContent(xpp);
6870      eventType = nextNoWhitespace(xpp);
6871    }
6872    next(xpp);
6873    parseElementClose(res);
6874    return res;
6875  }
6876
6877  protected boolean parseDocumentManifestContent(int eventType, XmlPullParser xpp, DocumentManifest res) throws XmlPullParserException, IOException, FHIRFormatError {
6878      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
6879        res.setMasterIdentifier(parseIdentifier(xpp));
6880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6881        res.getIdentifier().add(parseIdentifier(xpp));
6882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6883        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
6884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6885        res.setType(parseCodeableConcept(xpp));
6886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6887        res.setSubject(parseReference(xpp));
6888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
6889        res.setCreatedElement(parseDateTime(xpp));
6890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6891        res.getAuthor().add(parseReference(xpp));
6892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
6893        res.getRecipient().add(parseReference(xpp));
6894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6895        res.setSourceElement(parseUri(xpp));
6896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6897        res.setDescriptionElement(parseString(xpp));
6898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
6899        res.getContent().add(parseDocumentManifestDocumentManifestContentComponent(xpp, res));
6900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
6901        res.getRelated().add(parseDocumentManifestDocumentManifestRelatedComponent(xpp, res));
6902      } else if (!parseDomainResourceContent(eventType, xpp, res))
6903        return false;
6904    return true;
6905  }
6906
6907  protected DocumentManifest.DocumentManifestContentComponent parseDocumentManifestDocumentManifestContentComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
6908    DocumentManifest.DocumentManifestContentComponent res = new DocumentManifest.DocumentManifestContentComponent();
6909    parseBackboneAttributes(xpp, res);
6910    next(xpp);
6911    int eventType = nextNoWhitespace(xpp);
6912    while (eventType != XmlPullParser.END_TAG) {
6913  if (!parseDocumentManifestDocumentManifestContentComponentContent(eventType, xpp, owner, res))
6914        unknownContent(xpp);
6915      eventType = nextNoWhitespace(xpp);
6916    }
6917    next(xpp);
6918    parseElementClose(res);
6919    return res;
6920  }
6921
6922  protected boolean parseDocumentManifestDocumentManifestContentComponentContent(int eventType, XmlPullParser xpp, DocumentManifest owner, DocumentManifest.DocumentManifestContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6923      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "p")) {
6924        res.setP(parseType("p", xpp));
6925      } else if (!parseBackboneContent(eventType, xpp, res))
6926        return false;
6927    return true;
6928  }
6929
6930  protected DocumentManifest.DocumentManifestRelatedComponent parseDocumentManifestDocumentManifestRelatedComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
6931    DocumentManifest.DocumentManifestRelatedComponent res = new DocumentManifest.DocumentManifestRelatedComponent();
6932    parseBackboneAttributes(xpp, res);
6933    next(xpp);
6934    int eventType = nextNoWhitespace(xpp);
6935    while (eventType != XmlPullParser.END_TAG) {
6936  if (!parseDocumentManifestDocumentManifestRelatedComponentContent(eventType, xpp, owner, res))
6937        unknownContent(xpp);
6938      eventType = nextNoWhitespace(xpp);
6939    }
6940    next(xpp);
6941    parseElementClose(res);
6942    return res;
6943  }
6944
6945  protected boolean parseDocumentManifestDocumentManifestRelatedComponentContent(int eventType, XmlPullParser xpp, DocumentManifest owner, DocumentManifest.DocumentManifestRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6946      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6947        res.setIdentifier(parseIdentifier(xpp));
6948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
6949        res.setRef(parseReference(xpp));
6950      } else if (!parseBackboneContent(eventType, xpp, res))
6951        return false;
6952    return true;
6953  }
6954
6955  protected DocumentReference parseDocumentReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6956    DocumentReference res = new DocumentReference();
6957    parseDomainResourceAttributes(xpp, res);
6958    next(xpp);
6959    int eventType = nextNoWhitespace(xpp);
6960    while (eventType != XmlPullParser.END_TAG) {
6961  if (!parseDocumentReferenceContent(eventType, xpp, res))
6962        unknownContent(xpp);
6963      eventType = nextNoWhitespace(xpp);
6964    }
6965    next(xpp);
6966    parseElementClose(res);
6967    return res;
6968  }
6969
6970  protected boolean parseDocumentReferenceContent(int eventType, XmlPullParser xpp, DocumentReference res) throws XmlPullParserException, IOException, FHIRFormatError {
6971      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
6972        res.setMasterIdentifier(parseIdentifier(xpp));
6973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6974        res.getIdentifier().add(parseIdentifier(xpp));
6975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6976        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
6977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("docStatus")) {
6978        res.setDocStatusElement(parseEnumeration(xpp, DocumentReference.ReferredDocumentStatus.NULL, new DocumentReference.ReferredDocumentStatusEnumFactory()));
6979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6980        res.setType(parseCodeableConcept(xpp));
6981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
6982        res.setClass_(parseCodeableConcept(xpp));
6983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6984        res.setSubject(parseReference(xpp));
6985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
6986        res.setCreatedElement(parseDateTime(xpp));
6987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indexed")) {
6988        res.setIndexedElement(parseInstant(xpp));
6989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6990        res.getAuthor().add(parseReference(xpp));
6991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authenticator")) {
6992        res.setAuthenticator(parseReference(xpp));
6993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
6994        res.setCustodian(parseReference(xpp));
6995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
6996        res.getRelatesTo().add(parseDocumentReferenceDocumentReferenceRelatesToComponent(xpp, res));
6997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6998        res.setDescriptionElement(parseString(xpp));
6999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
7000        res.getSecurityLabel().add(parseCodeableConcept(xpp));
7001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
7002        res.getContent().add(parseDocumentReferenceDocumentReferenceContentComponent(xpp, res));
7003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
7004        res.setContext(parseDocumentReferenceDocumentReferenceContextComponent(xpp, res));
7005      } else if (!parseDomainResourceContent(eventType, xpp, res))
7006        return false;
7007    return true;
7008  }
7009
7010  protected DocumentReference.DocumentReferenceRelatesToComponent parseDocumentReferenceDocumentReferenceRelatesToComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7011    DocumentReference.DocumentReferenceRelatesToComponent res = new DocumentReference.DocumentReferenceRelatesToComponent();
7012    parseBackboneAttributes(xpp, res);
7013    next(xpp);
7014    int eventType = nextNoWhitespace(xpp);
7015    while (eventType != XmlPullParser.END_TAG) {
7016  if (!parseDocumentReferenceDocumentReferenceRelatesToComponentContent(eventType, xpp, owner, res))
7017        unknownContent(xpp);
7018      eventType = nextNoWhitespace(xpp);
7019    }
7020    next(xpp);
7021    parseElementClose(res);
7022    return res;
7023  }
7024
7025  protected boolean parseDocumentReferenceDocumentReferenceRelatesToComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7026      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7027        res.setCodeElement(parseEnumeration(xpp, DocumentReference.DocumentRelationshipType.NULL, new DocumentReference.DocumentRelationshipTypeEnumFactory()));
7028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
7029        res.setTarget(parseReference(xpp));
7030      } else if (!parseBackboneContent(eventType, xpp, res))
7031        return false;
7032    return true;
7033  }
7034
7035  protected DocumentReference.DocumentReferenceContentComponent parseDocumentReferenceDocumentReferenceContentComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7036    DocumentReference.DocumentReferenceContentComponent res = new DocumentReference.DocumentReferenceContentComponent();
7037    parseBackboneAttributes(xpp, res);
7038    next(xpp);
7039    int eventType = nextNoWhitespace(xpp);
7040    while (eventType != XmlPullParser.END_TAG) {
7041  if (!parseDocumentReferenceDocumentReferenceContentComponentContent(eventType, xpp, owner, res))
7042        unknownContent(xpp);
7043      eventType = nextNoWhitespace(xpp);
7044    }
7045    next(xpp);
7046    parseElementClose(res);
7047    return res;
7048  }
7049
7050  protected boolean parseDocumentReferenceDocumentReferenceContentComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7051      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
7052        res.setAttachment(parseAttachment(xpp));
7053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
7054        res.setFormat(parseCoding(xpp));
7055      } else if (!parseBackboneContent(eventType, xpp, res))
7056        return false;
7057    return true;
7058  }
7059
7060  protected DocumentReference.DocumentReferenceContextComponent parseDocumentReferenceDocumentReferenceContextComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7061    DocumentReference.DocumentReferenceContextComponent res = new DocumentReference.DocumentReferenceContextComponent();
7062    parseBackboneAttributes(xpp, res);
7063    next(xpp);
7064    int eventType = nextNoWhitespace(xpp);
7065    while (eventType != XmlPullParser.END_TAG) {
7066  if (!parseDocumentReferenceDocumentReferenceContextComponentContent(eventType, xpp, owner, res))
7067        unknownContent(xpp);
7068      eventType = nextNoWhitespace(xpp);
7069    }
7070    next(xpp);
7071    parseElementClose(res);
7072    return res;
7073  }
7074
7075  protected boolean parseDocumentReferenceDocumentReferenceContextComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7076      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7077        res.setEncounter(parseReference(xpp));
7078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
7079        res.getEvent().add(parseCodeableConcept(xpp));
7080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7081        res.setPeriod(parsePeriod(xpp));
7082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facilityType")) {
7083        res.setFacilityType(parseCodeableConcept(xpp));
7084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practiceSetting")) {
7085        res.setPracticeSetting(parseCodeableConcept(xpp));
7086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourcePatientInfo")) {
7087        res.setSourcePatientInfo(parseReference(xpp));
7088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
7089        res.getRelated().add(parseDocumentReferenceDocumentReferenceContextRelatedComponent(xpp, owner));
7090      } else if (!parseBackboneContent(eventType, xpp, res))
7091        return false;
7092    return true;
7093  }
7094
7095  protected DocumentReference.DocumentReferenceContextRelatedComponent parseDocumentReferenceDocumentReferenceContextRelatedComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
7096    DocumentReference.DocumentReferenceContextRelatedComponent res = new DocumentReference.DocumentReferenceContextRelatedComponent();
7097    parseBackboneAttributes(xpp, res);
7098    next(xpp);
7099    int eventType = nextNoWhitespace(xpp);
7100    while (eventType != XmlPullParser.END_TAG) {
7101  if (!parseDocumentReferenceDocumentReferenceContextRelatedComponentContent(eventType, xpp, owner, res))
7102        unknownContent(xpp);
7103      eventType = nextNoWhitespace(xpp);
7104    }
7105    next(xpp);
7106    parseElementClose(res);
7107    return res;
7108  }
7109
7110  protected boolean parseDocumentReferenceDocumentReferenceContextRelatedComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContextRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7111      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7112        res.setIdentifier(parseIdentifier(xpp));
7113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
7114        res.setRef(parseReference(xpp));
7115      } else if (!parseBackboneContent(eventType, xpp, res))
7116        return false;
7117    return true;
7118  }
7119
7120  protected EligibilityRequest parseEligibilityRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7121    EligibilityRequest res = new EligibilityRequest();
7122    parseDomainResourceAttributes(xpp, res);
7123    next(xpp);
7124    int eventType = nextNoWhitespace(xpp);
7125    while (eventType != XmlPullParser.END_TAG) {
7126  if (!parseEligibilityRequestContent(eventType, xpp, res))
7127        unknownContent(xpp);
7128      eventType = nextNoWhitespace(xpp);
7129    }
7130    next(xpp);
7131    parseElementClose(res);
7132    return res;
7133  }
7134
7135  protected boolean parseEligibilityRequestContent(int eventType, XmlPullParser xpp, EligibilityRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
7136      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7137        res.getIdentifier().add(parseIdentifier(xpp));
7138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7139        res.setStatusElement(parseEnumeration(xpp, EligibilityRequest.EligibilityRequestStatus.NULL, new EligibilityRequest.EligibilityRequestStatusEnumFactory()));
7140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7141        res.setPriority(parseCodeableConcept(xpp));
7142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7143        res.setPatient(parseReference(xpp));
7144      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
7145        res.setServiced(parseType("serviced", xpp));
7146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7147        res.setCreatedElement(parseDateTime(xpp));
7148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
7149        res.setEnterer(parseReference(xpp));
7150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7151        res.setProvider(parseReference(xpp));
7152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
7153        res.setOrganization(parseReference(xpp));
7154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7155        res.setInsurer(parseReference(xpp));
7156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
7157        res.setFacility(parseReference(xpp));
7158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7159        res.setCoverage(parseReference(xpp));
7160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
7161        res.setBusinessArrangementElement(parseString(xpp));
7162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitCategory")) {
7163        res.setBenefitCategory(parseCodeableConcept(xpp));
7164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitSubCategory")) {
7165        res.setBenefitSubCategory(parseCodeableConcept(xpp));
7166      } else if (!parseDomainResourceContent(eventType, xpp, res))
7167        return false;
7168    return true;
7169  }
7170
7171  protected EligibilityResponse parseEligibilityResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7172    EligibilityResponse res = new EligibilityResponse();
7173    parseDomainResourceAttributes(xpp, res);
7174    next(xpp);
7175    int eventType = nextNoWhitespace(xpp);
7176    while (eventType != XmlPullParser.END_TAG) {
7177  if (!parseEligibilityResponseContent(eventType, xpp, res))
7178        unknownContent(xpp);
7179      eventType = nextNoWhitespace(xpp);
7180    }
7181    next(xpp);
7182    parseElementClose(res);
7183    return res;
7184  }
7185
7186  protected boolean parseEligibilityResponseContent(int eventType, XmlPullParser xpp, EligibilityResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
7187      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7188        res.getIdentifier().add(parseIdentifier(xpp));
7189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7190        res.setStatusElement(parseEnumeration(xpp, EligibilityResponse.EligibilityResponseStatus.NULL, new EligibilityResponse.EligibilityResponseStatusEnumFactory()));
7191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7192        res.setCreatedElement(parseDateTime(xpp));
7193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
7194        res.setRequestProvider(parseReference(xpp));
7195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
7196        res.setRequestOrganization(parseReference(xpp));
7197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7198        res.setRequest(parseReference(xpp));
7199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
7200        res.setOutcome(parseCodeableConcept(xpp));
7201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
7202        res.setDispositionElement(parseString(xpp));
7203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7204        res.setInsurer(parseReference(xpp));
7205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inforce")) {
7206        res.setInforceElement(parseBoolean(xpp));
7207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
7208        res.getInsurance().add(parseEligibilityResponseInsuranceComponent(xpp, res));
7209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
7210        res.setForm(parseCodeableConcept(xpp));
7211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
7212        res.getError().add(parseEligibilityResponseErrorsComponent(xpp, res));
7213      } else if (!parseDomainResourceContent(eventType, xpp, res))
7214        return false;
7215    return true;
7216  }
7217
7218  protected EligibilityResponse.InsuranceComponent parseEligibilityResponseInsuranceComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7219    EligibilityResponse.InsuranceComponent res = new EligibilityResponse.InsuranceComponent();
7220    parseBackboneAttributes(xpp, res);
7221    next(xpp);
7222    int eventType = nextNoWhitespace(xpp);
7223    while (eventType != XmlPullParser.END_TAG) {
7224  if (!parseEligibilityResponseInsuranceComponentContent(eventType, xpp, owner, res))
7225        unknownContent(xpp);
7226      eventType = nextNoWhitespace(xpp);
7227    }
7228    next(xpp);
7229    parseElementClose(res);
7230    return res;
7231  }
7232
7233  protected boolean parseEligibilityResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7234      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7235        res.setCoverage(parseReference(xpp));
7236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
7237        res.setContract(parseReference(xpp));
7238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
7239        res.getBenefitBalance().add(parseEligibilityResponseBenefitsComponent(xpp, owner));
7240      } else if (!parseBackboneContent(eventType, xpp, res))
7241        return false;
7242    return true;
7243  }
7244
7245  protected EligibilityResponse.BenefitsComponent parseEligibilityResponseBenefitsComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7246    EligibilityResponse.BenefitsComponent res = new EligibilityResponse.BenefitsComponent();
7247    parseBackboneAttributes(xpp, res);
7248    next(xpp);
7249    int eventType = nextNoWhitespace(xpp);
7250    while (eventType != XmlPullParser.END_TAG) {
7251  if (!parseEligibilityResponseBenefitsComponentContent(eventType, xpp, owner, res))
7252        unknownContent(xpp);
7253      eventType = nextNoWhitespace(xpp);
7254    }
7255    next(xpp);
7256    parseElementClose(res);
7257    return res;
7258  }
7259
7260  protected boolean parseEligibilityResponseBenefitsComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.BenefitsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7261      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7262        res.setCategory(parseCodeableConcept(xpp));
7263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subCategory")) {
7264        res.setSubCategory(parseCodeableConcept(xpp));
7265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
7266        res.setExcludedElement(parseBoolean(xpp));
7267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7268        res.setNameElement(parseString(xpp));
7269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7270        res.setDescriptionElement(parseString(xpp));
7271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
7272        res.setNetwork(parseCodeableConcept(xpp));
7273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
7274        res.setUnit(parseCodeableConcept(xpp));
7275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
7276        res.setTerm(parseCodeableConcept(xpp));
7277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
7278        res.getFinancial().add(parseEligibilityResponseBenefitComponent(xpp, owner));
7279      } else if (!parseBackboneContent(eventType, xpp, res))
7280        return false;
7281    return true;
7282  }
7283
7284  protected EligibilityResponse.BenefitComponent parseEligibilityResponseBenefitComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7285    EligibilityResponse.BenefitComponent res = new EligibilityResponse.BenefitComponent();
7286    parseBackboneAttributes(xpp, res);
7287    next(xpp);
7288    int eventType = nextNoWhitespace(xpp);
7289    while (eventType != XmlPullParser.END_TAG) {
7290  if (!parseEligibilityResponseBenefitComponentContent(eventType, xpp, owner, res))
7291        unknownContent(xpp);
7292      eventType = nextNoWhitespace(xpp);
7293    }
7294    next(xpp);
7295    parseElementClose(res);
7296    return res;
7297  }
7298
7299  protected boolean parseEligibilityResponseBenefitComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7300      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7301        res.setType(parseCodeableConcept(xpp));
7302      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
7303        res.setAllowed(parseType("allowed", xpp));
7304      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
7305        res.setUsed(parseType("used", xpp));
7306      } else if (!parseBackboneContent(eventType, xpp, res))
7307        return false;
7308    return true;
7309  }
7310
7311  protected EligibilityResponse.ErrorsComponent parseEligibilityResponseErrorsComponent(XmlPullParser xpp, EligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7312    EligibilityResponse.ErrorsComponent res = new EligibilityResponse.ErrorsComponent();
7313    parseBackboneAttributes(xpp, res);
7314    next(xpp);
7315    int eventType = nextNoWhitespace(xpp);
7316    while (eventType != XmlPullParser.END_TAG) {
7317  if (!parseEligibilityResponseErrorsComponentContent(eventType, xpp, owner, res))
7318        unknownContent(xpp);
7319      eventType = nextNoWhitespace(xpp);
7320    }
7321    next(xpp);
7322    parseElementClose(res);
7323    return res;
7324  }
7325
7326  protected boolean parseEligibilityResponseErrorsComponentContent(int eventType, XmlPullParser xpp, EligibilityResponse owner, EligibilityResponse.ErrorsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7327      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7328        res.setCode(parseCodeableConcept(xpp));
7329      } else if (!parseBackboneContent(eventType, xpp, res))
7330        return false;
7331    return true;
7332  }
7333
7334  protected Encounter parseEncounter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7335    Encounter res = new Encounter();
7336    parseDomainResourceAttributes(xpp, res);
7337    next(xpp);
7338    int eventType = nextNoWhitespace(xpp);
7339    while (eventType != XmlPullParser.END_TAG) {
7340  if (!parseEncounterContent(eventType, xpp, res))
7341        unknownContent(xpp);
7342      eventType = nextNoWhitespace(xpp);
7343    }
7344    next(xpp);
7345    parseElementClose(res);
7346    return res;
7347  }
7348
7349  protected boolean parseEncounterContent(int eventType, XmlPullParser xpp, Encounter res) throws XmlPullParserException, IOException, FHIRFormatError {
7350      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7351        res.getIdentifier().add(parseIdentifier(xpp));
7352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7353        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
7354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
7355        res.getStatusHistory().add(parseEncounterStatusHistoryComponent(xpp, res));
7356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
7357        res.setClass_(parseCoding(xpp));
7358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classHistory")) {
7359        res.getClassHistory().add(parseEncounterClassHistoryComponent(xpp, res));
7360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7361        res.getType().add(parseCodeableConcept(xpp));
7362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7363        res.setPriority(parseCodeableConcept(xpp));
7364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7365        res.setSubject(parseReference(xpp));
7366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("episodeOfCare")) {
7367        res.getEpisodeOfCare().add(parseReference(xpp));
7368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomingReferral")) {
7369        res.getIncomingReferral().add(parseReference(xpp));
7370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
7371        res.getParticipant().add(parseEncounterEncounterParticipantComponent(xpp, res));
7372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
7373        res.setAppointment(parseReference(xpp));
7374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7375        res.setPeriod(parsePeriod(xpp));
7376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
7377        res.setLength(parseDuration(xpp));
7378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
7379        res.getReason().add(parseCodeableConcept(xpp));
7380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
7381        res.getDiagnosis().add(parseEncounterDiagnosisComponent(xpp, res));
7382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
7383        res.getAccount().add(parseReference(xpp));
7384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
7385        res.setHospitalization(parseEncounterEncounterHospitalizationComponent(xpp, res));
7386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7387        res.getLocation().add(parseEncounterEncounterLocationComponent(xpp, res));
7388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvider")) {
7389        res.setServiceProvider(parseReference(xpp));
7390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
7391        res.setPartOf(parseReference(xpp));
7392      } else if (!parseDomainResourceContent(eventType, xpp, res))
7393        return false;
7394    return true;
7395  }
7396
7397  protected Encounter.StatusHistoryComponent parseEncounterStatusHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7398    Encounter.StatusHistoryComponent res = new Encounter.StatusHistoryComponent();
7399    parseBackboneAttributes(xpp, res);
7400    next(xpp);
7401    int eventType = nextNoWhitespace(xpp);
7402    while (eventType != XmlPullParser.END_TAG) {
7403  if (!parseEncounterStatusHistoryComponentContent(eventType, xpp, owner, res))
7404        unknownContent(xpp);
7405      eventType = nextNoWhitespace(xpp);
7406    }
7407    next(xpp);
7408    parseElementClose(res);
7409    return res;
7410  }
7411
7412  protected boolean parseEncounterStatusHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.StatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7413      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7414        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
7415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7416        res.setPeriod(parsePeriod(xpp));
7417      } else if (!parseBackboneContent(eventType, xpp, res))
7418        return false;
7419    return true;
7420  }
7421
7422  protected Encounter.ClassHistoryComponent parseEncounterClassHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7423    Encounter.ClassHistoryComponent res = new Encounter.ClassHistoryComponent();
7424    parseBackboneAttributes(xpp, res);
7425    next(xpp);
7426    int eventType = nextNoWhitespace(xpp);
7427    while (eventType != XmlPullParser.END_TAG) {
7428  if (!parseEncounterClassHistoryComponentContent(eventType, xpp, owner, res))
7429        unknownContent(xpp);
7430      eventType = nextNoWhitespace(xpp);
7431    }
7432    next(xpp);
7433    parseElementClose(res);
7434    return res;
7435  }
7436
7437  protected boolean parseEncounterClassHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.ClassHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7438      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
7439        res.setClass_(parseCoding(xpp));
7440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7441        res.setPeriod(parsePeriod(xpp));
7442      } else if (!parseBackboneContent(eventType, xpp, res))
7443        return false;
7444    return true;
7445  }
7446
7447  protected Encounter.EncounterParticipantComponent parseEncounterEncounterParticipantComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7448    Encounter.EncounterParticipantComponent res = new Encounter.EncounterParticipantComponent();
7449    parseBackboneAttributes(xpp, res);
7450    next(xpp);
7451    int eventType = nextNoWhitespace(xpp);
7452    while (eventType != XmlPullParser.END_TAG) {
7453  if (!parseEncounterEncounterParticipantComponentContent(eventType, xpp, owner, res))
7454        unknownContent(xpp);
7455      eventType = nextNoWhitespace(xpp);
7456    }
7457    next(xpp);
7458    parseElementClose(res);
7459    return res;
7460  }
7461
7462  protected boolean parseEncounterEncounterParticipantComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7463      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7464        res.getType().add(parseCodeableConcept(xpp));
7465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7466        res.setPeriod(parsePeriod(xpp));
7467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
7468        res.setIndividual(parseReference(xpp));
7469      } else if (!parseBackboneContent(eventType, xpp, res))
7470        return false;
7471    return true;
7472  }
7473
7474  protected Encounter.DiagnosisComponent parseEncounterDiagnosisComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7475    Encounter.DiagnosisComponent res = new Encounter.DiagnosisComponent();
7476    parseBackboneAttributes(xpp, res);
7477    next(xpp);
7478    int eventType = nextNoWhitespace(xpp);
7479    while (eventType != XmlPullParser.END_TAG) {
7480  if (!parseEncounterDiagnosisComponentContent(eventType, xpp, owner, res))
7481        unknownContent(xpp);
7482      eventType = nextNoWhitespace(xpp);
7483    }
7484    next(xpp);
7485    parseElementClose(res);
7486    return res;
7487  }
7488
7489  protected boolean parseEncounterDiagnosisComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7490      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
7491        res.setCondition(parseReference(xpp));
7492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
7493        res.setRole(parseCodeableConcept(xpp));
7494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
7495        res.setRankElement(parsePositiveInt(xpp));
7496      } else if (!parseBackboneContent(eventType, xpp, res))
7497        return false;
7498    return true;
7499  }
7500
7501  protected Encounter.EncounterHospitalizationComponent parseEncounterEncounterHospitalizationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7502    Encounter.EncounterHospitalizationComponent res = new Encounter.EncounterHospitalizationComponent();
7503    parseBackboneAttributes(xpp, res);
7504    next(xpp);
7505    int eventType = nextNoWhitespace(xpp);
7506    while (eventType != XmlPullParser.END_TAG) {
7507  if (!parseEncounterEncounterHospitalizationComponentContent(eventType, xpp, owner, res))
7508        unknownContent(xpp);
7509      eventType = nextNoWhitespace(xpp);
7510    }
7511    next(xpp);
7512    parseElementClose(res);
7513    return res;
7514  }
7515
7516  protected boolean parseEncounterEncounterHospitalizationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterHospitalizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7517      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAdmissionIdentifier")) {
7518        res.setPreAdmissionIdentifier(parseIdentifier(xpp));
7519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
7520        res.setOrigin(parseReference(xpp));
7521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admitSource")) {
7522        res.setAdmitSource(parseCodeableConcept(xpp));
7523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reAdmission")) {
7524        res.setReAdmission(parseCodeableConcept(xpp));
7525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dietPreference")) {
7526        res.getDietPreference().add(parseCodeableConcept(xpp));
7527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCourtesy")) {
7528        res.getSpecialCourtesy().add(parseCodeableConcept(xpp));
7529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialArrangement")) {
7530        res.getSpecialArrangement().add(parseCodeableConcept(xpp));
7531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
7532        res.setDestination(parseReference(xpp));
7533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDisposition")) {
7534        res.setDischargeDisposition(parseCodeableConcept(xpp));
7535      } else if (!parseBackboneContent(eventType, xpp, res))
7536        return false;
7537    return true;
7538  }
7539
7540  protected Encounter.EncounterLocationComponent parseEncounterEncounterLocationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
7541    Encounter.EncounterLocationComponent res = new Encounter.EncounterLocationComponent();
7542    parseBackboneAttributes(xpp, res);
7543    next(xpp);
7544    int eventType = nextNoWhitespace(xpp);
7545    while (eventType != XmlPullParser.END_TAG) {
7546  if (!parseEncounterEncounterLocationComponentContent(eventType, xpp, owner, res))
7547        unknownContent(xpp);
7548      eventType = nextNoWhitespace(xpp);
7549    }
7550    next(xpp);
7551    parseElementClose(res);
7552    return res;
7553  }
7554
7555  protected boolean parseEncounterEncounterLocationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterLocationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7556      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7557        res.setLocation(parseReference(xpp));
7558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7559        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterLocationStatus.NULL, new Encounter.EncounterLocationStatusEnumFactory()));
7560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7561        res.setPeriod(parsePeriod(xpp));
7562      } else if (!parseBackboneContent(eventType, xpp, res))
7563        return false;
7564    return true;
7565  }
7566
7567  protected Endpoint parseEndpoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7568    Endpoint res = new Endpoint();
7569    parseDomainResourceAttributes(xpp, res);
7570    next(xpp);
7571    int eventType = nextNoWhitespace(xpp);
7572    while (eventType != XmlPullParser.END_TAG) {
7573  if (!parseEndpointContent(eventType, xpp, res))
7574        unknownContent(xpp);
7575      eventType = nextNoWhitespace(xpp);
7576    }
7577    next(xpp);
7578    parseElementClose(res);
7579    return res;
7580  }
7581
7582  protected boolean parseEndpointContent(int eventType, XmlPullParser xpp, Endpoint res) throws XmlPullParserException, IOException, FHIRFormatError {
7583      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7584        res.getIdentifier().add(parseIdentifier(xpp));
7585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7586        res.setStatusElement(parseEnumeration(xpp, Endpoint.EndpointStatus.NULL, new Endpoint.EndpointStatusEnumFactory()));
7587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("connectionType")) {
7588        res.setConnectionType(parseCoding(xpp));
7589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7590        res.setNameElement(parseString(xpp));
7591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
7592        res.setManagingOrganization(parseReference(xpp));
7593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7594        res.getContact().add(parseContactPoint(xpp));
7595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7596        res.setPeriod(parsePeriod(xpp));
7597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadType")) {
7598        res.getPayloadType().add(parseCodeableConcept(xpp));
7599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadMimeType")) {
7600        res.getPayloadMimeType().add(parseCode(xpp));
7601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
7602        res.setAddressElement(parseUri(xpp));
7603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
7604        res.getHeader().add(parseString(xpp));
7605      } else if (!parseDomainResourceContent(eventType, xpp, res))
7606        return false;
7607    return true;
7608  }
7609
7610  protected EnrollmentRequest parseEnrollmentRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7611    EnrollmentRequest res = new EnrollmentRequest();
7612    parseDomainResourceAttributes(xpp, res);
7613    next(xpp);
7614    int eventType = nextNoWhitespace(xpp);
7615    while (eventType != XmlPullParser.END_TAG) {
7616  if (!parseEnrollmentRequestContent(eventType, xpp, res))
7617        unknownContent(xpp);
7618      eventType = nextNoWhitespace(xpp);
7619    }
7620    next(xpp);
7621    parseElementClose(res);
7622    return res;
7623  }
7624
7625  protected boolean parseEnrollmentRequestContent(int eventType, XmlPullParser xpp, EnrollmentRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
7626      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7627        res.getIdentifier().add(parseIdentifier(xpp));
7628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7629        res.setStatusElement(parseEnumeration(xpp, EnrollmentRequest.EnrollmentRequestStatus.NULL, new EnrollmentRequest.EnrollmentRequestStatusEnumFactory()));
7630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7631        res.setCreatedElement(parseDateTime(xpp));
7632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7633        res.setInsurer(parseReference(xpp));
7634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7635        res.setProvider(parseReference(xpp));
7636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
7637        res.setOrganization(parseReference(xpp));
7638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7639        res.setSubject(parseReference(xpp));
7640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7641        res.setCoverage(parseReference(xpp));
7642      } else if (!parseDomainResourceContent(eventType, xpp, res))
7643        return false;
7644    return true;
7645  }
7646
7647  protected EnrollmentResponse parseEnrollmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7648    EnrollmentResponse res = new EnrollmentResponse();
7649    parseDomainResourceAttributes(xpp, res);
7650    next(xpp);
7651    int eventType = nextNoWhitespace(xpp);
7652    while (eventType != XmlPullParser.END_TAG) {
7653  if (!parseEnrollmentResponseContent(eventType, xpp, res))
7654        unknownContent(xpp);
7655      eventType = nextNoWhitespace(xpp);
7656    }
7657    next(xpp);
7658    parseElementClose(res);
7659    return res;
7660  }
7661
7662  protected boolean parseEnrollmentResponseContent(int eventType, XmlPullParser xpp, EnrollmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
7663      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7664        res.getIdentifier().add(parseIdentifier(xpp));
7665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7666        res.setStatusElement(parseEnumeration(xpp, EnrollmentResponse.EnrollmentResponseStatus.NULL, new EnrollmentResponse.EnrollmentResponseStatusEnumFactory()));
7667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7668        res.setRequest(parseReference(xpp));
7669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
7670        res.setOutcome(parseCodeableConcept(xpp));
7671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
7672        res.setDispositionElement(parseString(xpp));
7673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7674        res.setCreatedElement(parseDateTime(xpp));
7675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
7676        res.setOrganization(parseReference(xpp));
7677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
7678        res.setRequestProvider(parseReference(xpp));
7679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
7680        res.setRequestOrganization(parseReference(xpp));
7681      } else if (!parseDomainResourceContent(eventType, xpp, res))
7682        return false;
7683    return true;
7684  }
7685
7686  protected EpisodeOfCare parseEpisodeOfCare(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7687    EpisodeOfCare res = new EpisodeOfCare();
7688    parseDomainResourceAttributes(xpp, res);
7689    next(xpp);
7690    int eventType = nextNoWhitespace(xpp);
7691    while (eventType != XmlPullParser.END_TAG) {
7692  if (!parseEpisodeOfCareContent(eventType, xpp, res))
7693        unknownContent(xpp);
7694      eventType = nextNoWhitespace(xpp);
7695    }
7696    next(xpp);
7697    parseElementClose(res);
7698    return res;
7699  }
7700
7701  protected boolean parseEpisodeOfCareContent(int eventType, XmlPullParser xpp, EpisodeOfCare res) throws XmlPullParserException, IOException, FHIRFormatError {
7702      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7703        res.getIdentifier().add(parseIdentifier(xpp));
7704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7705        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
7706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
7707        res.getStatusHistory().add(parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(xpp, res));
7708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7709        res.getType().add(parseCodeableConcept(xpp));
7710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
7711        res.getDiagnosis().add(parseEpisodeOfCareDiagnosisComponent(xpp, res));
7712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7713        res.setPatient(parseReference(xpp));
7714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
7715        res.setManagingOrganization(parseReference(xpp));
7716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7717        res.setPeriod(parsePeriod(xpp));
7718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralRequest")) {
7719        res.getReferralRequest().add(parseReference(xpp));
7720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careManager")) {
7721        res.setCareManager(parseReference(xpp));
7722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("team")) {
7723        res.getTeam().add(parseReference(xpp));
7724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
7725        res.getAccount().add(parseReference(xpp));
7726      } else if (!parseDomainResourceContent(eventType, xpp, res))
7727        return false;
7728    return true;
7729  }
7730
7731  protected EpisodeOfCare.EpisodeOfCareStatusHistoryComponent parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
7732    EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res = new EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
7733    parseBackboneAttributes(xpp, res);
7734    next(xpp);
7735    int eventType = nextNoWhitespace(xpp);
7736    while (eventType != XmlPullParser.END_TAG) {
7737  if (!parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(eventType, xpp, owner, res))
7738        unknownContent(xpp);
7739      eventType = nextNoWhitespace(xpp);
7740    }
7741    next(xpp);
7742    parseElementClose(res);
7743    return res;
7744  }
7745
7746  protected boolean parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7747      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7748        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
7749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7750        res.setPeriod(parsePeriod(xpp));
7751      } else if (!parseBackboneContent(eventType, xpp, res))
7752        return false;
7753    return true;
7754  }
7755
7756  protected EpisodeOfCare.DiagnosisComponent parseEpisodeOfCareDiagnosisComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
7757    EpisodeOfCare.DiagnosisComponent res = new EpisodeOfCare.DiagnosisComponent();
7758    parseBackboneAttributes(xpp, res);
7759    next(xpp);
7760    int eventType = nextNoWhitespace(xpp);
7761    while (eventType != XmlPullParser.END_TAG) {
7762  if (!parseEpisodeOfCareDiagnosisComponentContent(eventType, xpp, owner, res))
7763        unknownContent(xpp);
7764      eventType = nextNoWhitespace(xpp);
7765    }
7766    next(xpp);
7767    parseElementClose(res);
7768    return res;
7769  }
7770
7771  protected boolean parseEpisodeOfCareDiagnosisComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7772      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
7773        res.setCondition(parseReference(xpp));
7774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
7775        res.setRole(parseCodeableConcept(xpp));
7776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
7777        res.setRankElement(parsePositiveInt(xpp));
7778      } else if (!parseBackboneContent(eventType, xpp, res))
7779        return false;
7780    return true;
7781  }
7782
7783  protected ExpansionProfile parseExpansionProfile(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7784    ExpansionProfile res = new ExpansionProfile();
7785    parseDomainResourceAttributes(xpp, res);
7786    next(xpp);
7787    int eventType = nextNoWhitespace(xpp);
7788    while (eventType != XmlPullParser.END_TAG) {
7789  if (!parseExpansionProfileContent(eventType, xpp, res))
7790        unknownContent(xpp);
7791      eventType = nextNoWhitespace(xpp);
7792    }
7793    next(xpp);
7794    parseElementClose(res);
7795    return res;
7796  }
7797
7798  protected boolean parseExpansionProfileContent(int eventType, XmlPullParser xpp, ExpansionProfile res) throws XmlPullParserException, IOException, FHIRFormatError {
7799      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7800        res.setUrlElement(parseUri(xpp));
7801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7802        res.setIdentifier(parseIdentifier(xpp));
7803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7804        res.setVersionElement(parseString(xpp));
7805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7806        res.setNameElement(parseString(xpp));
7807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7808        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
7809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
7810        res.setExperimentalElement(parseBoolean(xpp));
7811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7812        res.setDateElement(parseDateTime(xpp));
7813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
7814        res.setPublisherElement(parseString(xpp));
7815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7816        res.getContact().add(parseContactDetail(xpp));
7817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7818        res.setDescriptionElement(parseMarkdown(xpp));
7819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
7820        res.getUseContext().add(parseUsageContext(xpp));
7821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
7822        res.getJurisdiction().add(parseCodeableConcept(xpp));
7823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixedVersion")) {
7824        res.getFixedVersion().add(parseExpansionProfileExpansionProfileFixedVersionComponent(xpp, res));
7825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludedSystem")) {
7826        res.setExcludedSystem(parseExpansionProfileExpansionProfileExcludedSystemComponent(xpp, res));
7827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("includeDesignations")) {
7828        res.setIncludeDesignationsElement(parseBoolean(xpp));
7829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
7830        res.setDesignation(parseExpansionProfileExpansionProfileDesignationComponent(xpp, res));
7831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("includeDefinition")) {
7832        res.setIncludeDefinitionElement(parseBoolean(xpp));
7833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activeOnly")) {
7834        res.setActiveOnlyElement(parseBoolean(xpp));
7835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeNested")) {
7836        res.setExcludeNestedElement(parseBoolean(xpp));
7837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeNotForUI")) {
7838        res.setExcludeNotForUIElement(parseBoolean(xpp));
7839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludePostCoordinated")) {
7840        res.setExcludePostCoordinatedElement(parseBoolean(xpp));
7841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("displayLanguage")) {
7842        res.setDisplayLanguageElement(parseCode(xpp));
7843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limitedExpansion")) {
7844        res.setLimitedExpansionElement(parseBoolean(xpp));
7845      } else if (!parseDomainResourceContent(eventType, xpp, res))
7846        return false;
7847    return true;
7848  }
7849
7850  protected ExpansionProfile.ExpansionProfileFixedVersionComponent parseExpansionProfileExpansionProfileFixedVersionComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7851    ExpansionProfile.ExpansionProfileFixedVersionComponent res = new ExpansionProfile.ExpansionProfileFixedVersionComponent();
7852    parseBackboneAttributes(xpp, res);
7853    next(xpp);
7854    int eventType = nextNoWhitespace(xpp);
7855    while (eventType != XmlPullParser.END_TAG) {
7856  if (!parseExpansionProfileExpansionProfileFixedVersionComponentContent(eventType, xpp, owner, res))
7857        unknownContent(xpp);
7858      eventType = nextNoWhitespace(xpp);
7859    }
7860    next(xpp);
7861    parseElementClose(res);
7862    return res;
7863  }
7864
7865  protected boolean parseExpansionProfileExpansionProfileFixedVersionComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.ExpansionProfileFixedVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7866      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
7867        res.setSystemElement(parseUri(xpp));
7868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7869        res.setVersionElement(parseString(xpp));
7870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
7871        res.setModeElement(parseEnumeration(xpp, ExpansionProfile.SystemVersionProcessingMode.NULL, new ExpansionProfile.SystemVersionProcessingModeEnumFactory()));
7872      } else if (!parseBackboneContent(eventType, xpp, res))
7873        return false;
7874    return true;
7875  }
7876
7877  protected ExpansionProfile.ExpansionProfileExcludedSystemComponent parseExpansionProfileExpansionProfileExcludedSystemComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7878    ExpansionProfile.ExpansionProfileExcludedSystemComponent res = new ExpansionProfile.ExpansionProfileExcludedSystemComponent();
7879    parseBackboneAttributes(xpp, res);
7880    next(xpp);
7881    int eventType = nextNoWhitespace(xpp);
7882    while (eventType != XmlPullParser.END_TAG) {
7883  if (!parseExpansionProfileExpansionProfileExcludedSystemComponentContent(eventType, xpp, owner, res))
7884        unknownContent(xpp);
7885      eventType = nextNoWhitespace(xpp);
7886    }
7887    next(xpp);
7888    parseElementClose(res);
7889    return res;
7890  }
7891
7892  protected boolean parseExpansionProfileExpansionProfileExcludedSystemComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.ExpansionProfileExcludedSystemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7893      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
7894        res.setSystemElement(parseUri(xpp));
7895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7896        res.setVersionElement(parseString(xpp));
7897      } else if (!parseBackboneContent(eventType, xpp, res))
7898        return false;
7899    return true;
7900  }
7901
7902  protected ExpansionProfile.ExpansionProfileDesignationComponent parseExpansionProfileExpansionProfileDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7903    ExpansionProfile.ExpansionProfileDesignationComponent res = new ExpansionProfile.ExpansionProfileDesignationComponent();
7904    parseBackboneAttributes(xpp, res);
7905    next(xpp);
7906    int eventType = nextNoWhitespace(xpp);
7907    while (eventType != XmlPullParser.END_TAG) {
7908  if (!parseExpansionProfileExpansionProfileDesignationComponentContent(eventType, xpp, owner, res))
7909        unknownContent(xpp);
7910      eventType = nextNoWhitespace(xpp);
7911    }
7912    next(xpp);
7913    parseElementClose(res);
7914    return res;
7915  }
7916
7917  protected boolean parseExpansionProfileExpansionProfileDesignationComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.ExpansionProfileDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7918      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
7919        res.setInclude(parseExpansionProfileDesignationIncludeComponent(xpp, owner));
7920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
7921        res.setExclude(parseExpansionProfileDesignationExcludeComponent(xpp, owner));
7922      } else if (!parseBackboneContent(eventType, xpp, res))
7923        return false;
7924    return true;
7925  }
7926
7927  protected ExpansionProfile.DesignationIncludeComponent parseExpansionProfileDesignationIncludeComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7928    ExpansionProfile.DesignationIncludeComponent res = new ExpansionProfile.DesignationIncludeComponent();
7929    parseBackboneAttributes(xpp, res);
7930    next(xpp);
7931    int eventType = nextNoWhitespace(xpp);
7932    while (eventType != XmlPullParser.END_TAG) {
7933  if (!parseExpansionProfileDesignationIncludeComponentContent(eventType, xpp, owner, res))
7934        unknownContent(xpp);
7935      eventType = nextNoWhitespace(xpp);
7936    }
7937    next(xpp);
7938    parseElementClose(res);
7939    return res;
7940  }
7941
7942  protected boolean parseExpansionProfileDesignationIncludeComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationIncludeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7943      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
7944        res.getDesignation().add(parseExpansionProfileDesignationIncludeDesignationComponent(xpp, owner));
7945      } else if (!parseBackboneContent(eventType, xpp, res))
7946        return false;
7947    return true;
7948  }
7949
7950  protected ExpansionProfile.DesignationIncludeDesignationComponent parseExpansionProfileDesignationIncludeDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7951    ExpansionProfile.DesignationIncludeDesignationComponent res = new ExpansionProfile.DesignationIncludeDesignationComponent();
7952    parseBackboneAttributes(xpp, res);
7953    next(xpp);
7954    int eventType = nextNoWhitespace(xpp);
7955    while (eventType != XmlPullParser.END_TAG) {
7956  if (!parseExpansionProfileDesignationIncludeDesignationComponentContent(eventType, xpp, owner, res))
7957        unknownContent(xpp);
7958      eventType = nextNoWhitespace(xpp);
7959    }
7960    next(xpp);
7961    parseElementClose(res);
7962    return res;
7963  }
7964
7965  protected boolean parseExpansionProfileDesignationIncludeDesignationComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationIncludeDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7966      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
7967        res.setLanguageElement(parseCode(xpp));
7968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
7969        res.setUse(parseCoding(xpp));
7970      } else if (!parseBackboneContent(eventType, xpp, res))
7971        return false;
7972    return true;
7973  }
7974
7975  protected ExpansionProfile.DesignationExcludeComponent parseExpansionProfileDesignationExcludeComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7976    ExpansionProfile.DesignationExcludeComponent res = new ExpansionProfile.DesignationExcludeComponent();
7977    parseBackboneAttributes(xpp, res);
7978    next(xpp);
7979    int eventType = nextNoWhitespace(xpp);
7980    while (eventType != XmlPullParser.END_TAG) {
7981  if (!parseExpansionProfileDesignationExcludeComponentContent(eventType, xpp, owner, res))
7982        unknownContent(xpp);
7983      eventType = nextNoWhitespace(xpp);
7984    }
7985    next(xpp);
7986    parseElementClose(res);
7987    return res;
7988  }
7989
7990  protected boolean parseExpansionProfileDesignationExcludeComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationExcludeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7991      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
7992        res.getDesignation().add(parseExpansionProfileDesignationExcludeDesignationComponent(xpp, owner));
7993      } else if (!parseBackboneContent(eventType, xpp, res))
7994        return false;
7995    return true;
7996  }
7997
7998  protected ExpansionProfile.DesignationExcludeDesignationComponent parseExpansionProfileDesignationExcludeDesignationComponent(XmlPullParser xpp, ExpansionProfile owner) throws XmlPullParserException, IOException, FHIRFormatError {
7999    ExpansionProfile.DesignationExcludeDesignationComponent res = new ExpansionProfile.DesignationExcludeDesignationComponent();
8000    parseBackboneAttributes(xpp, res);
8001    next(xpp);
8002    int eventType = nextNoWhitespace(xpp);
8003    while (eventType != XmlPullParser.END_TAG) {
8004  if (!parseExpansionProfileDesignationExcludeDesignationComponentContent(eventType, xpp, owner, res))
8005        unknownContent(xpp);
8006      eventType = nextNoWhitespace(xpp);
8007    }
8008    next(xpp);
8009    parseElementClose(res);
8010    return res;
8011  }
8012
8013  protected boolean parseExpansionProfileDesignationExcludeDesignationComponentContent(int eventType, XmlPullParser xpp, ExpansionProfile owner, ExpansionProfile.DesignationExcludeDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8014      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
8015        res.setLanguageElement(parseCode(xpp));
8016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
8017        res.setUse(parseCoding(xpp));
8018      } else if (!parseBackboneContent(eventType, xpp, res))
8019        return false;
8020    return true;
8021  }
8022
8023  protected ExplanationOfBenefit parseExplanationOfBenefit(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8024    ExplanationOfBenefit res = new ExplanationOfBenefit();
8025    parseDomainResourceAttributes(xpp, res);
8026    next(xpp);
8027    int eventType = nextNoWhitespace(xpp);
8028    while (eventType != XmlPullParser.END_TAG) {
8029  if (!parseExplanationOfBenefitContent(eventType, xpp, res))
8030        unknownContent(xpp);
8031      eventType = nextNoWhitespace(xpp);
8032    }
8033    next(xpp);
8034    parseElementClose(res);
8035    return res;
8036  }
8037
8038  protected boolean parseExplanationOfBenefitContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit res) throws XmlPullParserException, IOException, FHIRFormatError {
8039      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8040        res.getIdentifier().add(parseIdentifier(xpp));
8041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8042        res.setStatusElement(parseEnumeration(xpp, ExplanationOfBenefit.ExplanationOfBenefitStatus.NULL, new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory()));
8043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8044        res.setType(parseCodeableConcept(xpp));
8045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
8046        res.getSubType().add(parseCodeableConcept(xpp));
8047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8048        res.setPatient(parseReference(xpp));
8049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
8050        res.setBillablePeriod(parsePeriod(xpp));
8051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8052        res.setCreatedElement(parseDateTime(xpp));
8053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
8054        res.setEnterer(parseReference(xpp));
8055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
8056        res.setInsurer(parseReference(xpp));
8057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8058        res.setProvider(parseReference(xpp));
8059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
8060        res.setOrganization(parseReference(xpp));
8061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
8062        res.setReferral(parseReference(xpp));
8063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
8064        res.setFacility(parseReference(xpp));
8065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
8066        res.setClaim(parseReference(xpp));
8067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
8068        res.setClaimResponse(parseReference(xpp));
8069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8070        res.setOutcome(parseCodeableConcept(xpp));
8071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
8072        res.setDispositionElement(parseString(xpp));
8073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
8074        res.getRelated().add(parseExplanationOfBenefitRelatedClaimComponent(xpp, res));
8075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
8076        res.setPrescription(parseReference(xpp));
8077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
8078        res.setOriginalPrescription(parseReference(xpp));
8079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
8080        res.setPayee(parseExplanationOfBenefitPayeeComponent(xpp, res));
8081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
8082        res.getInformation().add(parseExplanationOfBenefitSupportingInformationComponent(xpp, res));
8083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
8084        res.getCareTeam().add(parseExplanationOfBenefitCareTeamComponent(xpp, res));
8085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
8086        res.getDiagnosis().add(parseExplanationOfBenefitDiagnosisComponent(xpp, res));
8087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
8088        res.getProcedure().add(parseExplanationOfBenefitProcedureComponent(xpp, res));
8089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precedence")) {
8090        res.setPrecedenceElement(parsePositiveInt(xpp));
8091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
8092        res.setInsurance(parseExplanationOfBenefitInsuranceComponent(xpp, res));
8093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
8094        res.setAccident(parseExplanationOfBenefitAccidentComponent(xpp, res));
8095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("employmentImpacted")) {
8096        res.setEmploymentImpacted(parsePeriod(xpp));
8097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
8098        res.setHospitalization(parsePeriod(xpp));
8099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
8100        res.getItem().add(parseExplanationOfBenefitItemComponent(xpp, res));
8101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
8102        res.getAddItem().add(parseExplanationOfBenefitAddedItemComponent(xpp, res));
8103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalCost")) {
8104        res.setTotalCost(parseMoney(xpp));
8105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unallocDeductable")) {
8106        res.setUnallocDeductable(parseMoney(xpp));
8107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalBenefit")) {
8108        res.setTotalBenefit(parseMoney(xpp));
8109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
8110        res.setPayment(parseExplanationOfBenefitPaymentComponent(xpp, res));
8111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
8112        res.setForm(parseCodeableConcept(xpp));
8113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
8114        res.getProcessNote().add(parseExplanationOfBenefitNoteComponent(xpp, res));
8115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
8116        res.getBenefitBalance().add(parseExplanationOfBenefitBenefitBalanceComponent(xpp, res));
8117      } else if (!parseDomainResourceContent(eventType, xpp, res))
8118        return false;
8119    return true;
8120  }
8121
8122  protected ExplanationOfBenefit.RelatedClaimComponent parseExplanationOfBenefitRelatedClaimComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8123    ExplanationOfBenefit.RelatedClaimComponent res = new ExplanationOfBenefit.RelatedClaimComponent();
8124    parseBackboneAttributes(xpp, res);
8125    next(xpp);
8126    int eventType = nextNoWhitespace(xpp);
8127    while (eventType != XmlPullParser.END_TAG) {
8128  if (!parseExplanationOfBenefitRelatedClaimComponentContent(eventType, xpp, owner, res))
8129        unknownContent(xpp);
8130      eventType = nextNoWhitespace(xpp);
8131    }
8132    next(xpp);
8133    parseElementClose(res);
8134    return res;
8135  }
8136
8137  protected boolean parseExplanationOfBenefitRelatedClaimComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8138      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
8139        res.setClaim(parseReference(xpp));
8140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
8141        res.setRelationship(parseCodeableConcept(xpp));
8142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
8143        res.setReference(parseIdentifier(xpp));
8144      } else if (!parseBackboneContent(eventType, xpp, res))
8145        return false;
8146    return true;
8147  }
8148
8149  protected ExplanationOfBenefit.PayeeComponent parseExplanationOfBenefitPayeeComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8150    ExplanationOfBenefit.PayeeComponent res = new ExplanationOfBenefit.PayeeComponent();
8151    parseBackboneAttributes(xpp, res);
8152    next(xpp);
8153    int eventType = nextNoWhitespace(xpp);
8154    while (eventType != XmlPullParser.END_TAG) {
8155  if (!parseExplanationOfBenefitPayeeComponentContent(eventType, xpp, owner, res))
8156        unknownContent(xpp);
8157      eventType = nextNoWhitespace(xpp);
8158    }
8159    next(xpp);
8160    parseElementClose(res);
8161    return res;
8162  }
8163
8164  protected boolean parseExplanationOfBenefitPayeeComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8165      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8166        res.setType(parseCodeableConcept(xpp));
8167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceType")) {
8168        res.setResourceType(parseCodeableConcept(xpp));
8169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
8170        res.setParty(parseReference(xpp));
8171      } else if (!parseBackboneContent(eventType, xpp, res))
8172        return false;
8173    return true;
8174  }
8175
8176  protected ExplanationOfBenefit.SupportingInformationComponent parseExplanationOfBenefitSupportingInformationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8177    ExplanationOfBenefit.SupportingInformationComponent res = new ExplanationOfBenefit.SupportingInformationComponent();
8178    parseBackboneAttributes(xpp, res);
8179    next(xpp);
8180    int eventType = nextNoWhitespace(xpp);
8181    while (eventType != XmlPullParser.END_TAG) {
8182  if (!parseExplanationOfBenefitSupportingInformationComponentContent(eventType, xpp, owner, res))
8183        unknownContent(xpp);
8184      eventType = nextNoWhitespace(xpp);
8185    }
8186    next(xpp);
8187    parseElementClose(res);
8188    return res;
8189  }
8190
8191  protected boolean parseExplanationOfBenefitSupportingInformationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8192      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8193        res.setSequenceElement(parsePositiveInt(xpp));
8194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8195        res.setCategory(parseCodeableConcept(xpp));
8196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8197        res.setCode(parseCodeableConcept(xpp));
8198      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
8199        res.setTiming(parseType("timing", xpp));
8200      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
8201        res.setValue(parseType("value", xpp));
8202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
8203        res.setReason(parseCoding(xpp));
8204      } else if (!parseBackboneContent(eventType, xpp, res))
8205        return false;
8206    return true;
8207  }
8208
8209  protected ExplanationOfBenefit.CareTeamComponent parseExplanationOfBenefitCareTeamComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8210    ExplanationOfBenefit.CareTeamComponent res = new ExplanationOfBenefit.CareTeamComponent();
8211    parseBackboneAttributes(xpp, res);
8212    next(xpp);
8213    int eventType = nextNoWhitespace(xpp);
8214    while (eventType != XmlPullParser.END_TAG) {
8215  if (!parseExplanationOfBenefitCareTeamComponentContent(eventType, xpp, owner, res))
8216        unknownContent(xpp);
8217      eventType = nextNoWhitespace(xpp);
8218    }
8219    next(xpp);
8220    parseElementClose(res);
8221    return res;
8222  }
8223
8224  protected boolean parseExplanationOfBenefitCareTeamComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8225      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8226        res.setSequenceElement(parsePositiveInt(xpp));
8227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
8228        res.setProvider(parseReference(xpp));
8229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
8230        res.setResponsibleElement(parseBoolean(xpp));
8231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8232        res.setRole(parseCodeableConcept(xpp));
8233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
8234        res.setQualification(parseCodeableConcept(xpp));
8235      } else if (!parseBackboneContent(eventType, xpp, res))
8236        return false;
8237    return true;
8238  }
8239
8240  protected ExplanationOfBenefit.DiagnosisComponent parseExplanationOfBenefitDiagnosisComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8241    ExplanationOfBenefit.DiagnosisComponent res = new ExplanationOfBenefit.DiagnosisComponent();
8242    parseBackboneAttributes(xpp, res);
8243    next(xpp);
8244    int eventType = nextNoWhitespace(xpp);
8245    while (eventType != XmlPullParser.END_TAG) {
8246  if (!parseExplanationOfBenefitDiagnosisComponentContent(eventType, xpp, owner, res))
8247        unknownContent(xpp);
8248      eventType = nextNoWhitespace(xpp);
8249    }
8250    next(xpp);
8251    parseElementClose(res);
8252    return res;
8253  }
8254
8255  protected boolean parseExplanationOfBenefitDiagnosisComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8256      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8257        res.setSequenceElement(parsePositiveInt(xpp));
8258      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
8259        res.setDiagnosis(parseType("diagnosis", xpp));
8260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8261        res.getType().add(parseCodeableConcept(xpp));
8262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
8263        res.setPackageCode(parseCodeableConcept(xpp));
8264      } else if (!parseBackboneContent(eventType, xpp, res))
8265        return false;
8266    return true;
8267  }
8268
8269  protected ExplanationOfBenefit.ProcedureComponent parseExplanationOfBenefitProcedureComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8270    ExplanationOfBenefit.ProcedureComponent res = new ExplanationOfBenefit.ProcedureComponent();
8271    parseBackboneAttributes(xpp, res);
8272    next(xpp);
8273    int eventType = nextNoWhitespace(xpp);
8274    while (eventType != XmlPullParser.END_TAG) {
8275  if (!parseExplanationOfBenefitProcedureComponentContent(eventType, xpp, owner, res))
8276        unknownContent(xpp);
8277      eventType = nextNoWhitespace(xpp);
8278    }
8279    next(xpp);
8280    parseElementClose(res);
8281    return res;
8282  }
8283
8284  protected boolean parseExplanationOfBenefitProcedureComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8285      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8286        res.setSequenceElement(parsePositiveInt(xpp));
8287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8288        res.setDateElement(parseDateTime(xpp));
8289      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
8290        res.setProcedure(parseType("procedure", xpp));
8291      } else if (!parseBackboneContent(eventType, xpp, res))
8292        return false;
8293    return true;
8294  }
8295
8296  protected ExplanationOfBenefit.InsuranceComponent parseExplanationOfBenefitInsuranceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8297    ExplanationOfBenefit.InsuranceComponent res = new ExplanationOfBenefit.InsuranceComponent();
8298    parseBackboneAttributes(xpp, res);
8299    next(xpp);
8300    int eventType = nextNoWhitespace(xpp);
8301    while (eventType != XmlPullParser.END_TAG) {
8302  if (!parseExplanationOfBenefitInsuranceComponentContent(eventType, xpp, owner, res))
8303        unknownContent(xpp);
8304      eventType = nextNoWhitespace(xpp);
8305    }
8306    next(xpp);
8307    parseElementClose(res);
8308    return res;
8309  }
8310
8311  protected boolean parseExplanationOfBenefitInsuranceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8312      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
8313        res.setCoverage(parseReference(xpp));
8314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
8315        res.getPreAuthRef().add(parseString(xpp));
8316      } else if (!parseBackboneContent(eventType, xpp, res))
8317        return false;
8318    return true;
8319  }
8320
8321  protected ExplanationOfBenefit.AccidentComponent parseExplanationOfBenefitAccidentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8322    ExplanationOfBenefit.AccidentComponent res = new ExplanationOfBenefit.AccidentComponent();
8323    parseBackboneAttributes(xpp, res);
8324    next(xpp);
8325    int eventType = nextNoWhitespace(xpp);
8326    while (eventType != XmlPullParser.END_TAG) {
8327  if (!parseExplanationOfBenefitAccidentComponentContent(eventType, xpp, owner, res))
8328        unknownContent(xpp);
8329      eventType = nextNoWhitespace(xpp);
8330    }
8331    next(xpp);
8332    parseElementClose(res);
8333    return res;
8334  }
8335
8336  protected boolean parseExplanationOfBenefitAccidentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8337      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8338        res.setDateElement(parseDate(xpp));
8339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8340        res.setType(parseCodeableConcept(xpp));
8341      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
8342        res.setLocation(parseType("location", xpp));
8343      } else if (!parseBackboneContent(eventType, xpp, res))
8344        return false;
8345    return true;
8346  }
8347
8348  protected ExplanationOfBenefit.ItemComponent parseExplanationOfBenefitItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8349    ExplanationOfBenefit.ItemComponent res = new ExplanationOfBenefit.ItemComponent();
8350    parseBackboneAttributes(xpp, res);
8351    next(xpp);
8352    int eventType = nextNoWhitespace(xpp);
8353    while (eventType != XmlPullParser.END_TAG) {
8354  if (!parseExplanationOfBenefitItemComponentContent(eventType, xpp, owner, res))
8355        unknownContent(xpp);
8356      eventType = nextNoWhitespace(xpp);
8357    }
8358    next(xpp);
8359    parseElementClose(res);
8360    return res;
8361  }
8362
8363  protected boolean parseExplanationOfBenefitItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8364      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8365        res.setSequenceElement(parsePositiveInt(xpp));
8366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamLinkId")) {
8367        res.getCareTeamLinkId().add(parsePositiveInt(xpp));
8368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisLinkId")) {
8369        res.getDiagnosisLinkId().add(parsePositiveInt(xpp));
8370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureLinkId")) {
8371        res.getProcedureLinkId().add(parsePositiveInt(xpp));
8372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationLinkId")) {
8373        res.getInformationLinkId().add(parsePositiveInt(xpp));
8374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8375        res.setRevenue(parseCodeableConcept(xpp));
8376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8377        res.setCategory(parseCodeableConcept(xpp));
8378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8379        res.setService(parseCodeableConcept(xpp));
8380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8381        res.getModifier().add(parseCodeableConcept(xpp));
8382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
8383        res.getProgramCode().add(parseCodeableConcept(xpp));
8384      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
8385        res.setServiced(parseType("serviced", xpp));
8386      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
8387        res.setLocation(parseType("location", xpp));
8388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
8389        res.setQuantity(parseSimpleQuantity(xpp));
8390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
8391        res.setUnitPrice(parseMoney(xpp));
8392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
8393        res.setFactorElement(parseDecimal(xpp));
8394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
8395        res.setNet(parseMoney(xpp));
8396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
8397        res.getUdi().add(parseReference(xpp));
8398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
8399        res.setBodySite(parseCodeableConcept(xpp));
8400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
8401        res.getSubSite().add(parseCodeableConcept(xpp));
8402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8403        res.getEncounter().add(parseReference(xpp));
8404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8405        res.getNoteNumber().add(parsePositiveInt(xpp));
8406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8407        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
8409        res.getDetail().add(parseExplanationOfBenefitDetailComponent(xpp, owner));
8410      } else if (!parseBackboneContent(eventType, xpp, res))
8411        return false;
8412    return true;
8413  }
8414
8415  protected ExplanationOfBenefit.AdjudicationComponent parseExplanationOfBenefitAdjudicationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8416    ExplanationOfBenefit.AdjudicationComponent res = new ExplanationOfBenefit.AdjudicationComponent();
8417    parseBackboneAttributes(xpp, res);
8418    next(xpp);
8419    int eventType = nextNoWhitespace(xpp);
8420    while (eventType != XmlPullParser.END_TAG) {
8421  if (!parseExplanationOfBenefitAdjudicationComponentContent(eventType, xpp, owner, res))
8422        unknownContent(xpp);
8423      eventType = nextNoWhitespace(xpp);
8424    }
8425    next(xpp);
8426    parseElementClose(res);
8427    return res;
8428  }
8429
8430  protected boolean parseExplanationOfBenefitAdjudicationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8431      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8432        res.setCategory(parseCodeableConcept(xpp));
8433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
8434        res.setReason(parseCodeableConcept(xpp));
8435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
8436        res.setAmount(parseMoney(xpp));
8437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
8438        res.setValueElement(parseDecimal(xpp));
8439      } else if (!parseBackboneContent(eventType, xpp, res))
8440        return false;
8441    return true;
8442  }
8443
8444  protected ExplanationOfBenefit.DetailComponent parseExplanationOfBenefitDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8445    ExplanationOfBenefit.DetailComponent res = new ExplanationOfBenefit.DetailComponent();
8446    parseBackboneAttributes(xpp, res);
8447    next(xpp);
8448    int eventType = nextNoWhitespace(xpp);
8449    while (eventType != XmlPullParser.END_TAG) {
8450  if (!parseExplanationOfBenefitDetailComponentContent(eventType, xpp, owner, res))
8451        unknownContent(xpp);
8452      eventType = nextNoWhitespace(xpp);
8453    }
8454    next(xpp);
8455    parseElementClose(res);
8456    return res;
8457  }
8458
8459  protected boolean parseExplanationOfBenefitDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8460      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8461        res.setSequenceElement(parsePositiveInt(xpp));
8462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8463        res.setType(parseCodeableConcept(xpp));
8464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8465        res.setRevenue(parseCodeableConcept(xpp));
8466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8467        res.setCategory(parseCodeableConcept(xpp));
8468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8469        res.setService(parseCodeableConcept(xpp));
8470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8471        res.getModifier().add(parseCodeableConcept(xpp));
8472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
8473        res.getProgramCode().add(parseCodeableConcept(xpp));
8474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
8475        res.setQuantity(parseSimpleQuantity(xpp));
8476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
8477        res.setUnitPrice(parseMoney(xpp));
8478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
8479        res.setFactorElement(parseDecimal(xpp));
8480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
8481        res.setNet(parseMoney(xpp));
8482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
8483        res.getUdi().add(parseReference(xpp));
8484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8485        res.getNoteNumber().add(parsePositiveInt(xpp));
8486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8487        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
8489        res.getSubDetail().add(parseExplanationOfBenefitSubDetailComponent(xpp, owner));
8490      } else if (!parseBackboneContent(eventType, xpp, res))
8491        return false;
8492    return true;
8493  }
8494
8495  protected ExplanationOfBenefit.SubDetailComponent parseExplanationOfBenefitSubDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8496    ExplanationOfBenefit.SubDetailComponent res = new ExplanationOfBenefit.SubDetailComponent();
8497    parseBackboneAttributes(xpp, res);
8498    next(xpp);
8499    int eventType = nextNoWhitespace(xpp);
8500    while (eventType != XmlPullParser.END_TAG) {
8501  if (!parseExplanationOfBenefitSubDetailComponentContent(eventType, xpp, owner, res))
8502        unknownContent(xpp);
8503      eventType = nextNoWhitespace(xpp);
8504    }
8505    next(xpp);
8506    parseElementClose(res);
8507    return res;
8508  }
8509
8510  protected boolean parseExplanationOfBenefitSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8511      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
8512        res.setSequenceElement(parsePositiveInt(xpp));
8513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8514        res.setType(parseCodeableConcept(xpp));
8515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8516        res.setRevenue(parseCodeableConcept(xpp));
8517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8518        res.setCategory(parseCodeableConcept(xpp));
8519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8520        res.setService(parseCodeableConcept(xpp));
8521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8522        res.getModifier().add(parseCodeableConcept(xpp));
8523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
8524        res.getProgramCode().add(parseCodeableConcept(xpp));
8525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
8526        res.setQuantity(parseSimpleQuantity(xpp));
8527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
8528        res.setUnitPrice(parseMoney(xpp));
8529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
8530        res.setFactorElement(parseDecimal(xpp));
8531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
8532        res.setNet(parseMoney(xpp));
8533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
8534        res.getUdi().add(parseReference(xpp));
8535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8536        res.getNoteNumber().add(parsePositiveInt(xpp));
8537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8538        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8539      } else if (!parseBackboneContent(eventType, xpp, res))
8540        return false;
8541    return true;
8542  }
8543
8544  protected ExplanationOfBenefit.AddedItemComponent parseExplanationOfBenefitAddedItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8545    ExplanationOfBenefit.AddedItemComponent res = new ExplanationOfBenefit.AddedItemComponent();
8546    parseBackboneAttributes(xpp, res);
8547    next(xpp);
8548    int eventType = nextNoWhitespace(xpp);
8549    while (eventType != XmlPullParser.END_TAG) {
8550  if (!parseExplanationOfBenefitAddedItemComponentContent(eventType, xpp, owner, res))
8551        unknownContent(xpp);
8552      eventType = nextNoWhitespace(xpp);
8553    }
8554    next(xpp);
8555    parseElementClose(res);
8556    return res;
8557  }
8558
8559  protected boolean parseExplanationOfBenefitAddedItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8560      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
8561        res.getSequenceLinkId().add(parsePositiveInt(xpp));
8562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8563        res.setRevenue(parseCodeableConcept(xpp));
8564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8565        res.setCategory(parseCodeableConcept(xpp));
8566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8567        res.setService(parseCodeableConcept(xpp));
8568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8569        res.getModifier().add(parseCodeableConcept(xpp));
8570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
8571        res.setFee(parseMoney(xpp));
8572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8573        res.getNoteNumber().add(parsePositiveInt(xpp));
8574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8575        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
8577        res.getDetail().add(parseExplanationOfBenefitAddedItemsDetailComponent(xpp, owner));
8578      } else if (!parseBackboneContent(eventType, xpp, res))
8579        return false;
8580    return true;
8581  }
8582
8583  protected ExplanationOfBenefit.AddedItemsDetailComponent parseExplanationOfBenefitAddedItemsDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8584    ExplanationOfBenefit.AddedItemsDetailComponent res = new ExplanationOfBenefit.AddedItemsDetailComponent();
8585    parseBackboneAttributes(xpp, res);
8586    next(xpp);
8587    int eventType = nextNoWhitespace(xpp);
8588    while (eventType != XmlPullParser.END_TAG) {
8589  if (!parseExplanationOfBenefitAddedItemsDetailComponentContent(eventType, xpp, owner, res))
8590        unknownContent(xpp);
8591      eventType = nextNoWhitespace(xpp);
8592    }
8593    next(xpp);
8594    parseElementClose(res);
8595    return res;
8596  }
8597
8598  protected boolean parseExplanationOfBenefitAddedItemsDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemsDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8599      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
8600        res.setRevenue(parseCodeableConcept(xpp));
8601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8602        res.setCategory(parseCodeableConcept(xpp));
8603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
8604        res.setService(parseCodeableConcept(xpp));
8605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
8606        res.getModifier().add(parseCodeableConcept(xpp));
8607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fee")) {
8608        res.setFee(parseMoney(xpp));
8609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
8610        res.getNoteNumber().add(parsePositiveInt(xpp));
8611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
8612        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
8613      } else if (!parseBackboneContent(eventType, xpp, res))
8614        return false;
8615    return true;
8616  }
8617
8618  protected ExplanationOfBenefit.PaymentComponent parseExplanationOfBenefitPaymentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8619    ExplanationOfBenefit.PaymentComponent res = new ExplanationOfBenefit.PaymentComponent();
8620    parseBackboneAttributes(xpp, res);
8621    next(xpp);
8622    int eventType = nextNoWhitespace(xpp);
8623    while (eventType != XmlPullParser.END_TAG) {
8624  if (!parseExplanationOfBenefitPaymentComponentContent(eventType, xpp, owner, res))
8625        unknownContent(xpp);
8626      eventType = nextNoWhitespace(xpp);
8627    }
8628    next(xpp);
8629    parseElementClose(res);
8630    return res;
8631  }
8632
8633  protected boolean parseExplanationOfBenefitPaymentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8634      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8635        res.setType(parseCodeableConcept(xpp));
8636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
8637        res.setAdjustment(parseMoney(xpp));
8638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
8639        res.setAdjustmentReason(parseCodeableConcept(xpp));
8640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8641        res.setDateElement(parseDate(xpp));
8642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
8643        res.setAmount(parseMoney(xpp));
8644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8645        res.setIdentifier(parseIdentifier(xpp));
8646      } else if (!parseBackboneContent(eventType, xpp, res))
8647        return false;
8648    return true;
8649  }
8650
8651  protected ExplanationOfBenefit.NoteComponent parseExplanationOfBenefitNoteComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8652    ExplanationOfBenefit.NoteComponent res = new ExplanationOfBenefit.NoteComponent();
8653    parseBackboneAttributes(xpp, res);
8654    next(xpp);
8655    int eventType = nextNoWhitespace(xpp);
8656    while (eventType != XmlPullParser.END_TAG) {
8657  if (!parseExplanationOfBenefitNoteComponentContent(eventType, xpp, owner, res))
8658        unknownContent(xpp);
8659      eventType = nextNoWhitespace(xpp);
8660    }
8661    next(xpp);
8662    parseElementClose(res);
8663    return res;
8664  }
8665
8666  protected boolean parseExplanationOfBenefitNoteComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8667      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
8668        res.setNumberElement(parsePositiveInt(xpp));
8669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8670        res.setType(parseCodeableConcept(xpp));
8671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8672        res.setTextElement(parseString(xpp));
8673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
8674        res.setLanguage(parseCodeableConcept(xpp));
8675      } else if (!parseBackboneContent(eventType, xpp, res))
8676        return false;
8677    return true;
8678  }
8679
8680  protected ExplanationOfBenefit.BenefitBalanceComponent parseExplanationOfBenefitBenefitBalanceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8681    ExplanationOfBenefit.BenefitBalanceComponent res = new ExplanationOfBenefit.BenefitBalanceComponent();
8682    parseBackboneAttributes(xpp, res);
8683    next(xpp);
8684    int eventType = nextNoWhitespace(xpp);
8685    while (eventType != XmlPullParser.END_TAG) {
8686  if (!parseExplanationOfBenefitBenefitBalanceComponentContent(eventType, xpp, owner, res))
8687        unknownContent(xpp);
8688      eventType = nextNoWhitespace(xpp);
8689    }
8690    next(xpp);
8691    parseElementClose(res);
8692    return res;
8693  }
8694
8695  protected boolean parseExplanationOfBenefitBenefitBalanceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitBalanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8696      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8697        res.setCategory(parseCodeableConcept(xpp));
8698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subCategory")) {
8699        res.setSubCategory(parseCodeableConcept(xpp));
8700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
8701        res.setExcludedElement(parseBoolean(xpp));
8702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8703        res.setNameElement(parseString(xpp));
8704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8705        res.setDescriptionElement(parseString(xpp));
8706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
8707        res.setNetwork(parseCodeableConcept(xpp));
8708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
8709        res.setUnit(parseCodeableConcept(xpp));
8710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
8711        res.setTerm(parseCodeableConcept(xpp));
8712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
8713        res.getFinancial().add(parseExplanationOfBenefitBenefitComponent(xpp, owner));
8714      } else if (!parseBackboneContent(eventType, xpp, res))
8715        return false;
8716    return true;
8717  }
8718
8719  protected ExplanationOfBenefit.BenefitComponent parseExplanationOfBenefitBenefitComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
8720    ExplanationOfBenefit.BenefitComponent res = new ExplanationOfBenefit.BenefitComponent();
8721    parseBackboneAttributes(xpp, res);
8722    next(xpp);
8723    int eventType = nextNoWhitespace(xpp);
8724    while (eventType != XmlPullParser.END_TAG) {
8725  if (!parseExplanationOfBenefitBenefitComponentContent(eventType, xpp, owner, res))
8726        unknownContent(xpp);
8727      eventType = nextNoWhitespace(xpp);
8728    }
8729    next(xpp);
8730    parseElementClose(res);
8731    return res;
8732  }
8733
8734  protected boolean parseExplanationOfBenefitBenefitComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8735      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8736        res.setType(parseCodeableConcept(xpp));
8737      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
8738        res.setAllowed(parseType("allowed", xpp));
8739      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
8740        res.setUsed(parseType("used", xpp));
8741      } else if (!parseBackboneContent(eventType, xpp, res))
8742        return false;
8743    return true;
8744  }
8745
8746  protected FamilyMemberHistory parseFamilyMemberHistory(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8747    FamilyMemberHistory res = new FamilyMemberHistory();
8748    parseDomainResourceAttributes(xpp, res);
8749    next(xpp);
8750    int eventType = nextNoWhitespace(xpp);
8751    while (eventType != XmlPullParser.END_TAG) {
8752  if (!parseFamilyMemberHistoryContent(eventType, xpp, res))
8753        unknownContent(xpp);
8754      eventType = nextNoWhitespace(xpp);
8755    }
8756    next(xpp);
8757    parseElementClose(res);
8758    return res;
8759  }
8760
8761  protected boolean parseFamilyMemberHistoryContent(int eventType, XmlPullParser xpp, FamilyMemberHistory res) throws XmlPullParserException, IOException, FHIRFormatError {
8762      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8763        res.getIdentifier().add(parseIdentifier(xpp));
8764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
8765        res.getDefinition().add(parseReference(xpp));
8766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8767        res.setStatusElement(parseEnumeration(xpp, FamilyMemberHistory.FamilyHistoryStatus.NULL, new FamilyMemberHistory.FamilyHistoryStatusEnumFactory()));
8768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDone")) {
8769        res.setNotDoneElement(parseBoolean(xpp));
8770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDoneReason")) {
8771        res.setNotDoneReason(parseCodeableConcept(xpp));
8772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
8773        res.setPatient(parseReference(xpp));
8774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8775        res.setDateElement(parseDateTime(xpp));
8776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8777        res.setNameElement(parseString(xpp));
8778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
8779        res.setRelationship(parseCodeableConcept(xpp));
8780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
8781        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
8782      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "born")) {
8783        res.setBorn(parseType("born", xpp));
8784      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
8785        res.setAge(parseType("age", xpp));
8786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("estimatedAge")) {
8787        res.setEstimatedAgeElement(parseBoolean(xpp));
8788      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
8789        res.setDeceased(parseType("deceased", xpp));
8790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8791        res.getReasonCode().add(parseCodeableConcept(xpp));
8792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8793        res.getReasonReference().add(parseReference(xpp));
8794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8795        res.getNote().add(parseAnnotation(xpp));
8796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
8797        res.getCondition().add(parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(xpp, res));
8798      } else if (!parseDomainResourceContent(eventType, xpp, res))
8799        return false;
8800    return true;
8801  }
8802
8803  protected FamilyMemberHistory.FamilyMemberHistoryConditionComponent parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(XmlPullParser xpp, FamilyMemberHistory owner) throws XmlPullParserException, IOException, FHIRFormatError {
8804    FamilyMemberHistory.FamilyMemberHistoryConditionComponent res = new FamilyMemberHistory.FamilyMemberHistoryConditionComponent();
8805    parseBackboneAttributes(xpp, res);
8806    next(xpp);
8807    int eventType = nextNoWhitespace(xpp);
8808    while (eventType != XmlPullParser.END_TAG) {
8809  if (!parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(eventType, xpp, owner, res))
8810        unknownContent(xpp);
8811      eventType = nextNoWhitespace(xpp);
8812    }
8813    next(xpp);
8814    parseElementClose(res);
8815    return res;
8816  }
8817
8818  protected boolean parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(int eventType, XmlPullParser xpp, FamilyMemberHistory owner, FamilyMemberHistory.FamilyMemberHistoryConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8819      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8820        res.setCode(parseCodeableConcept(xpp));
8821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8822        res.setOutcome(parseCodeableConcept(xpp));
8823      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
8824        res.setOnset(parseType("onset", xpp));
8825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8826        res.getNote().add(parseAnnotation(xpp));
8827      } else if (!parseBackboneContent(eventType, xpp, res))
8828        return false;
8829    return true;
8830  }
8831
8832  protected Flag parseFlag(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8833    Flag res = new Flag();
8834    parseDomainResourceAttributes(xpp, res);
8835    next(xpp);
8836    int eventType = nextNoWhitespace(xpp);
8837    while (eventType != XmlPullParser.END_TAG) {
8838  if (!parseFlagContent(eventType, xpp, res))
8839        unknownContent(xpp);
8840      eventType = nextNoWhitespace(xpp);
8841    }
8842    next(xpp);
8843    parseElementClose(res);
8844    return res;
8845  }
8846
8847  protected boolean parseFlagContent(int eventType, XmlPullParser xpp, Flag res) throws XmlPullParserException, IOException, FHIRFormatError {
8848      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8849        res.getIdentifier().add(parseIdentifier(xpp));
8850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8851        res.setStatusElement(parseEnumeration(xpp, Flag.FlagStatus.NULL, new Flag.FlagStatusEnumFactory()));
8852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8853        res.setCategory(parseCodeableConcept(xpp));
8854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8855        res.setCode(parseCodeableConcept(xpp));
8856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8857        res.setSubject(parseReference(xpp));
8858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8859        res.setPeriod(parsePeriod(xpp));
8860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8861        res.setEncounter(parseReference(xpp));
8862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8863        res.setAuthor(parseReference(xpp));
8864      } else if (!parseDomainResourceContent(eventType, xpp, res))
8865        return false;
8866    return true;
8867  }
8868
8869  protected Goal parseGoal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8870    Goal res = new Goal();
8871    parseDomainResourceAttributes(xpp, res);
8872    next(xpp);
8873    int eventType = nextNoWhitespace(xpp);
8874    while (eventType != XmlPullParser.END_TAG) {
8875  if (!parseGoalContent(eventType, xpp, res))
8876        unknownContent(xpp);
8877      eventType = nextNoWhitespace(xpp);
8878    }
8879    next(xpp);
8880    parseElementClose(res);
8881    return res;
8882  }
8883
8884  protected boolean parseGoalContent(int eventType, XmlPullParser xpp, Goal res) throws XmlPullParserException, IOException, FHIRFormatError {
8885      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8886        res.getIdentifier().add(parseIdentifier(xpp));
8887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8888        res.setStatusElement(parseEnumeration(xpp, Goal.GoalStatus.NULL, new Goal.GoalStatusEnumFactory()));
8889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8890        res.getCategory().add(parseCodeableConcept(xpp));
8891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8892        res.setPriority(parseCodeableConcept(xpp));
8893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8894        res.setDescription(parseCodeableConcept(xpp));
8895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8896        res.setSubject(parseReference(xpp));
8897      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "start")) {
8898        res.setStart(parseType("start", xpp));
8899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8900        res.setTarget(parseGoalGoalTargetComponent(xpp, res));
8901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
8902        res.setStatusDateElement(parseDate(xpp));
8903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
8904        res.setStatusReasonElement(parseString(xpp));
8905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expressedBy")) {
8906        res.setExpressedBy(parseReference(xpp));
8907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
8908        res.getAddresses().add(parseReference(xpp));
8909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8910        res.getNote().add(parseAnnotation(xpp));
8911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCode")) {
8912        res.getOutcomeCode().add(parseCodeableConcept(xpp));
8913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
8914        res.getOutcomeReference().add(parseReference(xpp));
8915      } else if (!parseDomainResourceContent(eventType, xpp, res))
8916        return false;
8917    return true;
8918  }
8919
8920  protected Goal.GoalTargetComponent parseGoalGoalTargetComponent(XmlPullParser xpp, Goal owner) throws XmlPullParserException, IOException, FHIRFormatError {
8921    Goal.GoalTargetComponent res = new Goal.GoalTargetComponent();
8922    parseBackboneAttributes(xpp, res);
8923    next(xpp);
8924    int eventType = nextNoWhitespace(xpp);
8925    while (eventType != XmlPullParser.END_TAG) {
8926  if (!parseGoalGoalTargetComponentContent(eventType, xpp, owner, res))
8927        unknownContent(xpp);
8928      eventType = nextNoWhitespace(xpp);
8929    }
8930    next(xpp);
8931    parseElementClose(res);
8932    return res;
8933  }
8934
8935  protected boolean parseGoalGoalTargetComponentContent(int eventType, XmlPullParser xpp, Goal owner, Goal.GoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8936      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
8937        res.setMeasure(parseCodeableConcept(xpp));
8938      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
8939        res.setDetail(parseType("detail", xpp));
8940      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "due")) {
8941        res.setDue(parseType("due", xpp));
8942      } else if (!parseBackboneContent(eventType, xpp, res))
8943        return false;
8944    return true;
8945  }
8946
8947  protected GraphDefinition parseGraphDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8948    GraphDefinition res = new GraphDefinition();
8949    parseDomainResourceAttributes(xpp, res);
8950    next(xpp);
8951    int eventType = nextNoWhitespace(xpp);
8952    while (eventType != XmlPullParser.END_TAG) {
8953  if (!parseGraphDefinitionContent(eventType, xpp, res))
8954        unknownContent(xpp);
8955      eventType = nextNoWhitespace(xpp);
8956    }
8957    next(xpp);
8958    parseElementClose(res);
8959    return res;
8960  }
8961
8962  protected boolean parseGraphDefinitionContent(int eventType, XmlPullParser xpp, GraphDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
8963      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
8964        res.setUrlElement(parseUri(xpp));
8965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8966        res.setVersionElement(parseString(xpp));
8967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8968        res.setNameElement(parseString(xpp));
8969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8970        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
8971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
8972        res.setExperimentalElement(parseBoolean(xpp));
8973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8974        res.setDateElement(parseDateTime(xpp));
8975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8976        res.setPublisherElement(parseString(xpp));
8977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8978        res.getContact().add(parseContactDetail(xpp));
8979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8980        res.setDescriptionElement(parseMarkdown(xpp));
8981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
8982        res.getUseContext().add(parseUsageContext(xpp));
8983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
8984        res.getJurisdiction().add(parseCodeableConcept(xpp));
8985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
8986        res.setPurposeElement(parseMarkdown(xpp));
8987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
8988        res.setStartElement(parseCode(xpp));
8989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
8990        res.setProfileElement(parseUri(xpp));
8991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
8992        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, res));
8993      } else if (!parseDomainResourceContent(eventType, xpp, res))
8994        return false;
8995    return true;
8996  }
8997
8998  protected GraphDefinition.GraphDefinitionLinkComponent parseGraphDefinitionGraphDefinitionLinkComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8999    GraphDefinition.GraphDefinitionLinkComponent res = new GraphDefinition.GraphDefinitionLinkComponent();
9000    parseBackboneAttributes(xpp, res);
9001    next(xpp);
9002    int eventType = nextNoWhitespace(xpp);
9003    while (eventType != XmlPullParser.END_TAG) {
9004  if (!parseGraphDefinitionGraphDefinitionLinkComponentContent(eventType, xpp, owner, res))
9005        unknownContent(xpp);
9006      eventType = nextNoWhitespace(xpp);
9007    }
9008    next(xpp);
9009    parseElementClose(res);
9010    return res;
9011  }
9012
9013  protected boolean parseGraphDefinitionGraphDefinitionLinkComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9014      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
9015        res.setPathElement(parseString(xpp));
9016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
9017        res.setSliceNameElement(parseString(xpp));
9018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
9019        res.setMinElement(parseInteger(xpp));
9020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
9021        res.setMaxElement(parseString(xpp));
9022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9023        res.setDescriptionElement(parseString(xpp));
9024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
9025        res.getTarget().add(parseGraphDefinitionGraphDefinitionLinkTargetComponent(xpp, owner));
9026      } else if (!parseBackboneContent(eventType, xpp, res))
9027        return false;
9028    return true;
9029  }
9030
9031  protected GraphDefinition.GraphDefinitionLinkTargetComponent parseGraphDefinitionGraphDefinitionLinkTargetComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9032    GraphDefinition.GraphDefinitionLinkTargetComponent res = new GraphDefinition.GraphDefinitionLinkTargetComponent();
9033    parseBackboneAttributes(xpp, res);
9034    next(xpp);
9035    int eventType = nextNoWhitespace(xpp);
9036    while (eventType != XmlPullParser.END_TAG) {
9037  if (!parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(eventType, xpp, owner, res))
9038        unknownContent(xpp);
9039      eventType = nextNoWhitespace(xpp);
9040    }
9041    next(xpp);
9042    parseElementClose(res);
9043    return res;
9044  }
9045
9046  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9047      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9048        res.setTypeElement(parseCode(xpp));
9049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
9050        res.setProfileElement(parseUri(xpp));
9051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
9052        res.getCompartment().add(parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(xpp, owner));
9053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
9054        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, owner));
9055      } else if (!parseBackboneContent(eventType, xpp, res))
9056        return false;
9057    return true;
9058  }
9059
9060  protected GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
9061    GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res = new GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent();
9062    parseBackboneAttributes(xpp, res);
9063    next(xpp);
9064    int eventType = nextNoWhitespace(xpp);
9065    while (eventType != XmlPullParser.END_TAG) {
9066  if (!parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(eventType, xpp, owner, res))
9067        unknownContent(xpp);
9068      eventType = nextNoWhitespace(xpp);
9069    }
9070    next(xpp);
9071    parseElementClose(res);
9072    return res;
9073  }
9074
9075  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9076      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9077        res.setCodeElement(parseEnumeration(xpp, GraphDefinition.CompartmentCode.NULL, new GraphDefinition.CompartmentCodeEnumFactory()));
9078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
9079        res.setRuleElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentRule.NULL, new GraphDefinition.GraphCompartmentRuleEnumFactory()));
9080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
9081        res.setExpressionElement(parseString(xpp));
9082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9083        res.setDescriptionElement(parseString(xpp));
9084      } else if (!parseBackboneContent(eventType, xpp, res))
9085        return false;
9086    return true;
9087  }
9088
9089  protected Group parseGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9090    Group res = new Group();
9091    parseDomainResourceAttributes(xpp, res);
9092    next(xpp);
9093    int eventType = nextNoWhitespace(xpp);
9094    while (eventType != XmlPullParser.END_TAG) {
9095  if (!parseGroupContent(eventType, xpp, res))
9096        unknownContent(xpp);
9097      eventType = nextNoWhitespace(xpp);
9098    }
9099    next(xpp);
9100    parseElementClose(res);
9101    return res;
9102  }
9103
9104  protected boolean parseGroupContent(int eventType, XmlPullParser xpp, Group res) throws XmlPullParserException, IOException, FHIRFormatError {
9105      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9106        res.getIdentifier().add(parseIdentifier(xpp));
9107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
9108        res.setActiveElement(parseBoolean(xpp));
9109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9110        res.setTypeElement(parseEnumeration(xpp, Group.GroupType.NULL, new Group.GroupTypeEnumFactory()));
9111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
9112        res.setActualElement(parseBoolean(xpp));
9113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9114        res.setCode(parseCodeableConcept(xpp));
9115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9116        res.setNameElement(parseString(xpp));
9117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9118        res.setQuantityElement(parseUnsignedInt(xpp));
9119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
9120        res.getCharacteristic().add(parseGroupGroupCharacteristicComponent(xpp, res));
9121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
9122        res.getMember().add(parseGroupGroupMemberComponent(xpp, res));
9123      } else if (!parseDomainResourceContent(eventType, xpp, res))
9124        return false;
9125    return true;
9126  }
9127
9128  protected Group.GroupCharacteristicComponent parseGroupGroupCharacteristicComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
9129    Group.GroupCharacteristicComponent res = new Group.GroupCharacteristicComponent();
9130    parseBackboneAttributes(xpp, res);
9131    next(xpp);
9132    int eventType = nextNoWhitespace(xpp);
9133    while (eventType != XmlPullParser.END_TAG) {
9134  if (!parseGroupGroupCharacteristicComponentContent(eventType, xpp, owner, res))
9135        unknownContent(xpp);
9136      eventType = nextNoWhitespace(xpp);
9137    }
9138    next(xpp);
9139    parseElementClose(res);
9140    return res;
9141  }
9142
9143  protected boolean parseGroupGroupCharacteristicComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9144      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9145        res.setCode(parseCodeableConcept(xpp));
9146      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
9147        res.setValue(parseType("value", xpp));
9148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
9149        res.setExcludeElement(parseBoolean(xpp));
9150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9151        res.setPeriod(parsePeriod(xpp));
9152      } else if (!parseBackboneContent(eventType, xpp, res))
9153        return false;
9154    return true;
9155  }
9156
9157  protected Group.GroupMemberComponent parseGroupGroupMemberComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
9158    Group.GroupMemberComponent res = new Group.GroupMemberComponent();
9159    parseBackboneAttributes(xpp, res);
9160    next(xpp);
9161    int eventType = nextNoWhitespace(xpp);
9162    while (eventType != XmlPullParser.END_TAG) {
9163  if (!parseGroupGroupMemberComponentContent(eventType, xpp, owner, res))
9164        unknownContent(xpp);
9165      eventType = nextNoWhitespace(xpp);
9166    }
9167    next(xpp);
9168    parseElementClose(res);
9169    return res;
9170  }
9171
9172  protected boolean parseGroupGroupMemberComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupMemberComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9173      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
9174        res.setEntity(parseReference(xpp));
9175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9176        res.setPeriod(parsePeriod(xpp));
9177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
9178        res.setInactiveElement(parseBoolean(xpp));
9179      } else if (!parseBackboneContent(eventType, xpp, res))
9180        return false;
9181    return true;
9182  }
9183
9184  protected GuidanceResponse parseGuidanceResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9185    GuidanceResponse res = new GuidanceResponse();
9186    parseDomainResourceAttributes(xpp, res);
9187    next(xpp);
9188    int eventType = nextNoWhitespace(xpp);
9189    while (eventType != XmlPullParser.END_TAG) {
9190  if (!parseGuidanceResponseContent(eventType, xpp, res))
9191        unknownContent(xpp);
9192      eventType = nextNoWhitespace(xpp);
9193    }
9194    next(xpp);
9195    parseElementClose(res);
9196    return res;
9197  }
9198
9199  protected boolean parseGuidanceResponseContent(int eventType, XmlPullParser xpp, GuidanceResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
9200      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
9201        res.setRequestIdElement(parseId(xpp));
9202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9203        res.setIdentifier(parseIdentifier(xpp));
9204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("module")) {
9205        res.setModule(parseReference(xpp));
9206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9207        res.setStatusElement(parseEnumeration(xpp, GuidanceResponse.GuidanceResponseStatus.NULL, new GuidanceResponse.GuidanceResponseStatusEnumFactory()));
9208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
9209        res.setSubject(parseReference(xpp));
9210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
9211        res.setContext(parseReference(xpp));
9212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceDateTime")) {
9213        res.setOccurrenceDateTimeElement(parseDateTime(xpp));
9214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
9215        res.setPerformer(parseReference(xpp));
9216      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
9217        res.setReason(parseType("reason", xpp));
9218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9219        res.getNote().add(parseAnnotation(xpp));
9220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluationMessage")) {
9221        res.getEvaluationMessage().add(parseReference(xpp));
9222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputParameters")) {
9223        res.setOutputParameters(parseReference(xpp));
9224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
9225        res.setResult(parseReference(xpp));
9226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
9227        res.getDataRequirement().add(parseDataRequirement(xpp));
9228      } else if (!parseDomainResourceContent(eventType, xpp, res))
9229        return false;
9230    return true;
9231  }
9232
9233  protected HealthcareService parseHealthcareService(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9234    HealthcareService res = new HealthcareService();
9235    parseDomainResourceAttributes(xpp, res);
9236    next(xpp);
9237    int eventType = nextNoWhitespace(xpp);
9238    while (eventType != XmlPullParser.END_TAG) {
9239  if (!parseHealthcareServiceContent(eventType, xpp, res))
9240        unknownContent(xpp);
9241      eventType = nextNoWhitespace(xpp);
9242    }
9243    next(xpp);
9244    parseElementClose(res);
9245    return res;
9246  }
9247
9248  protected boolean parseHealthcareServiceContent(int eventType, XmlPullParser xpp, HealthcareService res) throws XmlPullParserException, IOException, FHIRFormatError {
9249      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9250        res.getIdentifier().add(parseIdentifier(xpp));
9251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
9252        res.setActiveElement(parseBoolean(xpp));
9253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providedBy")) {
9254        res.setProvidedBy(parseReference(xpp));
9255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9256        res.setCategory(parseCodeableConcept(xpp));
9257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9258        res.getType().add(parseCodeableConcept(xpp));
9259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
9260        res.getSpecialty().add(parseCodeableConcept(xpp));
9261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
9262        res.getLocation().add(parseReference(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("comment")) {
9266        res.setCommentElement(parseString(xpp));
9267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extraDetails")) {
9268        res.setExtraDetailsElement(parseString(xpp));
9269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
9270        res.setPhoto(parseAttachment(xpp));
9271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
9272        res.getTelecom().add(parseContactPoint(xpp));
9273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
9274        res.getCoverageArea().add(parseReference(xpp));
9275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvisionCode")) {
9276        res.getServiceProvisionCode().add(parseCodeableConcept(xpp));
9277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibility")) {
9278        res.setEligibility(parseCodeableConcept(xpp));
9279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibilityNote")) {
9280        res.setEligibilityNoteElement(parseString(xpp));
9281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programName")) {
9282        res.getProgramName().add(parseString(xpp));
9283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
9284        res.getCharacteristic().add(parseCodeableConcept(xpp));
9285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralMethod")) {
9286        res.getReferralMethod().add(parseCodeableConcept(xpp));
9287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentRequired")) {
9288        res.setAppointmentRequiredElement(parseBoolean(xpp));
9289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
9290        res.getAvailableTime().add(parseHealthcareServiceHealthcareServiceAvailableTimeComponent(xpp, res));
9291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
9292        res.getNotAvailable().add(parseHealthcareServiceHealthcareServiceNotAvailableComponent(xpp, res));
9293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
9294        res.setAvailabilityExceptionsElement(parseString(xpp));
9295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9296        res.getEndpoint().add(parseReference(xpp));
9297      } else if (!parseDomainResourceContent(eventType, xpp, res))
9298        return false;
9299    return true;
9300  }
9301
9302  protected HealthcareService.HealthcareServiceAvailableTimeComponent parseHealthcareServiceHealthcareServiceAvailableTimeComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
9303    HealthcareService.HealthcareServiceAvailableTimeComponent res = new HealthcareService.HealthcareServiceAvailableTimeComponent();
9304    parseBackboneAttributes(xpp, res);
9305    next(xpp);
9306    int eventType = nextNoWhitespace(xpp);
9307    while (eventType != XmlPullParser.END_TAG) {
9308  if (!parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(eventType, xpp, owner, res))
9309        unknownContent(xpp);
9310      eventType = nextNoWhitespace(xpp);
9311    }
9312    next(xpp);
9313    parseElementClose(res);
9314    return res;
9315  }
9316
9317  protected boolean parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9318      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
9319        res.getDaysOfWeek().add(parseEnumeration(xpp, HealthcareService.DaysOfWeek.NULL, new HealthcareService.DaysOfWeekEnumFactory()));
9320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
9321        res.setAllDayElement(parseBoolean(xpp));
9322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
9323        res.setAvailableStartTimeElement(parseTime(xpp));
9324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
9325        res.setAvailableEndTimeElement(parseTime(xpp));
9326      } else if (!parseBackboneContent(eventType, xpp, res))
9327        return false;
9328    return true;
9329  }
9330
9331  protected HealthcareService.HealthcareServiceNotAvailableComponent parseHealthcareServiceHealthcareServiceNotAvailableComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
9332    HealthcareService.HealthcareServiceNotAvailableComponent res = new HealthcareService.HealthcareServiceNotAvailableComponent();
9333    parseBackboneAttributes(xpp, res);
9334    next(xpp);
9335    int eventType = nextNoWhitespace(xpp);
9336    while (eventType != XmlPullParser.END_TAG) {
9337  if (!parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(eventType, xpp, owner, res))
9338        unknownContent(xpp);
9339      eventType = nextNoWhitespace(xpp);
9340    }
9341    next(xpp);
9342    parseElementClose(res);
9343    return res;
9344  }
9345
9346  protected boolean parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9347      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9348        res.setDescriptionElement(parseString(xpp));
9349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
9350        res.setDuring(parsePeriod(xpp));
9351      } else if (!parseBackboneContent(eventType, xpp, res))
9352        return false;
9353    return true;
9354  }
9355
9356  protected ImagingManifest parseImagingManifest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9357    ImagingManifest res = new ImagingManifest();
9358    parseDomainResourceAttributes(xpp, res);
9359    next(xpp);
9360    int eventType = nextNoWhitespace(xpp);
9361    while (eventType != XmlPullParser.END_TAG) {
9362  if (!parseImagingManifestContent(eventType, xpp, res))
9363        unknownContent(xpp);
9364      eventType = nextNoWhitespace(xpp);
9365    }
9366    next(xpp);
9367    parseElementClose(res);
9368    return res;
9369  }
9370
9371  protected boolean parseImagingManifestContent(int eventType, XmlPullParser xpp, ImagingManifest res) throws XmlPullParserException, IOException, FHIRFormatError {
9372      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9373        res.setIdentifier(parseIdentifier(xpp));
9374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9375        res.setPatient(parseReference(xpp));
9376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoringTime")) {
9377        res.setAuthoringTimeElement(parseDateTime(xpp));
9378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9379        res.setAuthor(parseReference(xpp));
9380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9381        res.setDescriptionElement(parseString(xpp));
9382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
9383        res.getStudy().add(parseImagingManifestStudyComponent(xpp, res));
9384      } else if (!parseDomainResourceContent(eventType, xpp, res))
9385        return false;
9386    return true;
9387  }
9388
9389  protected ImagingManifest.StudyComponent parseImagingManifestStudyComponent(XmlPullParser xpp, ImagingManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
9390    ImagingManifest.StudyComponent res = new ImagingManifest.StudyComponent();
9391    parseBackboneAttributes(xpp, res);
9392    next(xpp);
9393    int eventType = nextNoWhitespace(xpp);
9394    while (eventType != XmlPullParser.END_TAG) {
9395  if (!parseImagingManifestStudyComponentContent(eventType, xpp, owner, res))
9396        unknownContent(xpp);
9397      eventType = nextNoWhitespace(xpp);
9398    }
9399    next(xpp);
9400    parseElementClose(res);
9401    return res;
9402  }
9403
9404  protected boolean parseImagingManifestStudyComponentContent(int eventType, XmlPullParser xpp, ImagingManifest owner, ImagingManifest.StudyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9405      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9406        res.setUidElement(parseOid(xpp));
9407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
9408        res.setImagingStudy(parseReference(xpp));
9409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9410        res.getEndpoint().add(parseReference(xpp));
9411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
9412        res.getSeries().add(parseImagingManifestSeriesComponent(xpp, owner));
9413      } else if (!parseBackboneContent(eventType, xpp, res))
9414        return false;
9415    return true;
9416  }
9417
9418  protected ImagingManifest.SeriesComponent parseImagingManifestSeriesComponent(XmlPullParser xpp, ImagingManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
9419    ImagingManifest.SeriesComponent res = new ImagingManifest.SeriesComponent();
9420    parseBackboneAttributes(xpp, res);
9421    next(xpp);
9422    int eventType = nextNoWhitespace(xpp);
9423    while (eventType != XmlPullParser.END_TAG) {
9424  if (!parseImagingManifestSeriesComponentContent(eventType, xpp, owner, res))
9425        unknownContent(xpp);
9426      eventType = nextNoWhitespace(xpp);
9427    }
9428    next(xpp);
9429    parseElementClose(res);
9430    return res;
9431  }
9432
9433  protected boolean parseImagingManifestSeriesComponentContent(int eventType, XmlPullParser xpp, ImagingManifest owner, ImagingManifest.SeriesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9434      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9435        res.setUidElement(parseOid(xpp));
9436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9437        res.getEndpoint().add(parseReference(xpp));
9438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
9439        res.getInstance().add(parseImagingManifestInstanceComponent(xpp, owner));
9440      } else if (!parseBackboneContent(eventType, xpp, res))
9441        return false;
9442    return true;
9443  }
9444
9445  protected ImagingManifest.InstanceComponent parseImagingManifestInstanceComponent(XmlPullParser xpp, ImagingManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
9446    ImagingManifest.InstanceComponent res = new ImagingManifest.InstanceComponent();
9447    parseBackboneAttributes(xpp, res);
9448    next(xpp);
9449    int eventType = nextNoWhitespace(xpp);
9450    while (eventType != XmlPullParser.END_TAG) {
9451  if (!parseImagingManifestInstanceComponentContent(eventType, xpp, owner, res))
9452        unknownContent(xpp);
9453      eventType = nextNoWhitespace(xpp);
9454    }
9455    next(xpp);
9456    parseElementClose(res);
9457    return res;
9458  }
9459
9460  protected boolean parseImagingManifestInstanceComponentContent(int eventType, XmlPullParser xpp, ImagingManifest owner, ImagingManifest.InstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9461      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
9462        res.setSopClassElement(parseOid(xpp));
9463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9464        res.setUidElement(parseOid(xpp));
9465      } else if (!parseBackboneContent(eventType, xpp, res))
9466        return false;
9467    return true;
9468  }
9469
9470  protected ImagingStudy parseImagingStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9471    ImagingStudy res = new ImagingStudy();
9472    parseDomainResourceAttributes(xpp, res);
9473    next(xpp);
9474    int eventType = nextNoWhitespace(xpp);
9475    while (eventType != XmlPullParser.END_TAG) {
9476  if (!parseImagingStudyContent(eventType, xpp, res))
9477        unknownContent(xpp);
9478      eventType = nextNoWhitespace(xpp);
9479    }
9480    next(xpp);
9481    parseElementClose(res);
9482    return res;
9483  }
9484
9485  protected boolean parseImagingStudyContent(int eventType, XmlPullParser xpp, ImagingStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
9486      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9487        res.setUidElement(parseOid(xpp));
9488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accession")) {
9489        res.setAccession(parseIdentifier(xpp));
9490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9491        res.getIdentifier().add(parseIdentifier(xpp));
9492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availability")) {
9493        res.setAvailabilityElement(parseEnumeration(xpp, ImagingStudy.InstanceAvailability.NULL, new ImagingStudy.InstanceAvailabilityEnumFactory()));
9494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modalityList")) {
9495        res.getModalityList().add(parseCoding(xpp));
9496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9497        res.setPatient(parseReference(xpp));
9498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
9499        res.setContext(parseReference(xpp));
9500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
9501        res.setStartedElement(parseDateTime(xpp));
9502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
9503        res.getBasedOn().add(parseReference(xpp));
9504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referrer")) {
9505        res.setReferrer(parseReference(xpp));
9506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpreter")) {
9507        res.getInterpreter().add(parseReference(xpp));
9508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9509        res.getEndpoint().add(parseReference(xpp));
9510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSeries")) {
9511        res.setNumberOfSeriesElement(parseUnsignedInt(xpp));
9512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
9513        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
9514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureReference")) {
9515        res.getProcedureReference().add(parseReference(xpp));
9516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureCode")) {
9517        res.getProcedureCode().add(parseCodeableConcept(xpp));
9518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9519        res.setReason(parseCodeableConcept(xpp));
9520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9521        res.setDescriptionElement(parseString(xpp));
9522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
9523        res.getSeries().add(parseImagingStudyImagingStudySeriesComponent(xpp, res));
9524      } else if (!parseDomainResourceContent(eventType, xpp, res))
9525        return false;
9526    return true;
9527  }
9528
9529  protected ImagingStudy.ImagingStudySeriesComponent parseImagingStudyImagingStudySeriesComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
9530    ImagingStudy.ImagingStudySeriesComponent res = new ImagingStudy.ImagingStudySeriesComponent();
9531    parseBackboneAttributes(xpp, res);
9532    next(xpp);
9533    int eventType = nextNoWhitespace(xpp);
9534    while (eventType != XmlPullParser.END_TAG) {
9535  if (!parseImagingStudyImagingStudySeriesComponentContent(eventType, xpp, owner, res))
9536        unknownContent(xpp);
9537      eventType = nextNoWhitespace(xpp);
9538    }
9539    next(xpp);
9540    parseElementClose(res);
9541    return res;
9542  }
9543
9544  protected boolean parseImagingStudyImagingStudySeriesComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9545      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9546        res.setUidElement(parseOid(xpp));
9547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
9548        res.setNumberElement(parseUnsignedInt(xpp));
9549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
9550        res.setModality(parseCoding(xpp));
9551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9552        res.setDescriptionElement(parseString(xpp));
9553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
9554        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
9555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availability")) {
9556        res.setAvailabilityElement(parseEnumeration(xpp, ImagingStudy.InstanceAvailability.NULL, new ImagingStudy.InstanceAvailabilityEnumFactory()));
9557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
9558        res.getEndpoint().add(parseReference(xpp));
9559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
9560        res.setBodySite(parseCoding(xpp));
9561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("laterality")) {
9562        res.setLaterality(parseCoding(xpp));
9563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
9564        res.setStartedElement(parseDateTime(xpp));
9565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
9566        res.getPerformer().add(parseReference(xpp));
9567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
9568        res.getInstance().add(parseImagingStudyImagingStudySeriesInstanceComponent(xpp, owner));
9569      } else if (!parseBackboneContent(eventType, xpp, res))
9570        return false;
9571    return true;
9572  }
9573
9574  protected ImagingStudy.ImagingStudySeriesInstanceComponent parseImagingStudyImagingStudySeriesInstanceComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
9575    ImagingStudy.ImagingStudySeriesInstanceComponent res = new ImagingStudy.ImagingStudySeriesInstanceComponent();
9576    parseBackboneAttributes(xpp, res);
9577    next(xpp);
9578    int eventType = nextNoWhitespace(xpp);
9579    while (eventType != XmlPullParser.END_TAG) {
9580  if (!parseImagingStudyImagingStudySeriesInstanceComponentContent(eventType, xpp, owner, res))
9581        unknownContent(xpp);
9582      eventType = nextNoWhitespace(xpp);
9583    }
9584    next(xpp);
9585    parseElementClose(res);
9586    return res;
9587  }
9588
9589  protected boolean parseImagingStudyImagingStudySeriesInstanceComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9590      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
9591        res.setUidElement(parseOid(xpp));
9592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
9593        res.setNumberElement(parseUnsignedInt(xpp));
9594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
9595        res.setSopClassElement(parseOid(xpp));
9596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9597        res.setTitleElement(parseString(xpp));
9598      } else if (!parseBackboneContent(eventType, xpp, res))
9599        return false;
9600    return true;
9601  }
9602
9603  protected Immunization parseImmunization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9604    Immunization res = new Immunization();
9605    parseDomainResourceAttributes(xpp, res);
9606    next(xpp);
9607    int eventType = nextNoWhitespace(xpp);
9608    while (eventType != XmlPullParser.END_TAG) {
9609  if (!parseImmunizationContent(eventType, xpp, res))
9610        unknownContent(xpp);
9611      eventType = nextNoWhitespace(xpp);
9612    }
9613    next(xpp);
9614    parseElementClose(res);
9615    return res;
9616  }
9617
9618  protected boolean parseImmunizationContent(int eventType, XmlPullParser xpp, Immunization res) throws XmlPullParserException, IOException, FHIRFormatError {
9619      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9620        res.getIdentifier().add(parseIdentifier(xpp));
9621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9622        res.setStatusElement(parseEnumeration(xpp, Immunization.ImmunizationStatus.NULL, new Immunization.ImmunizationStatusEnumFactory()));
9623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notGiven")) {
9624        res.setNotGivenElement(parseBoolean(xpp));
9625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
9626        res.setVaccineCode(parseCodeableConcept(xpp));
9627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9628        res.setPatient(parseReference(xpp));
9629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
9630        res.setEncounter(parseReference(xpp));
9631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9632        res.setDateElement(parseDateTime(xpp));
9633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
9634        res.setPrimarySourceElement(parseBoolean(xpp));
9635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportOrigin")) {
9636        res.setReportOrigin(parseCodeableConcept(xpp));
9637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
9638        res.setLocation(parseReference(xpp));
9639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
9640        res.setManufacturer(parseReference(xpp));
9641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
9642        res.setLotNumberElement(parseString(xpp));
9643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
9644        res.setExpirationDateElement(parseDate(xpp));
9645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
9646        res.setSite(parseCodeableConcept(xpp));
9647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
9648        res.setRoute(parseCodeableConcept(xpp));
9649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseQuantity")) {
9650        res.setDoseQuantity(parseSimpleQuantity(xpp));
9651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
9652        res.getPractitioner().add(parseImmunizationImmunizationPractitionerComponent(xpp, res));
9653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9654        res.getNote().add(parseAnnotation(xpp));
9655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("explanation")) {
9656        res.setExplanation(parseImmunizationImmunizationExplanationComponent(xpp, res));
9657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
9658        res.getReaction().add(parseImmunizationImmunizationReactionComponent(xpp, res));
9659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccinationProtocol")) {
9660        res.getVaccinationProtocol().add(parseImmunizationImmunizationVaccinationProtocolComponent(xpp, res));
9661      } else if (!parseDomainResourceContent(eventType, xpp, res))
9662        return false;
9663    return true;
9664  }
9665
9666  protected Immunization.ImmunizationPractitionerComponent parseImmunizationImmunizationPractitionerComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
9667    Immunization.ImmunizationPractitionerComponent res = new Immunization.ImmunizationPractitionerComponent();
9668    parseBackboneAttributes(xpp, res);
9669    next(xpp);
9670    int eventType = nextNoWhitespace(xpp);
9671    while (eventType != XmlPullParser.END_TAG) {
9672  if (!parseImmunizationImmunizationPractitionerComponentContent(eventType, xpp, owner, res))
9673        unknownContent(xpp);
9674      eventType = nextNoWhitespace(xpp);
9675    }
9676    next(xpp);
9677    parseElementClose(res);
9678    return res;
9679  }
9680
9681  protected boolean parseImmunizationImmunizationPractitionerComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationPractitionerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9682      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
9683        res.setRole(parseCodeableConcept(xpp));
9684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
9685        res.setActor(parseReference(xpp));
9686      } else if (!parseBackboneContent(eventType, xpp, res))
9687        return false;
9688    return true;
9689  }
9690
9691  protected Immunization.ImmunizationExplanationComponent parseImmunizationImmunizationExplanationComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
9692    Immunization.ImmunizationExplanationComponent res = new Immunization.ImmunizationExplanationComponent();
9693    parseBackboneAttributes(xpp, res);
9694    next(xpp);
9695    int eventType = nextNoWhitespace(xpp);
9696    while (eventType != XmlPullParser.END_TAG) {
9697  if (!parseImmunizationImmunizationExplanationComponentContent(eventType, xpp, owner, res))
9698        unknownContent(xpp);
9699      eventType = nextNoWhitespace(xpp);
9700    }
9701    next(xpp);
9702    parseElementClose(res);
9703    return res;
9704  }
9705
9706  protected boolean parseImmunizationImmunizationExplanationComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationExplanationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9707      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9708        res.getReason().add(parseCodeableConcept(xpp));
9709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotGiven")) {
9710        res.getReasonNotGiven().add(parseCodeableConcept(xpp));
9711      } else if (!parseBackboneContent(eventType, xpp, res))
9712        return false;
9713    return true;
9714  }
9715
9716  protected Immunization.ImmunizationReactionComponent parseImmunizationImmunizationReactionComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
9717    Immunization.ImmunizationReactionComponent res = new Immunization.ImmunizationReactionComponent();
9718    parseBackboneAttributes(xpp, res);
9719    next(xpp);
9720    int eventType = nextNoWhitespace(xpp);
9721    while (eventType != XmlPullParser.END_TAG) {
9722  if (!parseImmunizationImmunizationReactionComponentContent(eventType, xpp, owner, res))
9723        unknownContent(xpp);
9724      eventType = nextNoWhitespace(xpp);
9725    }
9726    next(xpp);
9727    parseElementClose(res);
9728    return res;
9729  }
9730
9731  protected boolean parseImmunizationImmunizationReactionComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9732      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9733        res.setDateElement(parseDateTime(xpp));
9734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
9735        res.setDetail(parseReference(xpp));
9736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
9737        res.setReportedElement(parseBoolean(xpp));
9738      } else if (!parseBackboneContent(eventType, xpp, res))
9739        return false;
9740    return true;
9741  }
9742
9743  protected Immunization.ImmunizationVaccinationProtocolComponent parseImmunizationImmunizationVaccinationProtocolComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
9744    Immunization.ImmunizationVaccinationProtocolComponent res = new Immunization.ImmunizationVaccinationProtocolComponent();
9745    parseBackboneAttributes(xpp, res);
9746    next(xpp);
9747    int eventType = nextNoWhitespace(xpp);
9748    while (eventType != XmlPullParser.END_TAG) {
9749  if (!parseImmunizationImmunizationVaccinationProtocolComponentContent(eventType, xpp, owner, res))
9750        unknownContent(xpp);
9751      eventType = nextNoWhitespace(xpp);
9752    }
9753    next(xpp);
9754    parseElementClose(res);
9755    return res;
9756  }
9757
9758  protected boolean parseImmunizationImmunizationVaccinationProtocolComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationVaccinationProtocolComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9759      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseSequence")) {
9760        res.setDoseSequenceElement(parsePositiveInt(xpp));
9761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9762        res.setDescriptionElement(parseString(xpp));
9763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
9764        res.setAuthority(parseReference(xpp));
9765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
9766        res.setSeriesElement(parseString(xpp));
9767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriesDoses")) {
9768        res.setSeriesDosesElement(parsePositiveInt(xpp));
9769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
9770        res.getTargetDisease().add(parseCodeableConcept(xpp));
9771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatus")) {
9772        res.setDoseStatus(parseCodeableConcept(xpp));
9773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatusReason")) {
9774        res.setDoseStatusReason(parseCodeableConcept(xpp));
9775      } else if (!parseBackboneContent(eventType, xpp, res))
9776        return false;
9777    return true;
9778  }
9779
9780  protected ImmunizationRecommendation parseImmunizationRecommendation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9781    ImmunizationRecommendation res = new ImmunizationRecommendation();
9782    parseDomainResourceAttributes(xpp, res);
9783    next(xpp);
9784    int eventType = nextNoWhitespace(xpp);
9785    while (eventType != XmlPullParser.END_TAG) {
9786  if (!parseImmunizationRecommendationContent(eventType, xpp, res))
9787        unknownContent(xpp);
9788      eventType = nextNoWhitespace(xpp);
9789    }
9790    next(xpp);
9791    parseElementClose(res);
9792    return res;
9793  }
9794
9795  protected boolean parseImmunizationRecommendationContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation res) throws XmlPullParserException, IOException, FHIRFormatError {
9796      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9797        res.getIdentifier().add(parseIdentifier(xpp));
9798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9799        res.setPatient(parseReference(xpp));
9800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recommendation")) {
9801        res.getRecommendation().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(xpp, res));
9802      } else if (!parseDomainResourceContent(eventType, xpp, res))
9803        return false;
9804    return true;
9805  }
9806
9807  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
9808    ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent();
9809    parseBackboneAttributes(xpp, res);
9810    next(xpp);
9811    int eventType = nextNoWhitespace(xpp);
9812    while (eventType != XmlPullParser.END_TAG) {
9813  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(eventType, xpp, owner, res))
9814        unknownContent(xpp);
9815      eventType = nextNoWhitespace(xpp);
9816    }
9817    next(xpp);
9818    parseElementClose(res);
9819    return res;
9820  }
9821
9822  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9823      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9824        res.setDateElement(parseDateTime(xpp));
9825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
9826        res.setVaccineCode(parseCodeableConcept(xpp));
9827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
9828        res.setTargetDisease(parseCodeableConcept(xpp));
9829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseNumber")) {
9830        res.setDoseNumberElement(parsePositiveInt(xpp));
9831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastStatus")) {
9832        res.setForecastStatus(parseCodeableConcept(xpp));
9833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateCriterion")) {
9834        res.getDateCriterion().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(xpp, owner));
9835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
9836        res.setProtocol(parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(xpp, owner));
9837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingImmunization")) {
9838        res.getSupportingImmunization().add(parseReference(xpp));
9839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingPatientInformation")) {
9840        res.getSupportingPatientInformation().add(parseReference(xpp));
9841      } else if (!parseBackboneContent(eventType, xpp, res))
9842        return false;
9843    return true;
9844  }
9845
9846  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
9847    ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent();
9848    parseBackboneAttributes(xpp, res);
9849    next(xpp);
9850    int eventType = nextNoWhitespace(xpp);
9851    while (eventType != XmlPullParser.END_TAG) {
9852  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(eventType, xpp, owner, res))
9853        unknownContent(xpp);
9854      eventType = nextNoWhitespace(xpp);
9855    }
9856    next(xpp);
9857    parseElementClose(res);
9858    return res;
9859  }
9860
9861  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9862      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9863        res.setCode(parseCodeableConcept(xpp));
9864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
9865        res.setValueElement(parseDateTime(xpp));
9866      } else if (!parseBackboneContent(eventType, xpp, res))
9867        return false;
9868    return true;
9869  }
9870
9871  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
9872    ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent();
9873    parseBackboneAttributes(xpp, res);
9874    next(xpp);
9875    int eventType = nextNoWhitespace(xpp);
9876    while (eventType != XmlPullParser.END_TAG) {
9877  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponentContent(eventType, xpp, owner, res))
9878        unknownContent(xpp);
9879      eventType = nextNoWhitespace(xpp);
9880    }
9881    next(xpp);
9882    parseElementClose(res);
9883    return res;
9884  }
9885
9886  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9887      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseSequence")) {
9888        res.setDoseSequenceElement(parsePositiveInt(xpp));
9889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9890        res.setDescriptionElement(parseString(xpp));
9891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
9892        res.setAuthority(parseReference(xpp));
9893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
9894        res.setSeriesElement(parseString(xpp));
9895      } else if (!parseBackboneContent(eventType, xpp, res))
9896        return false;
9897    return true;
9898  }
9899
9900  protected ImplementationGuide parseImplementationGuide(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9901    ImplementationGuide res = new ImplementationGuide();
9902    parseDomainResourceAttributes(xpp, res);
9903    next(xpp);
9904    int eventType = nextNoWhitespace(xpp);
9905    while (eventType != XmlPullParser.END_TAG) {
9906  if (!parseImplementationGuideContent(eventType, xpp, res))
9907        unknownContent(xpp);
9908      eventType = nextNoWhitespace(xpp);
9909    }
9910    next(xpp);
9911    parseElementClose(res);
9912    return res;
9913  }
9914
9915  protected boolean parseImplementationGuideContent(int eventType, XmlPullParser xpp, ImplementationGuide res) throws XmlPullParserException, IOException, FHIRFormatError {
9916      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9917        res.setUrlElement(parseUri(xpp));
9918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9919        res.setVersionElement(parseString(xpp));
9920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9921        res.setNameElement(parseString(xpp));
9922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9923        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9925        res.setExperimentalElement(parseBoolean(xpp));
9926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9927        res.setDateElement(parseDateTime(xpp));
9928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9929        res.setPublisherElement(parseString(xpp));
9930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9931        res.getContact().add(parseContactDetail(xpp));
9932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9933        res.setDescriptionElement(parseMarkdown(xpp));
9934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9935        res.getUseContext().add(parseUsageContext(xpp));
9936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9937        res.getJurisdiction().add(parseCodeableConcept(xpp));
9938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9939        res.setCopyrightElement(parseMarkdown(xpp));
9940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
9941        res.setFhirVersionElement(parseId(xpp));
9942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependency")) {
9943        res.getDependency().add(parseImplementationGuideImplementationGuideDependencyComponent(xpp, res));
9944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
9945        res.getPackage().add(parseImplementationGuideImplementationGuidePackageComponent(xpp, res));
9946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("global")) {
9947        res.getGlobal().add(parseImplementationGuideImplementationGuideGlobalComponent(xpp, res));
9948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binary")) {
9949        res.getBinary().add(parseUri(xpp));
9950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
9951        res.setPage(parseImplementationGuideImplementationGuidePageComponent(xpp, res));
9952      } else if (!parseDomainResourceContent(eventType, xpp, res))
9953        return false;
9954    return true;
9955  }
9956
9957  protected ImplementationGuide.ImplementationGuideDependencyComponent parseImplementationGuideImplementationGuideDependencyComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
9958    ImplementationGuide.ImplementationGuideDependencyComponent res = new ImplementationGuide.ImplementationGuideDependencyComponent();
9959    parseBackboneAttributes(xpp, res);
9960    next(xpp);
9961    int eventType = nextNoWhitespace(xpp);
9962    while (eventType != XmlPullParser.END_TAG) {
9963  if (!parseImplementationGuideImplementationGuideDependencyComponentContent(eventType, xpp, owner, res))
9964        unknownContent(xpp);
9965      eventType = nextNoWhitespace(xpp);
9966    }
9967    next(xpp);
9968    parseElementClose(res);
9969    return res;
9970  }
9971
9972  protected boolean parseImplementationGuideImplementationGuideDependencyComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDependencyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9973      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9974        res.setTypeElement(parseEnumeration(xpp, ImplementationGuide.GuideDependencyType.NULL, new ImplementationGuide.GuideDependencyTypeEnumFactory()));
9975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
9976        res.setUriElement(parseUri(xpp));
9977      } else if (!parseBackboneContent(eventType, xpp, res))
9978        return false;
9979    return true;
9980  }
9981
9982  protected ImplementationGuide.ImplementationGuidePackageComponent parseImplementationGuideImplementationGuidePackageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
9983    ImplementationGuide.ImplementationGuidePackageComponent res = new ImplementationGuide.ImplementationGuidePackageComponent();
9984    parseBackboneAttributes(xpp, res);
9985    next(xpp);
9986    int eventType = nextNoWhitespace(xpp);
9987    while (eventType != XmlPullParser.END_TAG) {
9988  if (!parseImplementationGuideImplementationGuidePackageComponentContent(eventType, xpp, owner, res))
9989        unknownContent(xpp);
9990      eventType = nextNoWhitespace(xpp);
9991    }
9992    next(xpp);
9993    parseElementClose(res);
9994    return res;
9995  }
9996
9997  protected boolean parseImplementationGuideImplementationGuidePackageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuidePackageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9998      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9999        res.setNameElement(parseString(xpp));
10000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10001        res.setDescriptionElement(parseString(xpp));
10002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
10003        res.getResource().add(parseImplementationGuideImplementationGuidePackageResourceComponent(xpp, owner));
10004      } else if (!parseBackboneContent(eventType, xpp, res))
10005        return false;
10006    return true;
10007  }
10008
10009  protected ImplementationGuide.ImplementationGuidePackageResourceComponent parseImplementationGuideImplementationGuidePackageResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10010    ImplementationGuide.ImplementationGuidePackageResourceComponent res = new ImplementationGuide.ImplementationGuidePackageResourceComponent();
10011    parseBackboneAttributes(xpp, res);
10012    next(xpp);
10013    int eventType = nextNoWhitespace(xpp);
10014    while (eventType != XmlPullParser.END_TAG) {
10015  if (!parseImplementationGuideImplementationGuidePackageResourceComponentContent(eventType, xpp, owner, res))
10016        unknownContent(xpp);
10017      eventType = nextNoWhitespace(xpp);
10018    }
10019    next(xpp);
10020    parseElementClose(res);
10021    return res;
10022  }
10023
10024  protected boolean parseImplementationGuideImplementationGuidePackageResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuidePackageResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10025      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("example")) {
10026        res.setExampleElement(parseBoolean(xpp));
10027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10028        res.setNameElement(parseString(xpp));
10029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10030        res.setDescriptionElement(parseString(xpp));
10031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("acronym")) {
10032        res.setAcronymElement(parseString(xpp));
10033      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
10034        res.setSource(parseType("source", xpp));
10035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exampleFor")) {
10036        res.setExampleFor(parseReference(xpp));
10037      } else if (!parseBackboneContent(eventType, xpp, res))
10038        return false;
10039    return true;
10040  }
10041
10042  protected ImplementationGuide.ImplementationGuideGlobalComponent parseImplementationGuideImplementationGuideGlobalComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10043    ImplementationGuide.ImplementationGuideGlobalComponent res = new ImplementationGuide.ImplementationGuideGlobalComponent();
10044    parseBackboneAttributes(xpp, res);
10045    next(xpp);
10046    int eventType = nextNoWhitespace(xpp);
10047    while (eventType != XmlPullParser.END_TAG) {
10048  if (!parseImplementationGuideImplementationGuideGlobalComponentContent(eventType, xpp, owner, res))
10049        unknownContent(xpp);
10050      eventType = nextNoWhitespace(xpp);
10051    }
10052    next(xpp);
10053    parseElementClose(res);
10054    return res;
10055  }
10056
10057  protected boolean parseImplementationGuideImplementationGuideGlobalComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideGlobalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10058      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10059        res.setTypeElement(parseCode(xpp));
10060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
10061        res.setProfile(parseReference(xpp));
10062      } else if (!parseBackboneContent(eventType, xpp, res))
10063        return false;
10064    return true;
10065  }
10066
10067  protected ImplementationGuide.ImplementationGuidePageComponent parseImplementationGuideImplementationGuidePageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
10068    ImplementationGuide.ImplementationGuidePageComponent res = new ImplementationGuide.ImplementationGuidePageComponent();
10069    parseBackboneAttributes(xpp, res);
10070    next(xpp);
10071    int eventType = nextNoWhitespace(xpp);
10072    while (eventType != XmlPullParser.END_TAG) {
10073  if (!parseImplementationGuideImplementationGuidePageComponentContent(eventType, xpp, owner, res))
10074        unknownContent(xpp);
10075      eventType = nextNoWhitespace(xpp);
10076    }
10077    next(xpp);
10078    parseElementClose(res);
10079    return res;
10080  }
10081
10082  protected boolean parseImplementationGuideImplementationGuidePageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuidePageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10083      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
10084        res.setSourceElement(parseUri(xpp));
10085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10086        res.setTitleElement(parseString(xpp));
10087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
10088        res.setKindElement(parseEnumeration(xpp, ImplementationGuide.GuidePageKind.NULL, new ImplementationGuide.GuidePageKindEnumFactory()));
10089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10090        res.getType().add(parseCode(xpp));
10091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
10092        res.getPackage().add(parseString(xpp));
10093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
10094        res.setFormatElement(parseCode(xpp));
10095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
10096        res.getPage().add(parseImplementationGuideImplementationGuidePageComponent(xpp, owner));
10097      } else if (!parseBackboneContent(eventType, xpp, res))
10098        return false;
10099    return true;
10100  }
10101
10102  protected Library parseLibrary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10103    Library res = new Library();
10104    parseDomainResourceAttributes(xpp, res);
10105    next(xpp);
10106    int eventType = nextNoWhitespace(xpp);
10107    while (eventType != XmlPullParser.END_TAG) {
10108  if (!parseLibraryContent(eventType, xpp, res))
10109        unknownContent(xpp);
10110      eventType = nextNoWhitespace(xpp);
10111    }
10112    next(xpp);
10113    parseElementClose(res);
10114    return res;
10115  }
10116
10117  protected boolean parseLibraryContent(int eventType, XmlPullParser xpp, Library res) throws XmlPullParserException, IOException, FHIRFormatError {
10118      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10119        res.setUrlElement(parseUri(xpp));
10120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10121        res.getIdentifier().add(parseIdentifier(xpp));
10122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10123        res.setVersionElement(parseString(xpp));
10124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10125        res.setNameElement(parseString(xpp));
10126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10127        res.setTitleElement(parseString(xpp));
10128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10129        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
10130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
10131        res.setExperimentalElement(parseBoolean(xpp));
10132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10133        res.setType(parseCodeableConcept(xpp));
10134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10135        res.setDateElement(parseDateTime(xpp));
10136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10137        res.setPublisherElement(parseString(xpp));
10138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10139        res.setDescriptionElement(parseMarkdown(xpp));
10140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
10141        res.setPurposeElement(parseMarkdown(xpp));
10142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
10143        res.setUsageElement(parseString(xpp));
10144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
10145        res.setApprovalDateElement(parseDate(xpp));
10146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
10147        res.setLastReviewDateElement(parseDate(xpp));
10148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
10149        res.setEffectivePeriod(parsePeriod(xpp));
10150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10151        res.getUseContext().add(parseUsageContext(xpp));
10152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10153        res.getJurisdiction().add(parseCodeableConcept(xpp));
10154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
10155        res.getTopic().add(parseCodeableConcept(xpp));
10156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
10157        res.getContributor().add(parseContributor(xpp));
10158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10159        res.getContact().add(parseContactDetail(xpp));
10160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
10161        res.setCopyrightElement(parseMarkdown(xpp));
10162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
10163        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
10164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
10165        res.getParameter().add(parseParameterDefinition(xpp));
10166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
10167        res.getDataRequirement().add(parseDataRequirement(xpp));
10168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
10169        res.getContent().add(parseAttachment(xpp));
10170      } else if (!parseDomainResourceContent(eventType, xpp, res))
10171        return false;
10172    return true;
10173  }
10174
10175  protected Linkage parseLinkage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10176    Linkage res = new Linkage();
10177    parseDomainResourceAttributes(xpp, res);
10178    next(xpp);
10179    int eventType = nextNoWhitespace(xpp);
10180    while (eventType != XmlPullParser.END_TAG) {
10181  if (!parseLinkageContent(eventType, xpp, res))
10182        unknownContent(xpp);
10183      eventType = nextNoWhitespace(xpp);
10184    }
10185    next(xpp);
10186    parseElementClose(res);
10187    return res;
10188  }
10189
10190  protected boolean parseLinkageContent(int eventType, XmlPullParser xpp, Linkage res) throws XmlPullParserException, IOException, FHIRFormatError {
10191      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
10192        res.setActiveElement(parseBoolean(xpp));
10193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
10194        res.setAuthor(parseReference(xpp));
10195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
10196        res.getItem().add(parseLinkageLinkageItemComponent(xpp, res));
10197      } else if (!parseDomainResourceContent(eventType, xpp, res))
10198        return false;
10199    return true;
10200  }
10201
10202  protected Linkage.LinkageItemComponent parseLinkageLinkageItemComponent(XmlPullParser xpp, Linkage owner) throws XmlPullParserException, IOException, FHIRFormatError {
10203    Linkage.LinkageItemComponent res = new Linkage.LinkageItemComponent();
10204    parseBackboneAttributes(xpp, res);
10205    next(xpp);
10206    int eventType = nextNoWhitespace(xpp);
10207    while (eventType != XmlPullParser.END_TAG) {
10208  if (!parseLinkageLinkageItemComponentContent(eventType, xpp, owner, res))
10209        unknownContent(xpp);
10210      eventType = nextNoWhitespace(xpp);
10211    }
10212    next(xpp);
10213    parseElementClose(res);
10214    return res;
10215  }
10216
10217  protected boolean parseLinkageLinkageItemComponentContent(int eventType, XmlPullParser xpp, Linkage owner, Linkage.LinkageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10218      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10219        res.setTypeElement(parseEnumeration(xpp, Linkage.LinkageType.NULL, new Linkage.LinkageTypeEnumFactory()));
10220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
10221        res.setResource(parseReference(xpp));
10222      } else if (!parseBackboneContent(eventType, xpp, res))
10223        return false;
10224    return true;
10225  }
10226
10227  protected ListResource parseListResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10228    ListResource res = new ListResource();
10229    parseDomainResourceAttributes(xpp, res);
10230    next(xpp);
10231    int eventType = nextNoWhitespace(xpp);
10232    while (eventType != XmlPullParser.END_TAG) {
10233  if (!parseListResourceContent(eventType, xpp, res))
10234        unknownContent(xpp);
10235      eventType = nextNoWhitespace(xpp);
10236    }
10237    next(xpp);
10238    parseElementClose(res);
10239    return res;
10240  }
10241
10242  protected boolean parseListResourceContent(int eventType, XmlPullParser xpp, ListResource res) throws XmlPullParserException, IOException, FHIRFormatError {
10243      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10244        res.getIdentifier().add(parseIdentifier(xpp));
10245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10246        res.setStatusElement(parseEnumeration(xpp, ListResource.ListStatus.NULL, new ListResource.ListStatusEnumFactory()));
10247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
10248        res.setModeElement(parseEnumeration(xpp, ListResource.ListMode.NULL, new ListResource.ListModeEnumFactory()));
10249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10250        res.setTitleElement(parseString(xpp));
10251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10252        res.setCode(parseCodeableConcept(xpp));
10253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10254        res.setSubject(parseReference(xpp));
10255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10256        res.setEncounter(parseReference(xpp));
10257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10258        res.setDateElement(parseDateTime(xpp));
10259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
10260        res.setSource(parseReference(xpp));
10261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
10262        res.setOrderedBy(parseCodeableConcept(xpp));
10263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10264        res.getNote().add(parseAnnotation(xpp));
10265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
10266        res.getEntry().add(parseListResourceListEntryComponent(xpp, res));
10267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
10268        res.setEmptyReason(parseCodeableConcept(xpp));
10269      } else if (!parseDomainResourceContent(eventType, xpp, res))
10270        return false;
10271    return true;
10272  }
10273
10274  protected ListResource.ListEntryComponent parseListResourceListEntryComponent(XmlPullParser xpp, ListResource owner) throws XmlPullParserException, IOException, FHIRFormatError {
10275    ListResource.ListEntryComponent res = new ListResource.ListEntryComponent();
10276    parseBackboneAttributes(xpp, res);
10277    next(xpp);
10278    int eventType = nextNoWhitespace(xpp);
10279    while (eventType != XmlPullParser.END_TAG) {
10280  if (!parseListResourceListEntryComponentContent(eventType, xpp, owner, res))
10281        unknownContent(xpp);
10282      eventType = nextNoWhitespace(xpp);
10283    }
10284    next(xpp);
10285    parseElementClose(res);
10286    return res;
10287  }
10288
10289  protected boolean parseListResourceListEntryComponentContent(int eventType, XmlPullParser xpp, ListResource owner, ListResource.ListEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10290      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("flag")) {
10291        res.setFlag(parseCodeableConcept(xpp));
10292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deleted")) {
10293        res.setDeletedElement(parseBoolean(xpp));
10294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10295        res.setDateElement(parseDateTime(xpp));
10296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
10297        res.setItem(parseReference(xpp));
10298      } else if (!parseBackboneContent(eventType, xpp, res))
10299        return false;
10300    return true;
10301  }
10302
10303  protected Location parseLocation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10304    Location res = new Location();
10305    parseDomainResourceAttributes(xpp, res);
10306    next(xpp);
10307    int eventType = nextNoWhitespace(xpp);
10308    while (eventType != XmlPullParser.END_TAG) {
10309  if (!parseLocationContent(eventType, xpp, res))
10310        unknownContent(xpp);
10311      eventType = nextNoWhitespace(xpp);
10312    }
10313    next(xpp);
10314    parseElementClose(res);
10315    return res;
10316  }
10317
10318  protected boolean parseLocationContent(int eventType, XmlPullParser xpp, Location res) throws XmlPullParserException, IOException, FHIRFormatError {
10319      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10320        res.getIdentifier().add(parseIdentifier(xpp));
10321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10322        res.setStatusElement(parseEnumeration(xpp, Location.LocationStatus.NULL, new Location.LocationStatusEnumFactory()));
10323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
10324        res.setOperationalStatus(parseCoding(xpp));
10325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10326        res.setNameElement(parseString(xpp));
10327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
10328        res.getAlias().add(parseString(xpp));
10329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10330        res.setDescriptionElement(parseString(xpp));
10331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
10332        res.setModeElement(parseEnumeration(xpp, Location.LocationMode.NULL, new Location.LocationModeEnumFactory()));
10333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10334        res.setType(parseCodeableConcept(xpp));
10335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
10336        res.getTelecom().add(parseContactPoint(xpp));
10337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
10338        res.setAddress(parseAddress(xpp));
10339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
10340        res.setPhysicalType(parseCodeableConcept(xpp));
10341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("position")) {
10342        res.setPosition(parseLocationLocationPositionComponent(xpp, res));
10343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
10344        res.setManagingOrganization(parseReference(xpp));
10345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
10346        res.setPartOf(parseReference(xpp));
10347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
10348        res.getEndpoint().add(parseReference(xpp));
10349      } else if (!parseDomainResourceContent(eventType, xpp, res))
10350        return false;
10351    return true;
10352  }
10353
10354  protected Location.LocationPositionComponent parseLocationLocationPositionComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
10355    Location.LocationPositionComponent res = new Location.LocationPositionComponent();
10356    parseBackboneAttributes(xpp, res);
10357    next(xpp);
10358    int eventType = nextNoWhitespace(xpp);
10359    while (eventType != XmlPullParser.END_TAG) {
10360  if (!parseLocationLocationPositionComponentContent(eventType, xpp, owner, res))
10361        unknownContent(xpp);
10362      eventType = nextNoWhitespace(xpp);
10363    }
10364    next(xpp);
10365    parseElementClose(res);
10366    return res;
10367  }
10368
10369  protected boolean parseLocationLocationPositionComponentContent(int eventType, XmlPullParser xpp, Location owner, Location.LocationPositionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10370      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("longitude")) {
10371        res.setLongitudeElement(parseDecimal(xpp));
10372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("latitude")) {
10373        res.setLatitudeElement(parseDecimal(xpp));
10374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altitude")) {
10375        res.setAltitudeElement(parseDecimal(xpp));
10376      } else if (!parseBackboneContent(eventType, xpp, res))
10377        return false;
10378    return true;
10379  }
10380
10381  protected Measure parseMeasure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10382    Measure res = new Measure();
10383    parseDomainResourceAttributes(xpp, res);
10384    next(xpp);
10385    int eventType = nextNoWhitespace(xpp);
10386    while (eventType != XmlPullParser.END_TAG) {
10387  if (!parseMeasureContent(eventType, xpp, res))
10388        unknownContent(xpp);
10389      eventType = nextNoWhitespace(xpp);
10390    }
10391    next(xpp);
10392    parseElementClose(res);
10393    return res;
10394  }
10395
10396  protected boolean parseMeasureContent(int eventType, XmlPullParser xpp, Measure res) throws XmlPullParserException, IOException, FHIRFormatError {
10397      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10398        res.setUrlElement(parseUri(xpp));
10399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10400        res.getIdentifier().add(parseIdentifier(xpp));
10401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10402        res.setVersionElement(parseString(xpp));
10403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10404        res.setNameElement(parseString(xpp));
10405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
10406        res.setTitleElement(parseString(xpp));
10407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10408        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
10409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
10410        res.setExperimentalElement(parseBoolean(xpp));
10411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10412        res.setDateElement(parseDateTime(xpp));
10413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10414        res.setPublisherElement(parseString(xpp));
10415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10416        res.setDescriptionElement(parseMarkdown(xpp));
10417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
10418        res.setPurposeElement(parseMarkdown(xpp));
10419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
10420        res.setUsageElement(parseString(xpp));
10421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
10422        res.setApprovalDateElement(parseDate(xpp));
10423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
10424        res.setLastReviewDateElement(parseDate(xpp));
10425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
10426        res.setEffectivePeriod(parsePeriod(xpp));
10427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10428        res.getUseContext().add(parseUsageContext(xpp));
10429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10430        res.getJurisdiction().add(parseCodeableConcept(xpp));
10431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
10432        res.getTopic().add(parseCodeableConcept(xpp));
10433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
10434        res.getContributor().add(parseContributor(xpp));
10435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10436        res.getContact().add(parseContactDetail(xpp));
10437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
10438        res.setCopyrightElement(parseMarkdown(xpp));
10439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
10440        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
10441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
10442        res.getLibrary().add(parseReference(xpp));
10443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disclaimer")) {
10444        res.setDisclaimerElement(parseMarkdown(xpp));
10445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
10446        res.setScoring(parseCodeableConcept(xpp));
10447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositeScoring")) {
10448        res.setCompositeScoring(parseCodeableConcept(xpp));
10449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10450        res.getType().add(parseCodeableConcept(xpp));
10451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskAdjustment")) {
10452        res.setRiskAdjustmentElement(parseString(xpp));
10453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rateAggregation")) {
10454        res.setRateAggregationElement(parseString(xpp));
10455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
10456        res.setRationaleElement(parseMarkdown(xpp));
10457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalRecommendationStatement")) {
10458        res.setClinicalRecommendationStatementElement(parseMarkdown(xpp));
10459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
10460        res.setImprovementNotationElement(parseString(xpp));
10461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
10462        res.getDefinition().add(parseMarkdown(xpp));
10463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guidance")) {
10464        res.setGuidanceElement(parseMarkdown(xpp));
10465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("set")) {
10466        res.setSetElement(parseString(xpp));
10467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
10468        res.getGroup().add(parseMeasureMeasureGroupComponent(xpp, res));
10469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplementalData")) {
10470        res.getSupplementalData().add(parseMeasureMeasureSupplementalDataComponent(xpp, res));
10471      } else if (!parseDomainResourceContent(eventType, xpp, res))
10472        return false;
10473    return true;
10474  }
10475
10476  protected Measure.MeasureGroupComponent parseMeasureMeasureGroupComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
10477    Measure.MeasureGroupComponent res = new Measure.MeasureGroupComponent();
10478    parseBackboneAttributes(xpp, res);
10479    next(xpp);
10480    int eventType = nextNoWhitespace(xpp);
10481    while (eventType != XmlPullParser.END_TAG) {
10482  if (!parseMeasureMeasureGroupComponentContent(eventType, xpp, owner, res))
10483        unknownContent(xpp);
10484      eventType = nextNoWhitespace(xpp);
10485    }
10486    next(xpp);
10487    parseElementClose(res);
10488    return res;
10489  }
10490
10491  protected boolean parseMeasureMeasureGroupComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10492      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10493        res.setIdentifier(parseIdentifier(xpp));
10494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10495        res.setNameElement(parseString(xpp));
10496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10497        res.setDescriptionElement(parseString(xpp));
10498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
10499        res.getPopulation().add(parseMeasureMeasureGroupPopulationComponent(xpp, owner));
10500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
10501        res.getStratifier().add(parseMeasureMeasureGroupStratifierComponent(xpp, owner));
10502      } else if (!parseBackboneContent(eventType, xpp, res))
10503        return false;
10504    return true;
10505  }
10506
10507  protected Measure.MeasureGroupPopulationComponent parseMeasureMeasureGroupPopulationComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
10508    Measure.MeasureGroupPopulationComponent res = new Measure.MeasureGroupPopulationComponent();
10509    parseBackboneAttributes(xpp, res);
10510    next(xpp);
10511    int eventType = nextNoWhitespace(xpp);
10512    while (eventType != XmlPullParser.END_TAG) {
10513  if (!parseMeasureMeasureGroupPopulationComponentContent(eventType, xpp, owner, res))
10514        unknownContent(xpp);
10515      eventType = nextNoWhitespace(xpp);
10516    }
10517    next(xpp);
10518    parseElementClose(res);
10519    return res;
10520  }
10521
10522  protected boolean parseMeasureMeasureGroupPopulationComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10523      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10524        res.setIdentifier(parseIdentifier(xpp));
10525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10526        res.setCode(parseCodeableConcept(xpp));
10527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10528        res.setNameElement(parseString(xpp));
10529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10530        res.setDescriptionElement(parseString(xpp));
10531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
10532        res.setCriteriaElement(parseString(xpp));
10533      } else if (!parseBackboneContent(eventType, xpp, res))
10534        return false;
10535    return true;
10536  }
10537
10538  protected Measure.MeasureGroupStratifierComponent parseMeasureMeasureGroupStratifierComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
10539    Measure.MeasureGroupStratifierComponent res = new Measure.MeasureGroupStratifierComponent();
10540    parseBackboneAttributes(xpp, res);
10541    next(xpp);
10542    int eventType = nextNoWhitespace(xpp);
10543    while (eventType != XmlPullParser.END_TAG) {
10544  if (!parseMeasureMeasureGroupStratifierComponentContent(eventType, xpp, owner, res))
10545        unknownContent(xpp);
10546      eventType = nextNoWhitespace(xpp);
10547    }
10548    next(xpp);
10549    parseElementClose(res);
10550    return res;
10551  }
10552
10553  protected boolean parseMeasureMeasureGroupStratifierComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10554      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10555        res.setIdentifier(parseIdentifier(xpp));
10556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
10557        res.setCriteriaElement(parseString(xpp));
10558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
10559        res.setPathElement(parseString(xpp));
10560      } else if (!parseBackboneContent(eventType, xpp, res))
10561        return false;
10562    return true;
10563  }
10564
10565  protected Measure.MeasureSupplementalDataComponent parseMeasureMeasureSupplementalDataComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
10566    Measure.MeasureSupplementalDataComponent res = new Measure.MeasureSupplementalDataComponent();
10567    parseBackboneAttributes(xpp, res);
10568    next(xpp);
10569    int eventType = nextNoWhitespace(xpp);
10570    while (eventType != XmlPullParser.END_TAG) {
10571  if (!parseMeasureMeasureSupplementalDataComponentContent(eventType, xpp, owner, res))
10572        unknownContent(xpp);
10573      eventType = nextNoWhitespace(xpp);
10574    }
10575    next(xpp);
10576    parseElementClose(res);
10577    return res;
10578  }
10579
10580  protected boolean parseMeasureMeasureSupplementalDataComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureSupplementalDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10581      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10582        res.setIdentifier(parseIdentifier(xpp));
10583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
10584        res.getUsage().add(parseCodeableConcept(xpp));
10585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
10586        res.setCriteriaElement(parseString(xpp));
10587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
10588        res.setPathElement(parseString(xpp));
10589      } else if (!parseBackboneContent(eventType, xpp, res))
10590        return false;
10591    return true;
10592  }
10593
10594  protected MeasureReport parseMeasureReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10595    MeasureReport res = new MeasureReport();
10596    parseDomainResourceAttributes(xpp, res);
10597    next(xpp);
10598    int eventType = nextNoWhitespace(xpp);
10599    while (eventType != XmlPullParser.END_TAG) {
10600  if (!parseMeasureReportContent(eventType, xpp, res))
10601        unknownContent(xpp);
10602      eventType = nextNoWhitespace(xpp);
10603    }
10604    next(xpp);
10605    parseElementClose(res);
10606    return res;
10607  }
10608
10609  protected boolean parseMeasureReportContent(int eventType, XmlPullParser xpp, MeasureReport res) throws XmlPullParserException, IOException, FHIRFormatError {
10610      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10611        res.setIdentifier(parseIdentifier(xpp));
10612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10613        res.setStatusElement(parseEnumeration(xpp, MeasureReport.MeasureReportStatus.NULL, new MeasureReport.MeasureReportStatusEnumFactory()));
10614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10615        res.setTypeElement(parseEnumeration(xpp, MeasureReport.MeasureReportType.NULL, new MeasureReport.MeasureReportTypeEnumFactory()));
10616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
10617        res.setMeasure(parseReference(xpp));
10618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
10619        res.setPatient(parseReference(xpp));
10620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10621        res.setDateElement(parseDateTime(xpp));
10622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportingOrganization")) {
10623        res.setReportingOrganization(parseReference(xpp));
10624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10625        res.setPeriod(parsePeriod(xpp));
10626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
10627        res.getGroup().add(parseMeasureReportMeasureReportGroupComponent(xpp, res));
10628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluatedResources")) {
10629        res.setEvaluatedResources(parseReference(xpp));
10630      } else if (!parseDomainResourceContent(eventType, xpp, res))
10631        return false;
10632    return true;
10633  }
10634
10635  protected MeasureReport.MeasureReportGroupComponent parseMeasureReportMeasureReportGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10636    MeasureReport.MeasureReportGroupComponent res = new MeasureReport.MeasureReportGroupComponent();
10637    parseBackboneAttributes(xpp, res);
10638    next(xpp);
10639    int eventType = nextNoWhitespace(xpp);
10640    while (eventType != XmlPullParser.END_TAG) {
10641  if (!parseMeasureReportMeasureReportGroupComponentContent(eventType, xpp, owner, res))
10642        unknownContent(xpp);
10643      eventType = nextNoWhitespace(xpp);
10644    }
10645    next(xpp);
10646    parseElementClose(res);
10647    return res;
10648  }
10649
10650  protected boolean parseMeasureReportMeasureReportGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10651      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10652        res.setIdentifier(parseIdentifier(xpp));
10653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
10654        res.getPopulation().add(parseMeasureReportMeasureReportGroupPopulationComponent(xpp, owner));
10655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
10656        res.setMeasureScoreElement(parseDecimal(xpp));
10657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
10658        res.getStratifier().add(parseMeasureReportMeasureReportGroupStratifierComponent(xpp, owner));
10659      } else if (!parseBackboneContent(eventType, xpp, res))
10660        return false;
10661    return true;
10662  }
10663
10664  protected MeasureReport.MeasureReportGroupPopulationComponent parseMeasureReportMeasureReportGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10665    MeasureReport.MeasureReportGroupPopulationComponent res = new MeasureReport.MeasureReportGroupPopulationComponent();
10666    parseBackboneAttributes(xpp, res);
10667    next(xpp);
10668    int eventType = nextNoWhitespace(xpp);
10669    while (eventType != XmlPullParser.END_TAG) {
10670  if (!parseMeasureReportMeasureReportGroupPopulationComponentContent(eventType, xpp, owner, res))
10671        unknownContent(xpp);
10672      eventType = nextNoWhitespace(xpp);
10673    }
10674    next(xpp);
10675    parseElementClose(res);
10676    return res;
10677  }
10678
10679  protected boolean parseMeasureReportMeasureReportGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10680      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10681        res.setIdentifier(parseIdentifier(xpp));
10682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10683        res.setCode(parseCodeableConcept(xpp));
10684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
10685        res.setCountElement(parseInteger(xpp));
10686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patients")) {
10687        res.setPatients(parseReference(xpp));
10688      } else if (!parseBackboneContent(eventType, xpp, res))
10689        return false;
10690    return true;
10691  }
10692
10693  protected MeasureReport.MeasureReportGroupStratifierComponent parseMeasureReportMeasureReportGroupStratifierComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10694    MeasureReport.MeasureReportGroupStratifierComponent res = new MeasureReport.MeasureReportGroupStratifierComponent();
10695    parseBackboneAttributes(xpp, res);
10696    next(xpp);
10697    int eventType = nextNoWhitespace(xpp);
10698    while (eventType != XmlPullParser.END_TAG) {
10699  if (!parseMeasureReportMeasureReportGroupStratifierComponentContent(eventType, xpp, owner, res))
10700        unknownContent(xpp);
10701      eventType = nextNoWhitespace(xpp);
10702    }
10703    next(xpp);
10704    parseElementClose(res);
10705    return res;
10706  }
10707
10708  protected boolean parseMeasureReportMeasureReportGroupStratifierComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10709      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10710        res.setIdentifier(parseIdentifier(xpp));
10711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratum")) {
10712        res.getStratum().add(parseMeasureReportStratifierGroupComponent(xpp, owner));
10713      } else if (!parseBackboneContent(eventType, xpp, res))
10714        return false;
10715    return true;
10716  }
10717
10718  protected MeasureReport.StratifierGroupComponent parseMeasureReportStratifierGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10719    MeasureReport.StratifierGroupComponent res = new MeasureReport.StratifierGroupComponent();
10720    parseBackboneAttributes(xpp, res);
10721    next(xpp);
10722    int eventType = nextNoWhitespace(xpp);
10723    while (eventType != XmlPullParser.END_TAG) {
10724  if (!parseMeasureReportStratifierGroupComponentContent(eventType, xpp, owner, res))
10725        unknownContent(xpp);
10726      eventType = nextNoWhitespace(xpp);
10727    }
10728    next(xpp);
10729    parseElementClose(res);
10730    return res;
10731  }
10732
10733  protected boolean parseMeasureReportStratifierGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10734      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
10735        res.setValueElement(parseString(xpp));
10736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
10737        res.getPopulation().add(parseMeasureReportStratifierGroupPopulationComponent(xpp, owner));
10738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
10739        res.setMeasureScoreElement(parseDecimal(xpp));
10740      } else if (!parseBackboneContent(eventType, xpp, res))
10741        return false;
10742    return true;
10743  }
10744
10745  protected MeasureReport.StratifierGroupPopulationComponent parseMeasureReportStratifierGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
10746    MeasureReport.StratifierGroupPopulationComponent res = new MeasureReport.StratifierGroupPopulationComponent();
10747    parseBackboneAttributes(xpp, res);
10748    next(xpp);
10749    int eventType = nextNoWhitespace(xpp);
10750    while (eventType != XmlPullParser.END_TAG) {
10751  if (!parseMeasureReportStratifierGroupPopulationComponentContent(eventType, xpp, owner, res))
10752        unknownContent(xpp);
10753      eventType = nextNoWhitespace(xpp);
10754    }
10755    next(xpp);
10756    parseElementClose(res);
10757    return res;
10758  }
10759
10760  protected boolean parseMeasureReportStratifierGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10761      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10762        res.setIdentifier(parseIdentifier(xpp));
10763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10764        res.setCode(parseCodeableConcept(xpp));
10765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
10766        res.setCountElement(parseInteger(xpp));
10767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patients")) {
10768        res.setPatients(parseReference(xpp));
10769      } else if (!parseBackboneContent(eventType, xpp, res))
10770        return false;
10771    return true;
10772  }
10773
10774  protected Media parseMedia(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10775    Media res = new Media();
10776    parseDomainResourceAttributes(xpp, res);
10777    next(xpp);
10778    int eventType = nextNoWhitespace(xpp);
10779    while (eventType != XmlPullParser.END_TAG) {
10780  if (!parseMediaContent(eventType, xpp, res))
10781        unknownContent(xpp);
10782      eventType = nextNoWhitespace(xpp);
10783    }
10784    next(xpp);
10785    parseElementClose(res);
10786    return res;
10787  }
10788
10789  protected boolean parseMediaContent(int eventType, XmlPullParser xpp, Media res) throws XmlPullParserException, IOException, FHIRFormatError {
10790      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10791        res.getIdentifier().add(parseIdentifier(xpp));
10792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
10793        res.getBasedOn().add(parseReference(xpp));
10794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10795        res.setTypeElement(parseEnumeration(xpp, Media.DigitalMediaType.NULL, new Media.DigitalMediaTypeEnumFactory()));
10796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
10797        res.setSubtype(parseCodeableConcept(xpp));
10798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("view")) {
10799        res.setView(parseCodeableConcept(xpp));
10800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10801        res.setSubject(parseReference(xpp));
10802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
10803        res.setContext(parseReference(xpp));
10804      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
10805        res.setOccurrence(parseType("occurrence", xpp));
10806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
10807        res.setOperator(parseReference(xpp));
10808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
10809        res.getReasonCode().add(parseCodeableConcept(xpp));
10810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
10811        res.setBodySite(parseCodeableConcept(xpp));
10812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
10813        res.setDevice(parseReference(xpp));
10814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
10815        res.setHeightElement(parsePositiveInt(xpp));
10816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
10817        res.setWidthElement(parsePositiveInt(xpp));
10818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
10819        res.setFramesElement(parsePositiveInt(xpp));
10820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
10821        res.setDurationElement(parseUnsignedInt(xpp));
10822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
10823        res.setContent(parseAttachment(xpp));
10824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10825        res.getNote().add(parseAnnotation(xpp));
10826      } else if (!parseDomainResourceContent(eventType, xpp, res))
10827        return false;
10828    return true;
10829  }
10830
10831  protected Medication parseMedication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10832    Medication res = new Medication();
10833    parseDomainResourceAttributes(xpp, res);
10834    next(xpp);
10835    int eventType = nextNoWhitespace(xpp);
10836    while (eventType != XmlPullParser.END_TAG) {
10837  if (!parseMedicationContent(eventType, xpp, res))
10838        unknownContent(xpp);
10839      eventType = nextNoWhitespace(xpp);
10840    }
10841    next(xpp);
10842    parseElementClose(res);
10843    return res;
10844  }
10845
10846  protected boolean parseMedicationContent(int eventType, XmlPullParser xpp, Medication res) throws XmlPullParserException, IOException, FHIRFormatError {
10847      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10848        res.setCode(parseCodeableConcept(xpp));
10849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10850        res.setStatusElement(parseEnumeration(xpp, Medication.MedicationStatus.NULL, new Medication.MedicationStatusEnumFactory()));
10851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isBrand")) {
10852        res.setIsBrandElement(parseBoolean(xpp));
10853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isOverTheCounter")) {
10854        res.setIsOverTheCounterElement(parseBoolean(xpp));
10855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
10856        res.setManufacturer(parseReference(xpp));
10857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
10858        res.setForm(parseCodeableConcept(xpp));
10859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
10860        res.getIngredient().add(parseMedicationMedicationIngredientComponent(xpp, res));
10861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("package")) {
10862        res.setPackage(parseMedicationMedicationPackageComponent(xpp, res));
10863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
10864        res.getImage().add(parseAttachment(xpp));
10865      } else if (!parseDomainResourceContent(eventType, xpp, res))
10866        return false;
10867    return true;
10868  }
10869
10870  protected Medication.MedicationIngredientComponent parseMedicationMedicationIngredientComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
10871    Medication.MedicationIngredientComponent res = new Medication.MedicationIngredientComponent();
10872    parseBackboneAttributes(xpp, res);
10873    next(xpp);
10874    int eventType = nextNoWhitespace(xpp);
10875    while (eventType != XmlPullParser.END_TAG) {
10876  if (!parseMedicationMedicationIngredientComponentContent(eventType, xpp, owner, res))
10877        unknownContent(xpp);
10878      eventType = nextNoWhitespace(xpp);
10879    }
10880    next(xpp);
10881    parseElementClose(res);
10882    return res;
10883  }
10884
10885  protected boolean parseMedicationMedicationIngredientComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10886      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
10887        res.setItem(parseType("item", xpp));
10888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
10889        res.setIsActiveElement(parseBoolean(xpp));
10890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10891        res.setAmount(parseRatio(xpp));
10892      } else if (!parseBackboneContent(eventType, xpp, res))
10893        return false;
10894    return true;
10895  }
10896
10897  protected Medication.MedicationPackageComponent parseMedicationMedicationPackageComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
10898    Medication.MedicationPackageComponent res = new Medication.MedicationPackageComponent();
10899    parseBackboneAttributes(xpp, res);
10900    next(xpp);
10901    int eventType = nextNoWhitespace(xpp);
10902    while (eventType != XmlPullParser.END_TAG) {
10903  if (!parseMedicationMedicationPackageComponentContent(eventType, xpp, owner, res))
10904        unknownContent(xpp);
10905      eventType = nextNoWhitespace(xpp);
10906    }
10907    next(xpp);
10908    parseElementClose(res);
10909    return res;
10910  }
10911
10912  protected boolean parseMedicationMedicationPackageComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationPackageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10913      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
10914        res.setContainer(parseCodeableConcept(xpp));
10915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
10916        res.getContent().add(parseMedicationMedicationPackageContentComponent(xpp, owner));
10917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batch")) {
10918        res.getBatch().add(parseMedicationMedicationPackageBatchComponent(xpp, owner));
10919      } else if (!parseBackboneContent(eventType, xpp, res))
10920        return false;
10921    return true;
10922  }
10923
10924  protected Medication.MedicationPackageContentComponent parseMedicationMedicationPackageContentComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
10925    Medication.MedicationPackageContentComponent res = new Medication.MedicationPackageContentComponent();
10926    parseBackboneAttributes(xpp, res);
10927    next(xpp);
10928    int eventType = nextNoWhitespace(xpp);
10929    while (eventType != XmlPullParser.END_TAG) {
10930  if (!parseMedicationMedicationPackageContentComponentContent(eventType, xpp, owner, res))
10931        unknownContent(xpp);
10932      eventType = nextNoWhitespace(xpp);
10933    }
10934    next(xpp);
10935    parseElementClose(res);
10936    return res;
10937  }
10938
10939  protected boolean parseMedicationMedicationPackageContentComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationPackageContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10940      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
10941        res.setItem(parseType("item", xpp));
10942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10943        res.setAmount(parseSimpleQuantity(xpp));
10944      } else if (!parseBackboneContent(eventType, xpp, res))
10945        return false;
10946    return true;
10947  }
10948
10949  protected Medication.MedicationPackageBatchComponent parseMedicationMedicationPackageBatchComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
10950    Medication.MedicationPackageBatchComponent res = new Medication.MedicationPackageBatchComponent();
10951    parseBackboneAttributes(xpp, res);
10952    next(xpp);
10953    int eventType = nextNoWhitespace(xpp);
10954    while (eventType != XmlPullParser.END_TAG) {
10955  if (!parseMedicationMedicationPackageBatchComponentContent(eventType, xpp, owner, res))
10956        unknownContent(xpp);
10957      eventType = nextNoWhitespace(xpp);
10958    }
10959    next(xpp);
10960    parseElementClose(res);
10961    return res;
10962  }
10963
10964  protected boolean parseMedicationMedicationPackageBatchComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationPackageBatchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10965      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
10966        res.setLotNumberElement(parseString(xpp));
10967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
10968        res.setExpirationDateElement(parseDateTime(xpp));
10969      } else if (!parseBackboneContent(eventType, xpp, res))
10970        return false;
10971    return true;
10972  }
10973
10974  protected MedicationAdministration parseMedicationAdministration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10975    MedicationAdministration res = new MedicationAdministration();
10976    parseDomainResourceAttributes(xpp, res);
10977    next(xpp);
10978    int eventType = nextNoWhitespace(xpp);
10979    while (eventType != XmlPullParser.END_TAG) {
10980  if (!parseMedicationAdministrationContent(eventType, xpp, res))
10981        unknownContent(xpp);
10982      eventType = nextNoWhitespace(xpp);
10983    }
10984    next(xpp);
10985    parseElementClose(res);
10986    return res;
10987  }
10988
10989  protected boolean parseMedicationAdministrationContent(int eventType, XmlPullParser xpp, MedicationAdministration res) throws XmlPullParserException, IOException, FHIRFormatError {
10990      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10991        res.getIdentifier().add(parseIdentifier(xpp));
10992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
10993        res.getDefinition().add(parseReference(xpp));
10994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
10995        res.getPartOf().add(parseReference(xpp));
10996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10997        res.setStatusElement(parseEnumeration(xpp, MedicationAdministration.MedicationAdministrationStatus.NULL, new MedicationAdministration.MedicationAdministrationStatusEnumFactory()));
10998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10999        res.setCategory(parseCodeableConcept(xpp));
11000      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
11001        res.setMedication(parseType("medication", xpp));
11002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11003        res.setSubject(parseReference(xpp));
11004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11005        res.setContext(parseReference(xpp));
11006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
11007        res.getSupportingInformation().add(parseReference(xpp));
11008      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
11009        res.setEffective(parseType("effective", xpp));
11010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11011        res.getPerformer().add(parseMedicationAdministrationMedicationAdministrationPerformerComponent(xpp, res));
11012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notGiven")) {
11013        res.setNotGivenElement(parseBoolean(xpp));
11014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotGiven")) {
11015        res.getReasonNotGiven().add(parseCodeableConcept(xpp));
11016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11017        res.getReasonCode().add(parseCodeableConcept(xpp));
11018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11019        res.getReasonReference().add(parseReference(xpp));
11020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
11021        res.setPrescription(parseReference(xpp));
11022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
11023        res.getDevice().add(parseReference(xpp));
11024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11025        res.getNote().add(parseAnnotation(xpp));
11026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
11027        res.setDosage(parseMedicationAdministrationMedicationAdministrationDosageComponent(xpp, res));
11028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
11029        res.getEventHistory().add(parseReference(xpp));
11030      } else if (!parseDomainResourceContent(eventType, xpp, res))
11031        return false;
11032    return true;
11033  }
11034
11035  protected MedicationAdministration.MedicationAdministrationPerformerComponent parseMedicationAdministrationMedicationAdministrationPerformerComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
11036    MedicationAdministration.MedicationAdministrationPerformerComponent res = new MedicationAdministration.MedicationAdministrationPerformerComponent();
11037    parseBackboneAttributes(xpp, res);
11038    next(xpp);
11039    int eventType = nextNoWhitespace(xpp);
11040    while (eventType != XmlPullParser.END_TAG) {
11041  if (!parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(eventType, xpp, owner, res))
11042        unknownContent(xpp);
11043      eventType = nextNoWhitespace(xpp);
11044    }
11045    next(xpp);
11046    parseElementClose(res);
11047    return res;
11048  }
11049
11050  protected boolean parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11051      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11052        res.setActor(parseReference(xpp));
11053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
11054        res.setOnBehalfOf(parseReference(xpp));
11055      } else if (!parseBackboneContent(eventType, xpp, res))
11056        return false;
11057    return true;
11058  }
11059
11060  protected MedicationAdministration.MedicationAdministrationDosageComponent parseMedicationAdministrationMedicationAdministrationDosageComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
11061    MedicationAdministration.MedicationAdministrationDosageComponent res = new MedicationAdministration.MedicationAdministrationDosageComponent();
11062    parseBackboneAttributes(xpp, res);
11063    next(xpp);
11064    int eventType = nextNoWhitespace(xpp);
11065    while (eventType != XmlPullParser.END_TAG) {
11066  if (!parseMedicationAdministrationMedicationAdministrationDosageComponentContent(eventType, xpp, owner, res))
11067        unknownContent(xpp);
11068      eventType = nextNoWhitespace(xpp);
11069    }
11070    next(xpp);
11071    parseElementClose(res);
11072    return res;
11073  }
11074
11075  protected boolean parseMedicationAdministrationMedicationAdministrationDosageComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11076      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
11077        res.setTextElement(parseString(xpp));
11078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
11079        res.setSite(parseCodeableConcept(xpp));
11080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
11081        res.setRoute(parseCodeableConcept(xpp));
11082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
11083        res.setMethod(parseCodeableConcept(xpp));
11084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dose")) {
11085        res.setDose(parseSimpleQuantity(xpp));
11086      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
11087        res.setRate(parseType("rate", xpp));
11088      } else if (!parseBackboneContent(eventType, xpp, res))
11089        return false;
11090    return true;
11091  }
11092
11093  protected MedicationDispense parseMedicationDispense(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11094    MedicationDispense res = new MedicationDispense();
11095    parseDomainResourceAttributes(xpp, res);
11096    next(xpp);
11097    int eventType = nextNoWhitespace(xpp);
11098    while (eventType != XmlPullParser.END_TAG) {
11099  if (!parseMedicationDispenseContent(eventType, xpp, res))
11100        unknownContent(xpp);
11101      eventType = nextNoWhitespace(xpp);
11102    }
11103    next(xpp);
11104    parseElementClose(res);
11105    return res;
11106  }
11107
11108  protected boolean parseMedicationDispenseContent(int eventType, XmlPullParser xpp, MedicationDispense res) throws XmlPullParserException, IOException, FHIRFormatError {
11109      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11110        res.getIdentifier().add(parseIdentifier(xpp));
11111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
11112        res.getPartOf().add(parseReference(xpp));
11113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11114        res.setStatusElement(parseEnumeration(xpp, MedicationDispense.MedicationDispenseStatus.NULL, new MedicationDispense.MedicationDispenseStatusEnumFactory()));
11115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11116        res.setCategory(parseCodeableConcept(xpp));
11117      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
11118        res.setMedication(parseType("medication", xpp));
11119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11120        res.setSubject(parseReference(xpp));
11121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11122        res.setContext(parseReference(xpp));
11123      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
11124        res.getSupportingInformation().add(parseReference(xpp));
11125      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11126        res.getPerformer().add(parseMedicationDispenseMedicationDispensePerformerComponent(xpp, res));
11127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizingPrescription")) {
11128        res.getAuthorizingPrescription().add(parseReference(xpp));
11129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11130        res.setType(parseCodeableConcept(xpp));
11131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11132        res.setQuantity(parseSimpleQuantity(xpp));
11133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysSupply")) {
11134        res.setDaysSupply(parseSimpleQuantity(xpp));
11135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
11136        res.setWhenPreparedElement(parseDateTime(xpp));
11137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
11138        res.setWhenHandedOverElement(parseDateTime(xpp));
11139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
11140        res.setDestination(parseReference(xpp));
11141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
11142        res.getReceiver().add(parseReference(xpp));
11143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11144        res.getNote().add(parseAnnotation(xpp));
11145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
11146        res.getDosageInstruction().add(parseDosage(xpp));
11147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
11148        res.setSubstitution(parseMedicationDispenseMedicationDispenseSubstitutionComponent(xpp, res));
11149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
11150        res.getDetectedIssue().add(parseReference(xpp));
11151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDone")) {
11152        res.setNotDoneElement(parseBoolean(xpp));
11153      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "notDoneReason")) {
11154        res.setNotDoneReason(parseType("notDoneReason", xpp));
11155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
11156        res.getEventHistory().add(parseReference(xpp));
11157      } else if (!parseDomainResourceContent(eventType, xpp, res))
11158        return false;
11159    return true;
11160  }
11161
11162  protected MedicationDispense.MedicationDispensePerformerComponent parseMedicationDispenseMedicationDispensePerformerComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
11163    MedicationDispense.MedicationDispensePerformerComponent res = new MedicationDispense.MedicationDispensePerformerComponent();
11164    parseBackboneAttributes(xpp, res);
11165    next(xpp);
11166    int eventType = nextNoWhitespace(xpp);
11167    while (eventType != XmlPullParser.END_TAG) {
11168  if (!parseMedicationDispenseMedicationDispensePerformerComponentContent(eventType, xpp, owner, res))
11169        unknownContent(xpp);
11170      eventType = nextNoWhitespace(xpp);
11171    }
11172    next(xpp);
11173    parseElementClose(res);
11174    return res;
11175  }
11176
11177  protected boolean parseMedicationDispenseMedicationDispensePerformerComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispensePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11178      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11179        res.setActor(parseReference(xpp));
11180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
11181        res.setOnBehalfOf(parseReference(xpp));
11182      } else if (!parseBackboneContent(eventType, xpp, res))
11183        return false;
11184    return true;
11185  }
11186
11187  protected MedicationDispense.MedicationDispenseSubstitutionComponent parseMedicationDispenseMedicationDispenseSubstitutionComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
11188    MedicationDispense.MedicationDispenseSubstitutionComponent res = new MedicationDispense.MedicationDispenseSubstitutionComponent();
11189    parseBackboneAttributes(xpp, res);
11190    next(xpp);
11191    int eventType = nextNoWhitespace(xpp);
11192    while (eventType != XmlPullParser.END_TAG) {
11193  if (!parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(eventType, xpp, owner, res))
11194        unknownContent(xpp);
11195      eventType = nextNoWhitespace(xpp);
11196    }
11197    next(xpp);
11198    parseElementClose(res);
11199    return res;
11200  }
11201
11202  protected boolean parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispenseSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11203      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasSubstituted")) {
11204        res.setWasSubstitutedElement(parseBoolean(xpp));
11205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11206        res.setType(parseCodeableConcept(xpp));
11207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11208        res.getReason().add(parseCodeableConcept(xpp));
11209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibleParty")) {
11210        res.getResponsibleParty().add(parseReference(xpp));
11211      } else if (!parseBackboneContent(eventType, xpp, res))
11212        return false;
11213    return true;
11214  }
11215
11216  protected MedicationRequest parseMedicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11217    MedicationRequest res = new MedicationRequest();
11218    parseDomainResourceAttributes(xpp, res);
11219    next(xpp);
11220    int eventType = nextNoWhitespace(xpp);
11221    while (eventType != XmlPullParser.END_TAG) {
11222  if (!parseMedicationRequestContent(eventType, xpp, res))
11223        unknownContent(xpp);
11224      eventType = nextNoWhitespace(xpp);
11225    }
11226    next(xpp);
11227    parseElementClose(res);
11228    return res;
11229  }
11230
11231  protected boolean parseMedicationRequestContent(int eventType, XmlPullParser xpp, MedicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
11232      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11233        res.getIdentifier().add(parseIdentifier(xpp));
11234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
11235        res.getDefinition().add(parseReference(xpp));
11236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11237        res.getBasedOn().add(parseReference(xpp));
11238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
11239        res.setGroupIdentifier(parseIdentifier(xpp));
11240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11241        res.setStatusElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestStatus.NULL, new MedicationRequest.MedicationRequestStatusEnumFactory()));
11242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
11243        res.setIntentElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestIntent.NULL, new MedicationRequest.MedicationRequestIntentEnumFactory()));
11244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11245        res.setCategory(parseCodeableConcept(xpp));
11246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
11247        res.setPriorityElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestPriority.NULL, new MedicationRequest.MedicationRequestPriorityEnumFactory()));
11248      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
11249        res.setMedication(parseType("medication", xpp));
11250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11251        res.setSubject(parseReference(xpp));
11252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11253        res.setContext(parseReference(xpp));
11254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
11255        res.getSupportingInformation().add(parseReference(xpp));
11256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
11257        res.setAuthoredOnElement(parseDateTime(xpp));
11258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
11259        res.setRequester(parseMedicationRequestMedicationRequestRequesterComponent(xpp, res));
11260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
11261        res.setRecorder(parseReference(xpp));
11262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11263        res.getReasonCode().add(parseCodeableConcept(xpp));
11264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11265        res.getReasonReference().add(parseReference(xpp));
11266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11267        res.getNote().add(parseAnnotation(xpp));
11268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
11269        res.getDosageInstruction().add(parseDosage(xpp));
11270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseRequest")) {
11271        res.setDispenseRequest(parseMedicationRequestMedicationRequestDispenseRequestComponent(xpp, res));
11272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
11273        res.setSubstitution(parseMedicationRequestMedicationRequestSubstitutionComponent(xpp, res));
11274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorPrescription")) {
11275        res.setPriorPrescription(parseReference(xpp));
11276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
11277        res.getDetectedIssue().add(parseReference(xpp));
11278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
11279        res.getEventHistory().add(parseReference(xpp));
11280      } else if (!parseDomainResourceContent(eventType, xpp, res))
11281        return false;
11282    return true;
11283  }
11284
11285  protected MedicationRequest.MedicationRequestRequesterComponent parseMedicationRequestMedicationRequestRequesterComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
11286    MedicationRequest.MedicationRequestRequesterComponent res = new MedicationRequest.MedicationRequestRequesterComponent();
11287    parseBackboneAttributes(xpp, res);
11288    next(xpp);
11289    int eventType = nextNoWhitespace(xpp);
11290    while (eventType != XmlPullParser.END_TAG) {
11291  if (!parseMedicationRequestMedicationRequestRequesterComponentContent(eventType, xpp, owner, res))
11292        unknownContent(xpp);
11293      eventType = nextNoWhitespace(xpp);
11294    }
11295    next(xpp);
11296    parseElementClose(res);
11297    return res;
11298  }
11299
11300  protected boolean parseMedicationRequestMedicationRequestRequesterComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11301      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
11302        res.setAgent(parseReference(xpp));
11303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
11304        res.setOnBehalfOf(parseReference(xpp));
11305      } else if (!parseBackboneContent(eventType, xpp, res))
11306        return false;
11307    return true;
11308  }
11309
11310  protected MedicationRequest.MedicationRequestDispenseRequestComponent parseMedicationRequestMedicationRequestDispenseRequestComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
11311    MedicationRequest.MedicationRequestDispenseRequestComponent res = new MedicationRequest.MedicationRequestDispenseRequestComponent();
11312    parseBackboneAttributes(xpp, res);
11313    next(xpp);
11314    int eventType = nextNoWhitespace(xpp);
11315    while (eventType != XmlPullParser.END_TAG) {
11316  if (!parseMedicationRequestMedicationRequestDispenseRequestComponentContent(eventType, xpp, owner, res))
11317        unknownContent(xpp);
11318      eventType = nextNoWhitespace(xpp);
11319    }
11320    next(xpp);
11321    parseElementClose(res);
11322    return res;
11323  }
11324
11325  protected boolean parseMedicationRequestMedicationRequestDispenseRequestComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestDispenseRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11326      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
11327        res.setValidityPeriod(parsePeriod(xpp));
11328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfRepeatsAllowed")) {
11329        res.setNumberOfRepeatsAllowedElement(parsePositiveInt(xpp));
11330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11331        res.setQuantity(parseSimpleQuantity(xpp));
11332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expectedSupplyDuration")) {
11333        res.setExpectedSupplyDuration(parseDuration(xpp));
11334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11335        res.setPerformer(parseReference(xpp));
11336      } else if (!parseBackboneContent(eventType, xpp, res))
11337        return false;
11338    return true;
11339  }
11340
11341  protected MedicationRequest.MedicationRequestSubstitutionComponent parseMedicationRequestMedicationRequestSubstitutionComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
11342    MedicationRequest.MedicationRequestSubstitutionComponent res = new MedicationRequest.MedicationRequestSubstitutionComponent();
11343    parseBackboneAttributes(xpp, res);
11344    next(xpp);
11345    int eventType = nextNoWhitespace(xpp);
11346    while (eventType != XmlPullParser.END_TAG) {
11347  if (!parseMedicationRequestMedicationRequestSubstitutionComponentContent(eventType, xpp, owner, res))
11348        unknownContent(xpp);
11349      eventType = nextNoWhitespace(xpp);
11350    }
11351    next(xpp);
11352    parseElementClose(res);
11353    return res;
11354  }
11355
11356  protected boolean parseMedicationRequestMedicationRequestSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11357      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowed")) {
11358        res.setAllowedElement(parseBoolean(xpp));
11359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11360        res.setReason(parseCodeableConcept(xpp));
11361      } else if (!parseBackboneContent(eventType, xpp, res))
11362        return false;
11363    return true;
11364  }
11365
11366  protected MedicationStatement parseMedicationStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11367    MedicationStatement res = new MedicationStatement();
11368    parseDomainResourceAttributes(xpp, res);
11369    next(xpp);
11370    int eventType = nextNoWhitespace(xpp);
11371    while (eventType != XmlPullParser.END_TAG) {
11372  if (!parseMedicationStatementContent(eventType, xpp, res))
11373        unknownContent(xpp);
11374      eventType = nextNoWhitespace(xpp);
11375    }
11376    next(xpp);
11377    parseElementClose(res);
11378    return res;
11379  }
11380
11381  protected boolean parseMedicationStatementContent(int eventType, XmlPullParser xpp, MedicationStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
11382      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11383        res.getIdentifier().add(parseIdentifier(xpp));
11384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11385        res.getBasedOn().add(parseReference(xpp));
11386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
11387        res.getPartOf().add(parseReference(xpp));
11388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11389        res.setContext(parseReference(xpp));
11390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11391        res.setStatusElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementStatus.NULL, new MedicationStatement.MedicationStatementStatusEnumFactory()));
11392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11393        res.setCategory(parseCodeableConcept(xpp));
11394      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
11395        res.setMedication(parseType("medication", xpp));
11396      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
11397        res.setEffective(parseType("effective", xpp));
11398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAsserted")) {
11399        res.setDateAssertedElement(parseDateTime(xpp));
11400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
11401        res.setInformationSource(parseReference(xpp));
11402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11403        res.setSubject(parseReference(xpp));
11404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
11405        res.getDerivedFrom().add(parseReference(xpp));
11406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("taken")) {
11407        res.setTakenElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementTaken.NULL, new MedicationStatement.MedicationStatementTakenEnumFactory()));
11408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonNotTaken")) {
11409        res.getReasonNotTaken().add(parseCodeableConcept(xpp));
11410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11411        res.getReasonCode().add(parseCodeableConcept(xpp));
11412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11413        res.getReasonReference().add(parseReference(xpp));
11414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11415        res.getNote().add(parseAnnotation(xpp));
11416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
11417        res.getDosage().add(parseDosage(xpp));
11418      } else if (!parseDomainResourceContent(eventType, xpp, res))
11419        return false;
11420    return true;
11421  }
11422
11423  protected MessageDefinition parseMessageDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11424    MessageDefinition res = new MessageDefinition();
11425    parseDomainResourceAttributes(xpp, res);
11426    next(xpp);
11427    int eventType = nextNoWhitespace(xpp);
11428    while (eventType != XmlPullParser.END_TAG) {
11429  if (!parseMessageDefinitionContent(eventType, xpp, res))
11430        unknownContent(xpp);
11431      eventType = nextNoWhitespace(xpp);
11432    }
11433    next(xpp);
11434    parseElementClose(res);
11435    return res;
11436  }
11437
11438  protected boolean parseMessageDefinitionContent(int eventType, XmlPullParser xpp, MessageDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
11439      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
11440        res.setUrlElement(parseUri(xpp));
11441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11442        res.setIdentifier(parseIdentifier(xpp));
11443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11444        res.setVersionElement(parseString(xpp));
11445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11446        res.setNameElement(parseString(xpp));
11447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11448        res.setTitleElement(parseString(xpp));
11449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11450        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
11452        res.setExperimentalElement(parseBoolean(xpp));
11453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11454        res.setDateElement(parseDateTime(xpp));
11455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11456        res.setPublisherElement(parseString(xpp));
11457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11458        res.getContact().add(parseContactDetail(xpp));
11459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11460        res.setDescriptionElement(parseMarkdown(xpp));
11461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11462        res.getUseContext().add(parseUsageContext(xpp));
11463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
11464        res.getJurisdiction().add(parseCodeableConcept(xpp));
11465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
11466        res.setPurposeElement(parseMarkdown(xpp));
11467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
11468        res.setCopyrightElement(parseMarkdown(xpp));
11469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
11470        res.setBase(parseReference(xpp));
11471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
11472        res.getParent().add(parseReference(xpp));
11473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
11474        res.getReplaces().add(parseReference(xpp));
11475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
11476        res.setEvent(parseCoding(xpp));
11477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11478        res.setCategoryElement(parseEnumeration(xpp, MessageDefinition.MessageSignificanceCategory.NULL, new MessageDefinition.MessageSignificanceCategoryEnumFactory()));
11479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
11480        res.getFocus().add(parseMessageDefinitionMessageDefinitionFocusComponent(xpp, res));
11481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseRequired")) {
11482        res.setResponseRequiredElement(parseBoolean(xpp));
11483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowedResponse")) {
11484        res.getAllowedResponse().add(parseMessageDefinitionMessageDefinitionAllowedResponseComponent(xpp, res));
11485      } else if (!parseDomainResourceContent(eventType, xpp, res))
11486        return false;
11487    return true;
11488  }
11489
11490  protected MessageDefinition.MessageDefinitionFocusComponent parseMessageDefinitionMessageDefinitionFocusComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
11491    MessageDefinition.MessageDefinitionFocusComponent res = new MessageDefinition.MessageDefinitionFocusComponent();
11492    parseBackboneAttributes(xpp, res);
11493    next(xpp);
11494    int eventType = nextNoWhitespace(xpp);
11495    while (eventType != XmlPullParser.END_TAG) {
11496  if (!parseMessageDefinitionMessageDefinitionFocusComponentContent(eventType, xpp, owner, res))
11497        unknownContent(xpp);
11498      eventType = nextNoWhitespace(xpp);
11499    }
11500    next(xpp);
11501    parseElementClose(res);
11502    return res;
11503  }
11504
11505  protected boolean parseMessageDefinitionMessageDefinitionFocusComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionFocusComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11506      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11507        res.setCodeElement(parseCode(xpp));
11508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
11509        res.setProfile(parseReference(xpp));
11510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
11511        res.setMinElement(parseUnsignedInt(xpp));
11512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
11513        res.setMaxElement(parseString(xpp));
11514      } else if (!parseBackboneContent(eventType, xpp, res))
11515        return false;
11516    return true;
11517  }
11518
11519  protected MessageDefinition.MessageDefinitionAllowedResponseComponent parseMessageDefinitionMessageDefinitionAllowedResponseComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
11520    MessageDefinition.MessageDefinitionAllowedResponseComponent res = new MessageDefinition.MessageDefinitionAllowedResponseComponent();
11521    parseBackboneAttributes(xpp, res);
11522    next(xpp);
11523    int eventType = nextNoWhitespace(xpp);
11524    while (eventType != XmlPullParser.END_TAG) {
11525  if (!parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(eventType, xpp, owner, res))
11526        unknownContent(xpp);
11527      eventType = nextNoWhitespace(xpp);
11528    }
11529    next(xpp);
11530    parseElementClose(res);
11531    return res;
11532  }
11533
11534  protected boolean parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionAllowedResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11535      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
11536        res.setMessage(parseReference(xpp));
11537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("situation")) {
11538        res.setSituationElement(parseMarkdown(xpp));
11539      } else if (!parseBackboneContent(eventType, xpp, res))
11540        return false;
11541    return true;
11542  }
11543
11544  protected MessageHeader parseMessageHeader(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11545    MessageHeader res = new MessageHeader();
11546    parseDomainResourceAttributes(xpp, res);
11547    next(xpp);
11548    int eventType = nextNoWhitespace(xpp);
11549    while (eventType != XmlPullParser.END_TAG) {
11550  if (!parseMessageHeaderContent(eventType, xpp, res))
11551        unknownContent(xpp);
11552      eventType = nextNoWhitespace(xpp);
11553    }
11554    next(xpp);
11555    parseElementClose(res);
11556    return res;
11557  }
11558
11559  protected boolean parseMessageHeaderContent(int eventType, XmlPullParser xpp, MessageHeader res) throws XmlPullParserException, IOException, FHIRFormatError {
11560      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
11561        res.setEvent(parseCoding(xpp));
11562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
11563        res.getDestination().add(parseMessageHeaderMessageDestinationComponent(xpp, res));
11564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
11565        res.setReceiver(parseReference(xpp));
11566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
11567        res.setSender(parseReference(xpp));
11568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
11569        res.setTimestampElement(parseInstant(xpp));
11570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
11571        res.setEnterer(parseReference(xpp));
11572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
11573        res.setAuthor(parseReference(xpp));
11574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
11575        res.setSource(parseMessageHeaderMessageSourceComponent(xpp, res));
11576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
11577        res.setResponsible(parseReference(xpp));
11578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11579        res.setReason(parseCodeableConcept(xpp));
11580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
11581        res.setResponse(parseMessageHeaderMessageHeaderResponseComponent(xpp, res));
11582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
11583        res.getFocus().add(parseReference(xpp));
11584      } else if (!parseDomainResourceContent(eventType, xpp, res))
11585        return false;
11586    return true;
11587  }
11588
11589  protected MessageHeader.MessageDestinationComponent parseMessageHeaderMessageDestinationComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
11590    MessageHeader.MessageDestinationComponent res = new MessageHeader.MessageDestinationComponent();
11591    parseBackboneAttributes(xpp, res);
11592    next(xpp);
11593    int eventType = nextNoWhitespace(xpp);
11594    while (eventType != XmlPullParser.END_TAG) {
11595  if (!parseMessageHeaderMessageDestinationComponentContent(eventType, xpp, owner, res))
11596        unknownContent(xpp);
11597      eventType = nextNoWhitespace(xpp);
11598    }
11599    next(xpp);
11600    parseElementClose(res);
11601    return res;
11602  }
11603
11604  protected boolean parseMessageHeaderMessageDestinationComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11605      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11606        res.setNameElement(parseString(xpp));
11607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
11608        res.setTarget(parseReference(xpp));
11609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11610        res.setEndpointElement(parseUri(xpp));
11611      } else if (!parseBackboneContent(eventType, xpp, res))
11612        return false;
11613    return true;
11614  }
11615
11616  protected MessageHeader.MessageSourceComponent parseMessageHeaderMessageSourceComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
11617    MessageHeader.MessageSourceComponent res = new MessageHeader.MessageSourceComponent();
11618    parseBackboneAttributes(xpp, res);
11619    next(xpp);
11620    int eventType = nextNoWhitespace(xpp);
11621    while (eventType != XmlPullParser.END_TAG) {
11622  if (!parseMessageHeaderMessageSourceComponentContent(eventType, xpp, owner, res))
11623        unknownContent(xpp);
11624      eventType = nextNoWhitespace(xpp);
11625    }
11626    next(xpp);
11627    parseElementClose(res);
11628    return res;
11629  }
11630
11631  protected boolean parseMessageHeaderMessageSourceComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11632      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11633        res.setNameElement(parseString(xpp));
11634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
11635        res.setSoftwareElement(parseString(xpp));
11636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11637        res.setVersionElement(parseString(xpp));
11638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11639        res.setContact(parseContactPoint(xpp));
11640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11641        res.setEndpointElement(parseUri(xpp));
11642      } else if (!parseBackboneContent(eventType, xpp, res))
11643        return false;
11644    return true;
11645  }
11646
11647  protected MessageHeader.MessageHeaderResponseComponent parseMessageHeaderMessageHeaderResponseComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
11648    MessageHeader.MessageHeaderResponseComponent res = new MessageHeader.MessageHeaderResponseComponent();
11649    parseBackboneAttributes(xpp, res);
11650    next(xpp);
11651    int eventType = nextNoWhitespace(xpp);
11652    while (eventType != XmlPullParser.END_TAG) {
11653  if (!parseMessageHeaderMessageHeaderResponseComponentContent(eventType, xpp, owner, res))
11654        unknownContent(xpp);
11655      eventType = nextNoWhitespace(xpp);
11656    }
11657    next(xpp);
11658    parseElementClose(res);
11659    return res;
11660  }
11661
11662  protected boolean parseMessageHeaderMessageHeaderResponseComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageHeaderResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11663      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11664        res.setIdentifierElement(parseId(xpp));
11665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11666        res.setCodeElement(parseEnumeration(xpp, MessageHeader.ResponseType.NULL, new MessageHeader.ResponseTypeEnumFactory()));
11667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
11668        res.setDetails(parseReference(xpp));
11669      } else if (!parseBackboneContent(eventType, xpp, res))
11670        return false;
11671    return true;
11672  }
11673
11674  protected NamingSystem parseNamingSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11675    NamingSystem res = new NamingSystem();
11676    parseDomainResourceAttributes(xpp, res);
11677    next(xpp);
11678    int eventType = nextNoWhitespace(xpp);
11679    while (eventType != XmlPullParser.END_TAG) {
11680  if (!parseNamingSystemContent(eventType, xpp, res))
11681        unknownContent(xpp);
11682      eventType = nextNoWhitespace(xpp);
11683    }
11684    next(xpp);
11685    parseElementClose(res);
11686    return res;
11687  }
11688
11689  protected boolean parseNamingSystemContent(int eventType, XmlPullParser xpp, NamingSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
11690      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11691        res.setNameElement(parseString(xpp));
11692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11693        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
11695        res.setKindElement(parseEnumeration(xpp, NamingSystem.NamingSystemType.NULL, new NamingSystem.NamingSystemTypeEnumFactory()));
11696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11697        res.setDateElement(parseDateTime(xpp));
11698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11699        res.setPublisherElement(parseString(xpp));
11700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11701        res.getContact().add(parseContactDetail(xpp));
11702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
11703        res.setResponsibleElement(parseString(xpp));
11704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11705        res.setType(parseCodeableConcept(xpp));
11706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11707        res.setDescriptionElement(parseMarkdown(xpp));
11708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11709        res.getUseContext().add(parseUsageContext(xpp));
11710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
11711        res.getJurisdiction().add(parseCodeableConcept(xpp));
11712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
11713        res.setUsageElement(parseString(xpp));
11714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uniqueId")) {
11715        res.getUniqueId().add(parseNamingSystemNamingSystemUniqueIdComponent(xpp, res));
11716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replacedBy")) {
11717        res.setReplacedBy(parseReference(xpp));
11718      } else if (!parseDomainResourceContent(eventType, xpp, res))
11719        return false;
11720    return true;
11721  }
11722
11723  protected NamingSystem.NamingSystemUniqueIdComponent parseNamingSystemNamingSystemUniqueIdComponent(XmlPullParser xpp, NamingSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
11724    NamingSystem.NamingSystemUniqueIdComponent res = new NamingSystem.NamingSystemUniqueIdComponent();
11725    parseBackboneAttributes(xpp, res);
11726    next(xpp);
11727    int eventType = nextNoWhitespace(xpp);
11728    while (eventType != XmlPullParser.END_TAG) {
11729  if (!parseNamingSystemNamingSystemUniqueIdComponentContent(eventType, xpp, owner, res))
11730        unknownContent(xpp);
11731      eventType = nextNoWhitespace(xpp);
11732    }
11733    next(xpp);
11734    parseElementClose(res);
11735    return res;
11736  }
11737
11738  protected boolean parseNamingSystemNamingSystemUniqueIdComponentContent(int eventType, XmlPullParser xpp, NamingSystem owner, NamingSystem.NamingSystemUniqueIdComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11739      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11740        res.setTypeElement(parseEnumeration(xpp, NamingSystem.NamingSystemIdentifierType.NULL, new NamingSystem.NamingSystemIdentifierTypeEnumFactory()));
11741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
11742        res.setValueElement(parseString(xpp));
11743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
11744        res.setPreferredElement(parseBoolean(xpp));
11745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
11746        res.setCommentElement(parseString(xpp));
11747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11748        res.setPeriod(parsePeriod(xpp));
11749      } else if (!parseBackboneContent(eventType, xpp, res))
11750        return false;
11751    return true;
11752  }
11753
11754  protected NutritionOrder parseNutritionOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11755    NutritionOrder res = new NutritionOrder();
11756    parseDomainResourceAttributes(xpp, res);
11757    next(xpp);
11758    int eventType = nextNoWhitespace(xpp);
11759    while (eventType != XmlPullParser.END_TAG) {
11760  if (!parseNutritionOrderContent(eventType, xpp, res))
11761        unknownContent(xpp);
11762      eventType = nextNoWhitespace(xpp);
11763    }
11764    next(xpp);
11765    parseElementClose(res);
11766    return res;
11767  }
11768
11769  protected boolean parseNutritionOrderContent(int eventType, XmlPullParser xpp, NutritionOrder res) throws XmlPullParserException, IOException, FHIRFormatError {
11770      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11771        res.getIdentifier().add(parseIdentifier(xpp));
11772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11773        res.setStatusElement(parseEnumeration(xpp, NutritionOrder.NutritionOrderStatus.NULL, new NutritionOrder.NutritionOrderStatusEnumFactory()));
11774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11775        res.setPatient(parseReference(xpp));
11776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11777        res.setEncounter(parseReference(xpp));
11778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
11779        res.setDateTimeElement(parseDateTime(xpp));
11780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
11781        res.setOrderer(parseReference(xpp));
11782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergyIntolerance")) {
11783        res.getAllergyIntolerance().add(parseReference(xpp));
11784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodPreferenceModifier")) {
11785        res.getFoodPreferenceModifier().add(parseCodeableConcept(xpp));
11786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeFoodModifier")) {
11787        res.getExcludeFoodModifier().add(parseCodeableConcept(xpp));
11788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oralDiet")) {
11789        res.setOralDiet(parseNutritionOrderNutritionOrderOralDietComponent(xpp, res));
11790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplement")) {
11791        res.getSupplement().add(parseNutritionOrderNutritionOrderSupplementComponent(xpp, res));
11792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteralFormula")) {
11793        res.setEnteralFormula(parseNutritionOrderNutritionOrderEnteralFormulaComponent(xpp, res));
11794      } else if (!parseDomainResourceContent(eventType, xpp, res))
11795        return false;
11796    return true;
11797  }
11798
11799  protected NutritionOrder.NutritionOrderOralDietComponent parseNutritionOrderNutritionOrderOralDietComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11800    NutritionOrder.NutritionOrderOralDietComponent res = new NutritionOrder.NutritionOrderOralDietComponent();
11801    parseBackboneAttributes(xpp, res);
11802    next(xpp);
11803    int eventType = nextNoWhitespace(xpp);
11804    while (eventType != XmlPullParser.END_TAG) {
11805  if (!parseNutritionOrderNutritionOrderOralDietComponentContent(eventType, xpp, owner, res))
11806        unknownContent(xpp);
11807      eventType = nextNoWhitespace(xpp);
11808    }
11809    next(xpp);
11810    parseElementClose(res);
11811    return res;
11812  }
11813
11814  protected boolean parseNutritionOrderNutritionOrderOralDietComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11815      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11816        res.getType().add(parseCodeableConcept(xpp));
11817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
11818        res.getSchedule().add(parseTiming(xpp));
11819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
11820        res.getNutrient().add(parseNutritionOrderNutritionOrderOralDietNutrientComponent(xpp, owner));
11821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("texture")) {
11822        res.getTexture().add(parseNutritionOrderNutritionOrderOralDietTextureComponent(xpp, owner));
11823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fluidConsistencyType")) {
11824        res.getFluidConsistencyType().add(parseCodeableConcept(xpp));
11825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
11826        res.setInstructionElement(parseString(xpp));
11827      } else if (!parseBackboneContent(eventType, xpp, res))
11828        return false;
11829    return true;
11830  }
11831
11832  protected NutritionOrder.NutritionOrderOralDietNutrientComponent parseNutritionOrderNutritionOrderOralDietNutrientComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11833    NutritionOrder.NutritionOrderOralDietNutrientComponent res = new NutritionOrder.NutritionOrderOralDietNutrientComponent();
11834    parseBackboneAttributes(xpp, res);
11835    next(xpp);
11836    int eventType = nextNoWhitespace(xpp);
11837    while (eventType != XmlPullParser.END_TAG) {
11838  if (!parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(eventType, xpp, owner, res))
11839        unknownContent(xpp);
11840      eventType = nextNoWhitespace(xpp);
11841    }
11842    next(xpp);
11843    parseElementClose(res);
11844    return res;
11845  }
11846
11847  protected boolean parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietNutrientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11848      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
11849        res.setModifier(parseCodeableConcept(xpp));
11850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
11851        res.setAmount(parseSimpleQuantity(xpp));
11852      } else if (!parseBackboneContent(eventType, xpp, res))
11853        return false;
11854    return true;
11855  }
11856
11857  protected NutritionOrder.NutritionOrderOralDietTextureComponent parseNutritionOrderNutritionOrderOralDietTextureComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11858    NutritionOrder.NutritionOrderOralDietTextureComponent res = new NutritionOrder.NutritionOrderOralDietTextureComponent();
11859    parseBackboneAttributes(xpp, res);
11860    next(xpp);
11861    int eventType = nextNoWhitespace(xpp);
11862    while (eventType != XmlPullParser.END_TAG) {
11863  if (!parseNutritionOrderNutritionOrderOralDietTextureComponentContent(eventType, xpp, owner, res))
11864        unknownContent(xpp);
11865      eventType = nextNoWhitespace(xpp);
11866    }
11867    next(xpp);
11868    parseElementClose(res);
11869    return res;
11870  }
11871
11872  protected boolean parseNutritionOrderNutritionOrderOralDietTextureComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietTextureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11873      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
11874        res.setModifier(parseCodeableConcept(xpp));
11875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodType")) {
11876        res.setFoodType(parseCodeableConcept(xpp));
11877      } else if (!parseBackboneContent(eventType, xpp, res))
11878        return false;
11879    return true;
11880  }
11881
11882  protected NutritionOrder.NutritionOrderSupplementComponent parseNutritionOrderNutritionOrderSupplementComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11883    NutritionOrder.NutritionOrderSupplementComponent res = new NutritionOrder.NutritionOrderSupplementComponent();
11884    parseBackboneAttributes(xpp, res);
11885    next(xpp);
11886    int eventType = nextNoWhitespace(xpp);
11887    while (eventType != XmlPullParser.END_TAG) {
11888  if (!parseNutritionOrderNutritionOrderSupplementComponentContent(eventType, xpp, owner, res))
11889        unknownContent(xpp);
11890      eventType = nextNoWhitespace(xpp);
11891    }
11892    next(xpp);
11893    parseElementClose(res);
11894    return res;
11895  }
11896
11897  protected boolean parseNutritionOrderNutritionOrderSupplementComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderSupplementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11898      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11899        res.setType(parseCodeableConcept(xpp));
11900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
11901        res.setProductNameElement(parseString(xpp));
11902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
11903        res.getSchedule().add(parseTiming(xpp));
11904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11905        res.setQuantity(parseSimpleQuantity(xpp));
11906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
11907        res.setInstructionElement(parseString(xpp));
11908      } else if (!parseBackboneContent(eventType, xpp, res))
11909        return false;
11910    return true;
11911  }
11912
11913  protected NutritionOrder.NutritionOrderEnteralFormulaComponent parseNutritionOrderNutritionOrderEnteralFormulaComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11914    NutritionOrder.NutritionOrderEnteralFormulaComponent res = new NutritionOrder.NutritionOrderEnteralFormulaComponent();
11915    parseBackboneAttributes(xpp, res);
11916    next(xpp);
11917    int eventType = nextNoWhitespace(xpp);
11918    while (eventType != XmlPullParser.END_TAG) {
11919  if (!parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(eventType, xpp, owner, res))
11920        unknownContent(xpp);
11921      eventType = nextNoWhitespace(xpp);
11922    }
11923    next(xpp);
11924    parseElementClose(res);
11925    return res;
11926  }
11927
11928  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11929      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaType")) {
11930        res.setBaseFormulaType(parseCodeableConcept(xpp));
11931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaProductName")) {
11932        res.setBaseFormulaProductNameElement(parseString(xpp));
11933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveType")) {
11934        res.setAdditiveType(parseCodeableConcept(xpp));
11935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveProductName")) {
11936        res.setAdditiveProductNameElement(parseString(xpp));
11937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caloricDensity")) {
11938        res.setCaloricDensity(parseSimpleQuantity(xpp));
11939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeofAdministration")) {
11940        res.setRouteofAdministration(parseCodeableConcept(xpp));
11941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administration")) {
11942        res.getAdministration().add(parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(xpp, owner));
11943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxVolumeToDeliver")) {
11944        res.setMaxVolumeToDeliver(parseSimpleQuantity(xpp));
11945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationInstruction")) {
11946        res.setAdministrationInstructionElement(parseString(xpp));
11947      } else if (!parseBackboneContent(eventType, xpp, res))
11948        return false;
11949    return true;
11950  }
11951
11952  protected NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
11953    NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res = new NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent();
11954    parseBackboneAttributes(xpp, res);
11955    next(xpp);
11956    int eventType = nextNoWhitespace(xpp);
11957    while (eventType != XmlPullParser.END_TAG) {
11958  if (!parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(eventType, xpp, owner, res))
11959        unknownContent(xpp);
11960      eventType = nextNoWhitespace(xpp);
11961    }
11962    next(xpp);
11963    parseElementClose(res);
11964    return res;
11965  }
11966
11967  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11968      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
11969        res.setSchedule(parseTiming(xpp));
11970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11971        res.setQuantity(parseSimpleQuantity(xpp));
11972      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
11973        res.setRate(parseType("rate", xpp));
11974      } else if (!parseBackboneContent(eventType, xpp, res))
11975        return false;
11976    return true;
11977  }
11978
11979  protected Observation parseObservation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11980    Observation res = new Observation();
11981    parseDomainResourceAttributes(xpp, res);
11982    next(xpp);
11983    int eventType = nextNoWhitespace(xpp);
11984    while (eventType != XmlPullParser.END_TAG) {
11985  if (!parseObservationContent(eventType, xpp, res))
11986        unknownContent(xpp);
11987      eventType = nextNoWhitespace(xpp);
11988    }
11989    next(xpp);
11990    parseElementClose(res);
11991    return res;
11992  }
11993
11994  protected boolean parseObservationContent(int eventType, XmlPullParser xpp, Observation res) throws XmlPullParserException, IOException, FHIRFormatError {
11995      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11996        res.getIdentifier().add(parseIdentifier(xpp));
11997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11998        res.getBasedOn().add(parseReference(xpp));
11999      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12000        res.setStatusElement(parseEnumeration(xpp, Observation.ObservationStatus.NULL, new Observation.ObservationStatusEnumFactory()));
12001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12002        res.getCategory().add(parseCodeableConcept(xpp));
12003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12004        res.setCode(parseCodeableConcept(xpp));
12005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12006        res.setSubject(parseReference(xpp));
12007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
12008        res.setContext(parseReference(xpp));
12009      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
12010        res.setEffective(parseType("effective", xpp));
12011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
12012        res.setIssuedElement(parseInstant(xpp));
12013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
12014        res.getPerformer().add(parseReference(xpp));
12015      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
12016        res.setValue(parseType("value", xpp));
12017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
12018        res.setDataAbsentReason(parseCodeableConcept(xpp));
12019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
12020        res.setInterpretation(parseCodeableConcept(xpp));
12021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12022        res.setCommentElement(parseString(xpp));
12023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
12024        res.setBodySite(parseCodeableConcept(xpp));
12025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
12026        res.setMethod(parseCodeableConcept(xpp));
12027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
12028        res.setSpecimen(parseReference(xpp));
12029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
12030        res.setDevice(parseReference(xpp));
12031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
12032        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, res));
12033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
12034        res.getRelated().add(parseObservationObservationRelatedComponent(xpp, res));
12035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
12036        res.getComponent().add(parseObservationObservationComponentComponent(xpp, res));
12037      } else if (!parseDomainResourceContent(eventType, xpp, res))
12038        return false;
12039    return true;
12040  }
12041
12042  protected Observation.ObservationReferenceRangeComponent parseObservationObservationReferenceRangeComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12043    Observation.ObservationReferenceRangeComponent res = new Observation.ObservationReferenceRangeComponent();
12044    parseBackboneAttributes(xpp, res);
12045    next(xpp);
12046    int eventType = nextNoWhitespace(xpp);
12047    while (eventType != XmlPullParser.END_TAG) {
12048  if (!parseObservationObservationReferenceRangeComponentContent(eventType, xpp, owner, res))
12049        unknownContent(xpp);
12050      eventType = nextNoWhitespace(xpp);
12051    }
12052    next(xpp);
12053    parseElementClose(res);
12054    return res;
12055  }
12056
12057  protected boolean parseObservationObservationReferenceRangeComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12058      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
12059        res.setLow(parseSimpleQuantity(xpp));
12060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
12061        res.setHigh(parseSimpleQuantity(xpp));
12062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12063        res.setType(parseCodeableConcept(xpp));
12064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
12065        res.getAppliesTo().add(parseCodeableConcept(xpp));
12066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
12067        res.setAge(parseRange(xpp));
12068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
12069        res.setTextElement(parseString(xpp));
12070      } else if (!parseBackboneContent(eventType, xpp, res))
12071        return false;
12072    return true;
12073  }
12074
12075  protected Observation.ObservationRelatedComponent parseObservationObservationRelatedComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12076    Observation.ObservationRelatedComponent res = new Observation.ObservationRelatedComponent();
12077    parseBackboneAttributes(xpp, res);
12078    next(xpp);
12079    int eventType = nextNoWhitespace(xpp);
12080    while (eventType != XmlPullParser.END_TAG) {
12081  if (!parseObservationObservationRelatedComponentContent(eventType, xpp, owner, res))
12082        unknownContent(xpp);
12083      eventType = nextNoWhitespace(xpp);
12084    }
12085    next(xpp);
12086    parseElementClose(res);
12087    return res;
12088  }
12089
12090  protected boolean parseObservationObservationRelatedComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12091      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12092        res.setTypeElement(parseEnumeration(xpp, Observation.ObservationRelationshipType.NULL, new Observation.ObservationRelationshipTypeEnumFactory()));
12093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12094        res.setTarget(parseReference(xpp));
12095      } else if (!parseBackboneContent(eventType, xpp, res))
12096        return false;
12097    return true;
12098  }
12099
12100  protected Observation.ObservationComponentComponent parseObservationObservationComponentComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12101    Observation.ObservationComponentComponent res = new Observation.ObservationComponentComponent();
12102    parseBackboneAttributes(xpp, res);
12103    next(xpp);
12104    int eventType = nextNoWhitespace(xpp);
12105    while (eventType != XmlPullParser.END_TAG) {
12106  if (!parseObservationObservationComponentComponentContent(eventType, xpp, owner, res))
12107        unknownContent(xpp);
12108      eventType = nextNoWhitespace(xpp);
12109    }
12110    next(xpp);
12111    parseElementClose(res);
12112    return res;
12113  }
12114
12115  protected boolean parseObservationObservationComponentComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12116      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12117        res.setCode(parseCodeableConcept(xpp));
12118      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
12119        res.setValue(parseType("value", xpp));
12120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
12121        res.setDataAbsentReason(parseCodeableConcept(xpp));
12122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
12123        res.setInterpretation(parseCodeableConcept(xpp));
12124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
12125        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, owner));
12126      } else if (!parseBackboneContent(eventType, xpp, res))
12127        return false;
12128    return true;
12129  }
12130
12131  protected OperationDefinition parseOperationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12132    OperationDefinition res = new OperationDefinition();
12133    parseDomainResourceAttributes(xpp, res);
12134    next(xpp);
12135    int eventType = nextNoWhitespace(xpp);
12136    while (eventType != XmlPullParser.END_TAG) {
12137  if (!parseOperationDefinitionContent(eventType, xpp, res))
12138        unknownContent(xpp);
12139      eventType = nextNoWhitespace(xpp);
12140    }
12141    next(xpp);
12142    parseElementClose(res);
12143    return res;
12144  }
12145
12146  protected boolean parseOperationDefinitionContent(int eventType, XmlPullParser xpp, OperationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
12147      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12148        res.setUrlElement(parseUri(xpp));
12149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12150        res.setVersionElement(parseString(xpp));
12151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12152        res.setNameElement(parseString(xpp));
12153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12154        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
12156        res.setKindElement(parseEnumeration(xpp, OperationDefinition.OperationKind.NULL, new OperationDefinition.OperationKindEnumFactory()));
12157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12158        res.setExperimentalElement(parseBoolean(xpp));
12159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12160        res.setDateElement(parseDateTime(xpp));
12161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12162        res.setPublisherElement(parseString(xpp));
12163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12164        res.getContact().add(parseContactDetail(xpp));
12165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12166        res.setDescriptionElement(parseMarkdown(xpp));
12167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12168        res.getUseContext().add(parseUsageContext(xpp));
12169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
12170        res.getJurisdiction().add(parseCodeableConcept(xpp));
12171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12172        res.setPurposeElement(parseMarkdown(xpp));
12173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("idempotent")) {
12174        res.setIdempotentElement(parseBoolean(xpp));
12175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12176        res.setCodeElement(parseCode(xpp));
12177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12178        res.setCommentElement(parseString(xpp));
12179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
12180        res.setBase(parseReference(xpp));
12181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
12182        res.getResource().add(parseCode(xpp));
12183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
12184        res.setSystemElement(parseBoolean(xpp));
12185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12186        res.setTypeElement(parseBoolean(xpp));
12187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
12188        res.setInstanceElement(parseBoolean(xpp));
12189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
12190        res.getParameter().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, res));
12191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overload")) {
12192        res.getOverload().add(parseOperationDefinitionOperationDefinitionOverloadComponent(xpp, res));
12193      } else if (!parseDomainResourceContent(eventType, xpp, res))
12194        return false;
12195    return true;
12196  }
12197
12198  protected OperationDefinition.OperationDefinitionParameterComponent parseOperationDefinitionOperationDefinitionParameterComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12199    OperationDefinition.OperationDefinitionParameterComponent res = new OperationDefinition.OperationDefinitionParameterComponent();
12200    parseBackboneAttributes(xpp, res);
12201    next(xpp);
12202    int eventType = nextNoWhitespace(xpp);
12203    while (eventType != XmlPullParser.END_TAG) {
12204  if (!parseOperationDefinitionOperationDefinitionParameterComponentContent(eventType, xpp, owner, res))
12205        unknownContent(xpp);
12206      eventType = nextNoWhitespace(xpp);
12207    }
12208    next(xpp);
12209    parseElementClose(res);
12210    return res;
12211  }
12212
12213  protected boolean parseOperationDefinitionOperationDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12214      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12215        res.setNameElement(parseCode(xpp));
12216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
12217        res.setUseElement(parseEnumeration(xpp, OperationDefinition.OperationParameterUse.NULL, new OperationDefinition.OperationParameterUseEnumFactory()));
12218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
12219        res.setMinElement(parseInteger(xpp));
12220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
12221        res.setMaxElement(parseString(xpp));
12222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
12223        res.setDocumentationElement(parseString(xpp));
12224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12225        res.setTypeElement(parseCode(xpp));
12226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchType")) {
12227        res.setSearchTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
12228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
12229        res.setProfile(parseReference(xpp));
12230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
12231        res.setBinding(parseOperationDefinitionOperationDefinitionParameterBindingComponent(xpp, owner));
12232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
12233        res.getPart().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, owner));
12234      } else if (!parseBackboneContent(eventType, xpp, res))
12235        return false;
12236    return true;
12237  }
12238
12239  protected OperationDefinition.OperationDefinitionParameterBindingComponent parseOperationDefinitionOperationDefinitionParameterBindingComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12240    OperationDefinition.OperationDefinitionParameterBindingComponent res = new OperationDefinition.OperationDefinitionParameterBindingComponent();
12241    parseBackboneAttributes(xpp, res);
12242    next(xpp);
12243    int eventType = nextNoWhitespace(xpp);
12244    while (eventType != XmlPullParser.END_TAG) {
12245  if (!parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(eventType, xpp, owner, res))
12246        unknownContent(xpp);
12247      eventType = nextNoWhitespace(xpp);
12248    }
12249    next(xpp);
12250    parseElementClose(res);
12251    return res;
12252  }
12253
12254  protected boolean parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12255      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
12256        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
12257      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "valueSet")) {
12258        res.setValueSet(parseType("valueSet", xpp));
12259      } else if (!parseBackboneContent(eventType, xpp, res))
12260        return false;
12261    return true;
12262  }
12263
12264  protected OperationDefinition.OperationDefinitionOverloadComponent parseOperationDefinitionOperationDefinitionOverloadComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12265    OperationDefinition.OperationDefinitionOverloadComponent res = new OperationDefinition.OperationDefinitionOverloadComponent();
12266    parseBackboneAttributes(xpp, res);
12267    next(xpp);
12268    int eventType = nextNoWhitespace(xpp);
12269    while (eventType != XmlPullParser.END_TAG) {
12270  if (!parseOperationDefinitionOperationDefinitionOverloadComponentContent(eventType, xpp, owner, res))
12271        unknownContent(xpp);
12272      eventType = nextNoWhitespace(xpp);
12273    }
12274    next(xpp);
12275    parseElementClose(res);
12276    return res;
12277  }
12278
12279  protected boolean parseOperationDefinitionOperationDefinitionOverloadComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionOverloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12280      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterName")) {
12281        res.getParameterName().add(parseString(xpp));
12282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12283        res.setCommentElement(parseString(xpp));
12284      } else if (!parseBackboneContent(eventType, xpp, res))
12285        return false;
12286    return true;
12287  }
12288
12289  protected OperationOutcome parseOperationOutcome(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12290    OperationOutcome res = new OperationOutcome();
12291    parseDomainResourceAttributes(xpp, res);
12292    next(xpp);
12293    int eventType = nextNoWhitespace(xpp);
12294    while (eventType != XmlPullParser.END_TAG) {
12295  if (!parseOperationOutcomeContent(eventType, xpp, res))
12296        unknownContent(xpp);
12297      eventType = nextNoWhitespace(xpp);
12298    }
12299    next(xpp);
12300    parseElementClose(res);
12301    return res;
12302  }
12303
12304  protected boolean parseOperationOutcomeContent(int eventType, XmlPullParser xpp, OperationOutcome res) throws XmlPullParserException, IOException, FHIRFormatError {
12305      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
12306        res.getIssue().add(parseOperationOutcomeOperationOutcomeIssueComponent(xpp, res));
12307      } else if (!parseDomainResourceContent(eventType, xpp, res))
12308        return false;
12309    return true;
12310  }
12311
12312  protected OperationOutcome.OperationOutcomeIssueComponent parseOperationOutcomeOperationOutcomeIssueComponent(XmlPullParser xpp, OperationOutcome owner) throws XmlPullParserException, IOException, FHIRFormatError {
12313    OperationOutcome.OperationOutcomeIssueComponent res = new OperationOutcome.OperationOutcomeIssueComponent();
12314    parseBackboneAttributes(xpp, res);
12315    next(xpp);
12316    int eventType = nextNoWhitespace(xpp);
12317    while (eventType != XmlPullParser.END_TAG) {
12318  if (!parseOperationOutcomeOperationOutcomeIssueComponentContent(eventType, xpp, owner, res))
12319        unknownContent(xpp);
12320      eventType = nextNoWhitespace(xpp);
12321    }
12322    next(xpp);
12323    parseElementClose(res);
12324    return res;
12325  }
12326
12327  protected boolean parseOperationOutcomeOperationOutcomeIssueComponentContent(int eventType, XmlPullParser xpp, OperationOutcome owner, OperationOutcome.OperationOutcomeIssueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12328      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
12329        res.setSeverityElement(parseEnumeration(xpp, OperationOutcome.IssueSeverity.NULL, new OperationOutcome.IssueSeverityEnumFactory()));
12330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12331        res.setCodeElement(parseEnumeration(xpp, OperationOutcome.IssueType.NULL, new OperationOutcome.IssueTypeEnumFactory()));
12332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
12333        res.setDetails(parseCodeableConcept(xpp));
12334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnostics")) {
12335        res.setDiagnosticsElement(parseString(xpp));
12336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
12337        res.getLocation().add(parseString(xpp));
12338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
12339        res.getExpression().add(parseString(xpp));
12340      } else if (!parseBackboneContent(eventType, xpp, res))
12341        return false;
12342    return true;
12343  }
12344
12345  protected Organization parseOrganization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12346    Organization res = new Organization();
12347    parseDomainResourceAttributes(xpp, res);
12348    next(xpp);
12349    int eventType = nextNoWhitespace(xpp);
12350    while (eventType != XmlPullParser.END_TAG) {
12351  if (!parseOrganizationContent(eventType, xpp, res))
12352        unknownContent(xpp);
12353      eventType = nextNoWhitespace(xpp);
12354    }
12355    next(xpp);
12356    parseElementClose(res);
12357    return res;
12358  }
12359
12360  protected boolean parseOrganizationContent(int eventType, XmlPullParser xpp, Organization res) throws XmlPullParserException, IOException, FHIRFormatError {
12361      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12362        res.getIdentifier().add(parseIdentifier(xpp));
12363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12364        res.setActiveElement(parseBoolean(xpp));
12365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12366        res.getType().add(parseCodeableConcept(xpp));
12367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12368        res.setNameElement(parseString(xpp));
12369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
12370        res.getAlias().add(parseString(xpp));
12371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12372        res.getTelecom().add(parseContactPoint(xpp));
12373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12374        res.getAddress().add(parseAddress(xpp));
12375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
12376        res.setPartOf(parseReference(xpp));
12377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12378        res.getContact().add(parseOrganizationOrganizationContactComponent(xpp, res));
12379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
12380        res.getEndpoint().add(parseReference(xpp));
12381      } else if (!parseDomainResourceContent(eventType, xpp, res))
12382        return false;
12383    return true;
12384  }
12385
12386  protected Organization.OrganizationContactComponent parseOrganizationOrganizationContactComponent(XmlPullParser xpp, Organization owner) throws XmlPullParserException, IOException, FHIRFormatError {
12387    Organization.OrganizationContactComponent res = new Organization.OrganizationContactComponent();
12388    parseBackboneAttributes(xpp, res);
12389    next(xpp);
12390    int eventType = nextNoWhitespace(xpp);
12391    while (eventType != XmlPullParser.END_TAG) {
12392  if (!parseOrganizationOrganizationContactComponentContent(eventType, xpp, owner, res))
12393        unknownContent(xpp);
12394      eventType = nextNoWhitespace(xpp);
12395    }
12396    next(xpp);
12397    parseElementClose(res);
12398    return res;
12399  }
12400
12401  protected boolean parseOrganizationOrganizationContactComponentContent(int eventType, XmlPullParser xpp, Organization owner, Organization.OrganizationContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12402      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12403        res.setPurpose(parseCodeableConcept(xpp));
12404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12405        res.setName(parseHumanName(xpp));
12406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12407        res.getTelecom().add(parseContactPoint(xpp));
12408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12409        res.setAddress(parseAddress(xpp));
12410      } else if (!parseBackboneContent(eventType, xpp, res))
12411        return false;
12412    return true;
12413  }
12414
12415  protected Patient parsePatient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12416    Patient res = new Patient();
12417    parseDomainResourceAttributes(xpp, res);
12418    next(xpp);
12419    int eventType = nextNoWhitespace(xpp);
12420    while (eventType != XmlPullParser.END_TAG) {
12421  if (!parsePatientContent(eventType, xpp, res))
12422        unknownContent(xpp);
12423      eventType = nextNoWhitespace(xpp);
12424    }
12425    next(xpp);
12426    parseElementClose(res);
12427    return res;
12428  }
12429
12430  protected boolean parsePatientContent(int eventType, XmlPullParser xpp, Patient res) throws XmlPullParserException, IOException, FHIRFormatError {
12431      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12432        res.getIdentifier().add(parseIdentifier(xpp));
12433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12434        res.setActiveElement(parseBoolean(xpp));
12435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12436        res.getName().add(parseHumanName(xpp));
12437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12438        res.getTelecom().add(parseContactPoint(xpp));
12439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
12440        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
12441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
12442        res.setBirthDateElement(parseDate(xpp));
12443      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
12444        res.setDeceased(parseType("deceased", xpp));
12445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12446        res.getAddress().add(parseAddress(xpp));
12447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maritalStatus")) {
12448        res.setMaritalStatus(parseCodeableConcept(xpp));
12449      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "multipleBirth")) {
12450        res.setMultipleBirth(parseType("multipleBirth", xpp));
12451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
12452        res.getPhoto().add(parseAttachment(xpp));
12453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12454        res.getContact().add(parsePatientContactComponent(xpp, res));
12455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("animal")) {
12456        res.setAnimal(parsePatientAnimalComponent(xpp, res));
12457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
12458        res.getCommunication().add(parsePatientPatientCommunicationComponent(xpp, res));
12459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalPractitioner")) {
12460        res.getGeneralPractitioner().add(parseReference(xpp));
12461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
12462        res.setManagingOrganization(parseReference(xpp));
12463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
12464        res.getLink().add(parsePatientPatientLinkComponent(xpp, res));
12465      } else if (!parseDomainResourceContent(eventType, xpp, res))
12466        return false;
12467    return true;
12468  }
12469
12470  protected Patient.ContactComponent parsePatientContactComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
12471    Patient.ContactComponent res = new Patient.ContactComponent();
12472    parseBackboneAttributes(xpp, res);
12473    next(xpp);
12474    int eventType = nextNoWhitespace(xpp);
12475    while (eventType != XmlPullParser.END_TAG) {
12476  if (!parsePatientContactComponentContent(eventType, xpp, owner, res))
12477        unknownContent(xpp);
12478      eventType = nextNoWhitespace(xpp);
12479    }
12480    next(xpp);
12481    parseElementClose(res);
12482    return res;
12483  }
12484
12485  protected boolean parsePatientContactComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.ContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12486      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
12487        res.getRelationship().add(parseCodeableConcept(xpp));
12488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12489        res.setName(parseHumanName(xpp));
12490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12491        res.getTelecom().add(parseContactPoint(xpp));
12492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12493        res.setAddress(parseAddress(xpp));
12494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
12495        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
12496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
12497        res.setOrganization(parseReference(xpp));
12498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12499        res.setPeriod(parsePeriod(xpp));
12500      } else if (!parseBackboneContent(eventType, xpp, res))
12501        return false;
12502    return true;
12503  }
12504
12505  protected Patient.AnimalComponent parsePatientAnimalComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
12506    Patient.AnimalComponent res = new Patient.AnimalComponent();
12507    parseBackboneAttributes(xpp, res);
12508    next(xpp);
12509    int eventType = nextNoWhitespace(xpp);
12510    while (eventType != XmlPullParser.END_TAG) {
12511  if (!parsePatientAnimalComponentContent(eventType, xpp, owner, res))
12512        unknownContent(xpp);
12513      eventType = nextNoWhitespace(xpp);
12514    }
12515    next(xpp);
12516    parseElementClose(res);
12517    return res;
12518  }
12519
12520  protected boolean parsePatientAnimalComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.AnimalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12521      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
12522        res.setSpecies(parseCodeableConcept(xpp));
12523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("breed")) {
12524        res.setBreed(parseCodeableConcept(xpp));
12525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genderStatus")) {
12526        res.setGenderStatus(parseCodeableConcept(xpp));
12527      } else if (!parseBackboneContent(eventType, xpp, res))
12528        return false;
12529    return true;
12530  }
12531
12532  protected Patient.PatientCommunicationComponent parsePatientPatientCommunicationComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
12533    Patient.PatientCommunicationComponent res = new Patient.PatientCommunicationComponent();
12534    parseBackboneAttributes(xpp, res);
12535    next(xpp);
12536    int eventType = nextNoWhitespace(xpp);
12537    while (eventType != XmlPullParser.END_TAG) {
12538  if (!parsePatientPatientCommunicationComponentContent(eventType, xpp, owner, res))
12539        unknownContent(xpp);
12540      eventType = nextNoWhitespace(xpp);
12541    }
12542    next(xpp);
12543    parseElementClose(res);
12544    return res;
12545  }
12546
12547  protected boolean parsePatientPatientCommunicationComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12548      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
12549        res.setLanguage(parseCodeableConcept(xpp));
12550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
12551        res.setPreferredElement(parseBoolean(xpp));
12552      } else if (!parseBackboneContent(eventType, xpp, res))
12553        return false;
12554    return true;
12555  }
12556
12557  protected Patient.PatientLinkComponent parsePatientPatientLinkComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
12558    Patient.PatientLinkComponent res = new Patient.PatientLinkComponent();
12559    parseBackboneAttributes(xpp, res);
12560    next(xpp);
12561    int eventType = nextNoWhitespace(xpp);
12562    while (eventType != XmlPullParser.END_TAG) {
12563  if (!parsePatientPatientLinkComponentContent(eventType, xpp, owner, res))
12564        unknownContent(xpp);
12565      eventType = nextNoWhitespace(xpp);
12566    }
12567    next(xpp);
12568    parseElementClose(res);
12569    return res;
12570  }
12571
12572  protected boolean parsePatientPatientLinkComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12573      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
12574        res.setOther(parseReference(xpp));
12575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12576        res.setTypeElement(parseEnumeration(xpp, Patient.LinkType.NULL, new Patient.LinkTypeEnumFactory()));
12577      } else if (!parseBackboneContent(eventType, xpp, res))
12578        return false;
12579    return true;
12580  }
12581
12582  protected PaymentNotice parsePaymentNotice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12583    PaymentNotice res = new PaymentNotice();
12584    parseDomainResourceAttributes(xpp, res);
12585    next(xpp);
12586    int eventType = nextNoWhitespace(xpp);
12587    while (eventType != XmlPullParser.END_TAG) {
12588  if (!parsePaymentNoticeContent(eventType, xpp, res))
12589        unknownContent(xpp);
12590      eventType = nextNoWhitespace(xpp);
12591    }
12592    next(xpp);
12593    parseElementClose(res);
12594    return res;
12595  }
12596
12597  protected boolean parsePaymentNoticeContent(int eventType, XmlPullParser xpp, PaymentNotice res) throws XmlPullParserException, IOException, FHIRFormatError {
12598      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12599        res.getIdentifier().add(parseIdentifier(xpp));
12600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12601        res.setStatusElement(parseEnumeration(xpp, PaymentNotice.PaymentNoticeStatus.NULL, new PaymentNotice.PaymentNoticeStatusEnumFactory()));
12602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
12603        res.setRequest(parseReference(xpp));
12604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
12605        res.setResponse(parseReference(xpp));
12606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
12607        res.setStatusDateElement(parseDate(xpp));
12608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
12609        res.setCreatedElement(parseDateTime(xpp));
12610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12611        res.setTarget(parseReference(xpp));
12612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
12613        res.setProvider(parseReference(xpp));
12614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
12615        res.setOrganization(parseReference(xpp));
12616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentStatus")) {
12617        res.setPaymentStatus(parseCodeableConcept(xpp));
12618      } else if (!parseDomainResourceContent(eventType, xpp, res))
12619        return false;
12620    return true;
12621  }
12622
12623  protected PaymentReconciliation parsePaymentReconciliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12624    PaymentReconciliation res = new PaymentReconciliation();
12625    parseDomainResourceAttributes(xpp, res);
12626    next(xpp);
12627    int eventType = nextNoWhitespace(xpp);
12628    while (eventType != XmlPullParser.END_TAG) {
12629  if (!parsePaymentReconciliationContent(eventType, xpp, res))
12630        unknownContent(xpp);
12631      eventType = nextNoWhitespace(xpp);
12632    }
12633    next(xpp);
12634    parseElementClose(res);
12635    return res;
12636  }
12637
12638  protected boolean parsePaymentReconciliationContent(int eventType, XmlPullParser xpp, PaymentReconciliation res) throws XmlPullParserException, IOException, FHIRFormatError {
12639      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12640        res.getIdentifier().add(parseIdentifier(xpp));
12641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12642        res.setStatusElement(parseEnumeration(xpp, PaymentReconciliation.PaymentReconciliationStatus.NULL, new PaymentReconciliation.PaymentReconciliationStatusEnumFactory()));
12643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12644        res.setPeriod(parsePeriod(xpp));
12645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
12646        res.setCreatedElement(parseDateTime(xpp));
12647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
12648        res.setOrganization(parseReference(xpp));
12649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
12650        res.setRequest(parseReference(xpp));
12651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
12652        res.setOutcome(parseCodeableConcept(xpp));
12653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
12654        res.setDispositionElement(parseString(xpp));
12655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
12656        res.setRequestProvider(parseReference(xpp));
12657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
12658        res.setRequestOrganization(parseReference(xpp));
12659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
12660        res.getDetail().add(parsePaymentReconciliationDetailsComponent(xpp, res));
12661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
12662        res.setForm(parseCodeableConcept(xpp));
12663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
12664        res.setTotal(parseMoney(xpp));
12665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
12666        res.getProcessNote().add(parsePaymentReconciliationNotesComponent(xpp, res));
12667      } else if (!parseDomainResourceContent(eventType, xpp, res))
12668        return false;
12669    return true;
12670  }
12671
12672  protected PaymentReconciliation.DetailsComponent parsePaymentReconciliationDetailsComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12673    PaymentReconciliation.DetailsComponent res = new PaymentReconciliation.DetailsComponent();
12674    parseBackboneAttributes(xpp, res);
12675    next(xpp);
12676    int eventType = nextNoWhitespace(xpp);
12677    while (eventType != XmlPullParser.END_TAG) {
12678  if (!parsePaymentReconciliationDetailsComponentContent(eventType, xpp, owner, res))
12679        unknownContent(xpp);
12680      eventType = nextNoWhitespace(xpp);
12681    }
12682    next(xpp);
12683    parseElementClose(res);
12684    return res;
12685  }
12686
12687  protected boolean parsePaymentReconciliationDetailsComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12688      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12689        res.setType(parseCodeableConcept(xpp));
12690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
12691        res.setRequest(parseReference(xpp));
12692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
12693        res.setResponse(parseReference(xpp));
12694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("submitter")) {
12695        res.setSubmitter(parseReference(xpp));
12696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
12697        res.setPayee(parseReference(xpp));
12698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12699        res.setDateElement(parseDate(xpp));
12700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
12701        res.setAmount(parseMoney(xpp));
12702      } else if (!parseBackboneContent(eventType, xpp, res))
12703        return false;
12704    return true;
12705  }
12706
12707  protected PaymentReconciliation.NotesComponent parsePaymentReconciliationNotesComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
12708    PaymentReconciliation.NotesComponent res = new PaymentReconciliation.NotesComponent();
12709    parseBackboneAttributes(xpp, res);
12710    next(xpp);
12711    int eventType = nextNoWhitespace(xpp);
12712    while (eventType != XmlPullParser.END_TAG) {
12713  if (!parsePaymentReconciliationNotesComponentContent(eventType, xpp, owner, res))
12714        unknownContent(xpp);
12715      eventType = nextNoWhitespace(xpp);
12716    }
12717    next(xpp);
12718    parseElementClose(res);
12719    return res;
12720  }
12721
12722  protected boolean parsePaymentReconciliationNotesComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.NotesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12723      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12724        res.setType(parseCodeableConcept(xpp));
12725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
12726        res.setTextElement(parseString(xpp));
12727      } else if (!parseBackboneContent(eventType, xpp, res))
12728        return false;
12729    return true;
12730  }
12731
12732  protected Person parsePerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12733    Person res = new Person();
12734    parseDomainResourceAttributes(xpp, res);
12735    next(xpp);
12736    int eventType = nextNoWhitespace(xpp);
12737    while (eventType != XmlPullParser.END_TAG) {
12738  if (!parsePersonContent(eventType, xpp, res))
12739        unknownContent(xpp);
12740      eventType = nextNoWhitespace(xpp);
12741    }
12742    next(xpp);
12743    parseElementClose(res);
12744    return res;
12745  }
12746
12747  protected boolean parsePersonContent(int eventType, XmlPullParser xpp, Person res) throws XmlPullParserException, IOException, FHIRFormatError {
12748      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12749        res.getIdentifier().add(parseIdentifier(xpp));
12750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12751        res.getName().add(parseHumanName(xpp));
12752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12753        res.getTelecom().add(parseContactPoint(xpp));
12754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
12755        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
12756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
12757        res.setBirthDateElement(parseDate(xpp));
12758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12759        res.getAddress().add(parseAddress(xpp));
12760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
12761        res.setPhoto(parseAttachment(xpp));
12762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
12763        res.setManagingOrganization(parseReference(xpp));
12764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12765        res.setActiveElement(parseBoolean(xpp));
12766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
12767        res.getLink().add(parsePersonPersonLinkComponent(xpp, res));
12768      } else if (!parseDomainResourceContent(eventType, xpp, res))
12769        return false;
12770    return true;
12771  }
12772
12773  protected Person.PersonLinkComponent parsePersonPersonLinkComponent(XmlPullParser xpp, Person owner) throws XmlPullParserException, IOException, FHIRFormatError {
12774    Person.PersonLinkComponent res = new Person.PersonLinkComponent();
12775    parseBackboneAttributes(xpp, res);
12776    next(xpp);
12777    int eventType = nextNoWhitespace(xpp);
12778    while (eventType != XmlPullParser.END_TAG) {
12779  if (!parsePersonPersonLinkComponentContent(eventType, xpp, owner, res))
12780        unknownContent(xpp);
12781      eventType = nextNoWhitespace(xpp);
12782    }
12783    next(xpp);
12784    parseElementClose(res);
12785    return res;
12786  }
12787
12788  protected boolean parsePersonPersonLinkComponentContent(int eventType, XmlPullParser xpp, Person owner, Person.PersonLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12789      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12790        res.setTarget(parseReference(xpp));
12791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assurance")) {
12792        res.setAssuranceElement(parseEnumeration(xpp, Person.IdentityAssuranceLevel.NULL, new Person.IdentityAssuranceLevelEnumFactory()));
12793      } else if (!parseBackboneContent(eventType, xpp, res))
12794        return false;
12795    return true;
12796  }
12797
12798  protected PlanDefinition parsePlanDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12799    PlanDefinition res = new PlanDefinition();
12800    parseDomainResourceAttributes(xpp, res);
12801    next(xpp);
12802    int eventType = nextNoWhitespace(xpp);
12803    while (eventType != XmlPullParser.END_TAG) {
12804  if (!parsePlanDefinitionContent(eventType, xpp, res))
12805        unknownContent(xpp);
12806      eventType = nextNoWhitespace(xpp);
12807    }
12808    next(xpp);
12809    parseElementClose(res);
12810    return res;
12811  }
12812
12813  protected boolean parsePlanDefinitionContent(int eventType, XmlPullParser xpp, PlanDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
12814      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12815        res.setUrlElement(parseUri(xpp));
12816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12817        res.getIdentifier().add(parseIdentifier(xpp));
12818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12819        res.setVersionElement(parseString(xpp));
12820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12821        res.setNameElement(parseString(xpp));
12822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12823        res.setTitleElement(parseString(xpp));
12824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12825        res.setType(parseCodeableConcept(xpp));
12826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12827        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12829        res.setExperimentalElement(parseBoolean(xpp));
12830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12831        res.setDateElement(parseDateTime(xpp));
12832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12833        res.setPublisherElement(parseString(xpp));
12834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12835        res.setDescriptionElement(parseMarkdown(xpp));
12836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12837        res.setPurposeElement(parseMarkdown(xpp));
12838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
12839        res.setUsageElement(parseString(xpp));
12840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
12841        res.setApprovalDateElement(parseDate(xpp));
12842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
12843        res.setLastReviewDateElement(parseDate(xpp));
12844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
12845        res.setEffectivePeriod(parsePeriod(xpp));
12846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12847        res.getUseContext().add(parseUsageContext(xpp));
12848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
12849        res.getJurisdiction().add(parseCodeableConcept(xpp));
12850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
12851        res.getTopic().add(parseCodeableConcept(xpp));
12852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
12853        res.getContributor().add(parseContributor(xpp));
12854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12855        res.getContact().add(parseContactDetail(xpp));
12856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
12857        res.setCopyrightElement(parseMarkdown(xpp));
12858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
12859        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
12860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
12861        res.getLibrary().add(parseReference(xpp));
12862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
12863        res.getGoal().add(parsePlanDefinitionPlanDefinitionGoalComponent(xpp, res));
12864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
12865        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, res));
12866      } else if (!parseDomainResourceContent(eventType, xpp, res))
12867        return false;
12868    return true;
12869  }
12870
12871  protected PlanDefinition.PlanDefinitionGoalComponent parsePlanDefinitionPlanDefinitionGoalComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12872    PlanDefinition.PlanDefinitionGoalComponent res = new PlanDefinition.PlanDefinitionGoalComponent();
12873    parseBackboneAttributes(xpp, res);
12874    next(xpp);
12875    int eventType = nextNoWhitespace(xpp);
12876    while (eventType != XmlPullParser.END_TAG) {
12877  if (!parsePlanDefinitionPlanDefinitionGoalComponentContent(eventType, xpp, owner, res))
12878        unknownContent(xpp);
12879      eventType = nextNoWhitespace(xpp);
12880    }
12881    next(xpp);
12882    parseElementClose(res);
12883    return res;
12884  }
12885
12886  protected boolean parsePlanDefinitionPlanDefinitionGoalComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12887      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12888        res.setCategory(parseCodeableConcept(xpp));
12889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12890        res.setDescription(parseCodeableConcept(xpp));
12891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
12892        res.setPriority(parseCodeableConcept(xpp));
12893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
12894        res.setStart(parseCodeableConcept(xpp));
12895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
12896        res.getAddresses().add(parseCodeableConcept(xpp));
12897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
12898        res.getDocumentation().add(parseRelatedArtifact(xpp));
12899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12900        res.getTarget().add(parsePlanDefinitionPlanDefinitionGoalTargetComponent(xpp, owner));
12901      } else if (!parseBackboneContent(eventType, xpp, res))
12902        return false;
12903    return true;
12904  }
12905
12906  protected PlanDefinition.PlanDefinitionGoalTargetComponent parsePlanDefinitionPlanDefinitionGoalTargetComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12907    PlanDefinition.PlanDefinitionGoalTargetComponent res = new PlanDefinition.PlanDefinitionGoalTargetComponent();
12908    parseBackboneAttributes(xpp, res);
12909    next(xpp);
12910    int eventType = nextNoWhitespace(xpp);
12911    while (eventType != XmlPullParser.END_TAG) {
12912  if (!parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(eventType, xpp, owner, res))
12913        unknownContent(xpp);
12914      eventType = nextNoWhitespace(xpp);
12915    }
12916    next(xpp);
12917    parseElementClose(res);
12918    return res;
12919  }
12920
12921  protected boolean parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12922      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
12923        res.setMeasure(parseCodeableConcept(xpp));
12924      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
12925        res.setDetail(parseType("detail", xpp));
12926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("due")) {
12927        res.setDue(parseDuration(xpp));
12928      } else if (!parseBackboneContent(eventType, xpp, res))
12929        return false;
12930    return true;
12931  }
12932
12933  protected PlanDefinition.PlanDefinitionActionComponent parsePlanDefinitionPlanDefinitionActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
12934    PlanDefinition.PlanDefinitionActionComponent res = new PlanDefinition.PlanDefinitionActionComponent();
12935    parseBackboneAttributes(xpp, res);
12936    next(xpp);
12937    int eventType = nextNoWhitespace(xpp);
12938    while (eventType != XmlPullParser.END_TAG) {
12939  if (!parsePlanDefinitionPlanDefinitionActionComponentContent(eventType, xpp, owner, res))
12940        unknownContent(xpp);
12941      eventType = nextNoWhitespace(xpp);
12942    }
12943    next(xpp);
12944    parseElementClose(res);
12945    return res;
12946  }
12947
12948  protected boolean parsePlanDefinitionPlanDefinitionActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12949      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
12950        res.setLabelElement(parseString(xpp));
12951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12952        res.setTitleElement(parseString(xpp));
12953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12954        res.setDescriptionElement(parseString(xpp));
12955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
12956        res.setTextEquivalentElement(parseString(xpp));
12957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12958        res.getCode().add(parseCodeableConcept(xpp));
12959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
12960        res.getReason().add(parseCodeableConcept(xpp));
12961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
12962        res.getDocumentation().add(parseRelatedArtifact(xpp));
12963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goalId")) {
12964        res.getGoalId().add(parseId(xpp));
12965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("triggerDefinition")) {
12966        res.getTriggerDefinition().add(parseTriggerDefinition(xpp));
12967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
12968        res.getCondition().add(parsePlanDefinitionPlanDefinitionActionConditionComponent(xpp, owner));
12969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
12970        res.getInput().add(parseDataRequirement(xpp));
12971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
12972        res.getOutput().add(parseDataRequirement(xpp));
12973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
12974        res.getRelatedAction().add(parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(xpp, owner));
12975      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
12976        res.setTiming(parseType("timing", xpp));
12977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
12978        res.getParticipant().add(parsePlanDefinitionPlanDefinitionActionParticipantComponent(xpp, owner));
12979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12980        res.setType(parseCoding(xpp));
12981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
12982        res.setGroupingBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionGroupingBehavior.NULL, new PlanDefinition.ActionGroupingBehaviorEnumFactory()));
12983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
12984        res.setSelectionBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionSelectionBehavior.NULL, new PlanDefinition.ActionSelectionBehaviorEnumFactory()));
12985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
12986        res.setRequiredBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionRequiredBehavior.NULL, new PlanDefinition.ActionRequiredBehaviorEnumFactory()));
12987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
12988        res.setPrecheckBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionPrecheckBehavior.NULL, new PlanDefinition.ActionPrecheckBehaviorEnumFactory()));
12989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
12990        res.setCardinalityBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionCardinalityBehavior.NULL, new PlanDefinition.ActionCardinalityBehaviorEnumFactory()));
12991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
12992        res.setDefinition(parseReference(xpp));
12993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
12994        res.setTransform(parseReference(xpp));
12995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
12996        res.getDynamicValue().add(parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(xpp, owner));
12997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
12998        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, owner));
12999      } else if (!parseBackboneContent(eventType, xpp, res))
13000        return false;
13001    return true;
13002  }
13003
13004  protected PlanDefinition.PlanDefinitionActionConditionComponent parsePlanDefinitionPlanDefinitionActionConditionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
13005    PlanDefinition.PlanDefinitionActionConditionComponent res = new PlanDefinition.PlanDefinitionActionConditionComponent();
13006    parseBackboneAttributes(xpp, res);
13007    next(xpp);
13008    int eventType = nextNoWhitespace(xpp);
13009    while (eventType != XmlPullParser.END_TAG) {
13010  if (!parsePlanDefinitionPlanDefinitionActionConditionComponentContent(eventType, xpp, owner, res))
13011        unknownContent(xpp);
13012      eventType = nextNoWhitespace(xpp);
13013    }
13014    next(xpp);
13015    parseElementClose(res);
13016    return res;
13017  }
13018
13019  protected boolean parsePlanDefinitionPlanDefinitionActionConditionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13020      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
13021        res.setKindElement(parseEnumeration(xpp, PlanDefinition.ActionConditionKind.NULL, new PlanDefinition.ActionConditionKindEnumFactory()));
13022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13023        res.setDescriptionElement(parseString(xpp));
13024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
13025        res.setLanguageElement(parseString(xpp));
13026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
13027        res.setExpressionElement(parseString(xpp));
13028      } else if (!parseBackboneContent(eventType, xpp, res))
13029        return false;
13030    return true;
13031  }
13032
13033  protected PlanDefinition.PlanDefinitionActionRelatedActionComponent parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
13034    PlanDefinition.PlanDefinitionActionRelatedActionComponent res = new PlanDefinition.PlanDefinitionActionRelatedActionComponent();
13035    parseBackboneAttributes(xpp, res);
13036    next(xpp);
13037    int eventType = nextNoWhitespace(xpp);
13038    while (eventType != XmlPullParser.END_TAG) {
13039  if (!parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(eventType, xpp, owner, res))
13040        unknownContent(xpp);
13041      eventType = nextNoWhitespace(xpp);
13042    }
13043    next(xpp);
13044    parseElementClose(res);
13045    return res;
13046  }
13047
13048  protected boolean parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13049      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
13050        res.setActionIdElement(parseId(xpp));
13051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
13052        res.setRelationshipElement(parseEnumeration(xpp, PlanDefinition.ActionRelationshipType.NULL, new PlanDefinition.ActionRelationshipTypeEnumFactory()));
13053      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
13054        res.setOffset(parseType("offset", xpp));
13055      } else if (!parseBackboneContent(eventType, xpp, res))
13056        return false;
13057    return true;
13058  }
13059
13060  protected PlanDefinition.PlanDefinitionActionParticipantComponent parsePlanDefinitionPlanDefinitionActionParticipantComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
13061    PlanDefinition.PlanDefinitionActionParticipantComponent res = new PlanDefinition.PlanDefinitionActionParticipantComponent();
13062    parseBackboneAttributes(xpp, res);
13063    next(xpp);
13064    int eventType = nextNoWhitespace(xpp);
13065    while (eventType != XmlPullParser.END_TAG) {
13066  if (!parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(eventType, xpp, owner, res))
13067        unknownContent(xpp);
13068      eventType = nextNoWhitespace(xpp);
13069    }
13070    next(xpp);
13071    parseElementClose(res);
13072    return res;
13073  }
13074
13075  protected boolean parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13076      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13077        res.setTypeElement(parseEnumeration(xpp, PlanDefinition.ActionParticipantType.NULL, new PlanDefinition.ActionParticipantTypeEnumFactory()));
13078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13079        res.setRole(parseCodeableConcept(xpp));
13080      } else if (!parseBackboneContent(eventType, xpp, res))
13081        return false;
13082    return true;
13083  }
13084
13085  protected PlanDefinition.PlanDefinitionActionDynamicValueComponent parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
13086    PlanDefinition.PlanDefinitionActionDynamicValueComponent res = new PlanDefinition.PlanDefinitionActionDynamicValueComponent();
13087    parseBackboneAttributes(xpp, res);
13088    next(xpp);
13089    int eventType = nextNoWhitespace(xpp);
13090    while (eventType != XmlPullParser.END_TAG) {
13091  if (!parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(eventType, xpp, owner, res))
13092        unknownContent(xpp);
13093      eventType = nextNoWhitespace(xpp);
13094    }
13095    next(xpp);
13096    parseElementClose(res);
13097    return res;
13098  }
13099
13100  protected boolean parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13101      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13102        res.setDescriptionElement(parseString(xpp));
13103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
13104        res.setPathElement(parseString(xpp));
13105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
13106        res.setLanguageElement(parseString(xpp));
13107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
13108        res.setExpressionElement(parseString(xpp));
13109      } else if (!parseBackboneContent(eventType, xpp, res))
13110        return false;
13111    return true;
13112  }
13113
13114  protected Practitioner parsePractitioner(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13115    Practitioner res = new Practitioner();
13116    parseDomainResourceAttributes(xpp, res);
13117    next(xpp);
13118    int eventType = nextNoWhitespace(xpp);
13119    while (eventType != XmlPullParser.END_TAG) {
13120  if (!parsePractitionerContent(eventType, xpp, res))
13121        unknownContent(xpp);
13122      eventType = nextNoWhitespace(xpp);
13123    }
13124    next(xpp);
13125    parseElementClose(res);
13126    return res;
13127  }
13128
13129  protected boolean parsePractitionerContent(int eventType, XmlPullParser xpp, Practitioner res) throws XmlPullParserException, IOException, FHIRFormatError {
13130      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13131        res.getIdentifier().add(parseIdentifier(xpp));
13132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
13133        res.setActiveElement(parseBoolean(xpp));
13134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13135        res.getName().add(parseHumanName(xpp));
13136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
13137        res.getTelecom().add(parseContactPoint(xpp));
13138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
13139        res.getAddress().add(parseAddress(xpp));
13140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
13141        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
13142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
13143        res.setBirthDateElement(parseDate(xpp));
13144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
13145        res.getPhoto().add(parseAttachment(xpp));
13146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
13147        res.getQualification().add(parsePractitionerPractitionerQualificationComponent(xpp, res));
13148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
13149        res.getCommunication().add(parseCodeableConcept(xpp));
13150      } else if (!parseDomainResourceContent(eventType, xpp, res))
13151        return false;
13152    return true;
13153  }
13154
13155  protected Practitioner.PractitionerQualificationComponent parsePractitionerPractitionerQualificationComponent(XmlPullParser xpp, Practitioner owner) throws XmlPullParserException, IOException, FHIRFormatError {
13156    Practitioner.PractitionerQualificationComponent res = new Practitioner.PractitionerQualificationComponent();
13157    parseBackboneAttributes(xpp, res);
13158    next(xpp);
13159    int eventType = nextNoWhitespace(xpp);
13160    while (eventType != XmlPullParser.END_TAG) {
13161  if (!parsePractitionerPractitionerQualificationComponentContent(eventType, xpp, owner, res))
13162        unknownContent(xpp);
13163      eventType = nextNoWhitespace(xpp);
13164    }
13165    next(xpp);
13166    parseElementClose(res);
13167    return res;
13168  }
13169
13170  protected boolean parsePractitionerPractitionerQualificationComponentContent(int eventType, XmlPullParser xpp, Practitioner owner, Practitioner.PractitionerQualificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13171      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13172        res.getIdentifier().add(parseIdentifier(xpp));
13173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13174        res.setCode(parseCodeableConcept(xpp));
13175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13176        res.setPeriod(parsePeriod(xpp));
13177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
13178        res.setIssuer(parseReference(xpp));
13179      } else if (!parseBackboneContent(eventType, xpp, res))
13180        return false;
13181    return true;
13182  }
13183
13184  protected PractitionerRole parsePractitionerRole(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13185    PractitionerRole res = new PractitionerRole();
13186    parseDomainResourceAttributes(xpp, res);
13187    next(xpp);
13188    int eventType = nextNoWhitespace(xpp);
13189    while (eventType != XmlPullParser.END_TAG) {
13190  if (!parsePractitionerRoleContent(eventType, xpp, res))
13191        unknownContent(xpp);
13192      eventType = nextNoWhitespace(xpp);
13193    }
13194    next(xpp);
13195    parseElementClose(res);
13196    return res;
13197  }
13198
13199  protected boolean parsePractitionerRoleContent(int eventType, XmlPullParser xpp, PractitionerRole res) throws XmlPullParserException, IOException, FHIRFormatError {
13200      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13201        res.getIdentifier().add(parseIdentifier(xpp));
13202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
13203        res.setActiveElement(parseBoolean(xpp));
13204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13205        res.setPeriod(parsePeriod(xpp));
13206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
13207        res.setPractitioner(parseReference(xpp));
13208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
13209        res.setOrganization(parseReference(xpp));
13210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13211        res.getCode().add(parseCodeableConcept(xpp));
13212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
13213        res.getSpecialty().add(parseCodeableConcept(xpp));
13214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13215        res.getLocation().add(parseReference(xpp));
13216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
13217        res.getHealthcareService().add(parseReference(xpp));
13218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
13219        res.getTelecom().add(parseContactPoint(xpp));
13220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
13221        res.getAvailableTime().add(parsePractitionerRolePractitionerRoleAvailableTimeComponent(xpp, res));
13222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
13223        res.getNotAvailable().add(parsePractitionerRolePractitionerRoleNotAvailableComponent(xpp, res));
13224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
13225        res.setAvailabilityExceptionsElement(parseString(xpp));
13226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
13227        res.getEndpoint().add(parseReference(xpp));
13228      } else if (!parseDomainResourceContent(eventType, xpp, res))
13229        return false;
13230    return true;
13231  }
13232
13233  protected PractitionerRole.PractitionerRoleAvailableTimeComponent parsePractitionerRolePractitionerRoleAvailableTimeComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
13234    PractitionerRole.PractitionerRoleAvailableTimeComponent res = new PractitionerRole.PractitionerRoleAvailableTimeComponent();
13235    parseBackboneAttributes(xpp, res);
13236    next(xpp);
13237    int eventType = nextNoWhitespace(xpp);
13238    while (eventType != XmlPullParser.END_TAG) {
13239  if (!parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(eventType, xpp, owner, res))
13240        unknownContent(xpp);
13241      eventType = nextNoWhitespace(xpp);
13242    }
13243    next(xpp);
13244    parseElementClose(res);
13245    return res;
13246  }
13247
13248  protected boolean parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13249      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
13250        res.getDaysOfWeek().add(parseEnumeration(xpp, PractitionerRole.DaysOfWeek.NULL, new PractitionerRole.DaysOfWeekEnumFactory()));
13251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
13252        res.setAllDayElement(parseBoolean(xpp));
13253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
13254        res.setAvailableStartTimeElement(parseTime(xpp));
13255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
13256        res.setAvailableEndTimeElement(parseTime(xpp));
13257      } else if (!parseBackboneContent(eventType, xpp, res))
13258        return false;
13259    return true;
13260  }
13261
13262  protected PractitionerRole.PractitionerRoleNotAvailableComponent parsePractitionerRolePractitionerRoleNotAvailableComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
13263    PractitionerRole.PractitionerRoleNotAvailableComponent res = new PractitionerRole.PractitionerRoleNotAvailableComponent();
13264    parseBackboneAttributes(xpp, res);
13265    next(xpp);
13266    int eventType = nextNoWhitespace(xpp);
13267    while (eventType != XmlPullParser.END_TAG) {
13268  if (!parsePractitionerRolePractitionerRoleNotAvailableComponentContent(eventType, xpp, owner, res))
13269        unknownContent(xpp);
13270      eventType = nextNoWhitespace(xpp);
13271    }
13272    next(xpp);
13273    parseElementClose(res);
13274    return res;
13275  }
13276
13277  protected boolean parsePractitionerRolePractitionerRoleNotAvailableComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13278      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13279        res.setDescriptionElement(parseString(xpp));
13280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
13281        res.setDuring(parsePeriod(xpp));
13282      } else if (!parseBackboneContent(eventType, xpp, res))
13283        return false;
13284    return true;
13285  }
13286
13287  protected Procedure parseProcedure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13288    Procedure res = new Procedure();
13289    parseDomainResourceAttributes(xpp, res);
13290    next(xpp);
13291    int eventType = nextNoWhitespace(xpp);
13292    while (eventType != XmlPullParser.END_TAG) {
13293  if (!parseProcedureContent(eventType, xpp, res))
13294        unknownContent(xpp);
13295      eventType = nextNoWhitespace(xpp);
13296    }
13297    next(xpp);
13298    parseElementClose(res);
13299    return res;
13300  }
13301
13302  protected boolean parseProcedureContent(int eventType, XmlPullParser xpp, Procedure res) throws XmlPullParserException, IOException, FHIRFormatError {
13303      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13304        res.getIdentifier().add(parseIdentifier(xpp));
13305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13306        res.getDefinition().add(parseReference(xpp));
13307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13308        res.getBasedOn().add(parseReference(xpp));
13309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13310        res.getPartOf().add(parseReference(xpp));
13311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13312        res.setStatusElement(parseEnumeration(xpp, Procedure.ProcedureStatus.NULL, new Procedure.ProcedureStatusEnumFactory()));
13313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDone")) {
13314        res.setNotDoneElement(parseBoolean(xpp));
13315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notDoneReason")) {
13316        res.setNotDoneReason(parseCodeableConcept(xpp));
13317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13318        res.setCategory(parseCodeableConcept(xpp));
13319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13320        res.setCode(parseCodeableConcept(xpp));
13321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13322        res.setSubject(parseReference(xpp));
13323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13324        res.setContext(parseReference(xpp));
13325      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "performed")) {
13326        res.setPerformed(parseType("performed", xpp));
13327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13328        res.getPerformer().add(parseProcedureProcedurePerformerComponent(xpp, res));
13329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13330        res.setLocation(parseReference(xpp));
13331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13332        res.getReasonCode().add(parseCodeableConcept(xpp));
13333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
13334        res.getReasonReference().add(parseReference(xpp));
13335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
13336        res.getBodySite().add(parseCodeableConcept(xpp));
13337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
13338        res.setOutcome(parseCodeableConcept(xpp));
13339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("report")) {
13340        res.getReport().add(parseReference(xpp));
13341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complication")) {
13342        res.getComplication().add(parseCodeableConcept(xpp));
13343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complicationDetail")) {
13344        res.getComplicationDetail().add(parseReference(xpp));
13345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("followUp")) {
13346        res.getFollowUp().add(parseCodeableConcept(xpp));
13347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13348        res.getNote().add(parseAnnotation(xpp));
13349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focalDevice")) {
13350        res.getFocalDevice().add(parseProcedureProcedureFocalDeviceComponent(xpp, res));
13351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedReference")) {
13352        res.getUsedReference().add(parseReference(xpp));
13353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedCode")) {
13354        res.getUsedCode().add(parseCodeableConcept(xpp));
13355      } else if (!parseDomainResourceContent(eventType, xpp, res))
13356        return false;
13357    return true;
13358  }
13359
13360  protected Procedure.ProcedurePerformerComponent parseProcedureProcedurePerformerComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13361    Procedure.ProcedurePerformerComponent res = new Procedure.ProcedurePerformerComponent();
13362    parseBackboneAttributes(xpp, res);
13363    next(xpp);
13364    int eventType = nextNoWhitespace(xpp);
13365    while (eventType != XmlPullParser.END_TAG) {
13366  if (!parseProcedureProcedurePerformerComponentContent(eventType, xpp, owner, res))
13367        unknownContent(xpp);
13368      eventType = nextNoWhitespace(xpp);
13369    }
13370    next(xpp);
13371    parseElementClose(res);
13372    return res;
13373  }
13374
13375  protected boolean parseProcedureProcedurePerformerComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedurePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13376      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13377        res.setRole(parseCodeableConcept(xpp));
13378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
13379        res.setActor(parseReference(xpp));
13380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
13381        res.setOnBehalfOf(parseReference(xpp));
13382      } else if (!parseBackboneContent(eventType, xpp, res))
13383        return false;
13384    return true;
13385  }
13386
13387  protected Procedure.ProcedureFocalDeviceComponent parseProcedureProcedureFocalDeviceComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13388    Procedure.ProcedureFocalDeviceComponent res = new Procedure.ProcedureFocalDeviceComponent();
13389    parseBackboneAttributes(xpp, res);
13390    next(xpp);
13391    int eventType = nextNoWhitespace(xpp);
13392    while (eventType != XmlPullParser.END_TAG) {
13393  if (!parseProcedureProcedureFocalDeviceComponentContent(eventType, xpp, owner, res))
13394        unknownContent(xpp);
13395      eventType = nextNoWhitespace(xpp);
13396    }
13397    next(xpp);
13398    parseElementClose(res);
13399    return res;
13400  }
13401
13402  protected boolean parseProcedureProcedureFocalDeviceComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedureFocalDeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13403      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
13404        res.setAction(parseCodeableConcept(xpp));
13405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulated")) {
13406        res.setManipulated(parseReference(xpp));
13407      } else if (!parseBackboneContent(eventType, xpp, res))
13408        return false;
13409    return true;
13410  }
13411
13412  protected ProcedureRequest parseProcedureRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13413    ProcedureRequest res = new ProcedureRequest();
13414    parseDomainResourceAttributes(xpp, res);
13415    next(xpp);
13416    int eventType = nextNoWhitespace(xpp);
13417    while (eventType != XmlPullParser.END_TAG) {
13418  if (!parseProcedureRequestContent(eventType, xpp, res))
13419        unknownContent(xpp);
13420      eventType = nextNoWhitespace(xpp);
13421    }
13422    next(xpp);
13423    parseElementClose(res);
13424    return res;
13425  }
13426
13427  protected boolean parseProcedureRequestContent(int eventType, XmlPullParser xpp, ProcedureRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
13428      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13429        res.getIdentifier().add(parseIdentifier(xpp));
13430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13431        res.getDefinition().add(parseReference(xpp));
13432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13433        res.getBasedOn().add(parseReference(xpp));
13434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
13435        res.getReplaces().add(parseReference(xpp));
13436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requisition")) {
13437        res.setRequisition(parseIdentifier(xpp));
13438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13439        res.setStatusElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestStatus.NULL, new ProcedureRequest.ProcedureRequestStatusEnumFactory()));
13440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
13441        res.setIntentElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestIntent.NULL, new ProcedureRequest.ProcedureRequestIntentEnumFactory()));
13442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
13443        res.setPriorityElement(parseEnumeration(xpp, ProcedureRequest.ProcedureRequestPriority.NULL, new ProcedureRequest.ProcedureRequestPriorityEnumFactory()));
13444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
13445        res.setDoNotPerformElement(parseBoolean(xpp));
13446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13447        res.getCategory().add(parseCodeableConcept(xpp));
13448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13449        res.setCode(parseCodeableConcept(xpp));
13450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13451        res.setSubject(parseReference(xpp));
13452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13453        res.setContext(parseReference(xpp));
13454      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
13455        res.setOccurrence(parseType("occurrence", xpp));
13456      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
13457        res.setAsNeeded(parseType("asNeeded", xpp));
13458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
13459        res.setAuthoredOnElement(parseDateTime(xpp));
13460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
13461        res.setRequester(parseProcedureRequestProcedureRequestRequesterComponent(xpp, res));
13462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
13463        res.setPerformerType(parseCodeableConcept(xpp));
13464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13465        res.setPerformer(parseReference(xpp));
13466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13467        res.getReasonCode().add(parseCodeableConcept(xpp));
13468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
13469        res.getReasonReference().add(parseReference(xpp));
13470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
13471        res.getSupportingInfo().add(parseReference(xpp));
13472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
13473        res.getSpecimen().add(parseReference(xpp));
13474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
13475        res.getBodySite().add(parseCodeableConcept(xpp));
13476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13477        res.getNote().add(parseAnnotation(xpp));
13478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
13479        res.getRelevantHistory().add(parseReference(xpp));
13480      } else if (!parseDomainResourceContent(eventType, xpp, res))
13481        return false;
13482    return true;
13483  }
13484
13485  protected ProcedureRequest.ProcedureRequestRequesterComponent parseProcedureRequestProcedureRequestRequesterComponent(XmlPullParser xpp, ProcedureRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
13486    ProcedureRequest.ProcedureRequestRequesterComponent res = new ProcedureRequest.ProcedureRequestRequesterComponent();
13487    parseBackboneAttributes(xpp, res);
13488    next(xpp);
13489    int eventType = nextNoWhitespace(xpp);
13490    while (eventType != XmlPullParser.END_TAG) {
13491  if (!parseProcedureRequestProcedureRequestRequesterComponentContent(eventType, xpp, owner, res))
13492        unknownContent(xpp);
13493      eventType = nextNoWhitespace(xpp);
13494    }
13495    next(xpp);
13496    parseElementClose(res);
13497    return res;
13498  }
13499
13500  protected boolean parseProcedureRequestProcedureRequestRequesterComponentContent(int eventType, XmlPullParser xpp, ProcedureRequest owner, ProcedureRequest.ProcedureRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13501      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
13502        res.setAgent(parseReference(xpp));
13503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
13504        res.setOnBehalfOf(parseReference(xpp));
13505      } else if (!parseBackboneContent(eventType, xpp, res))
13506        return false;
13507    return true;
13508  }
13509
13510  protected ProcessRequest parseProcessRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13511    ProcessRequest res = new ProcessRequest();
13512    parseDomainResourceAttributes(xpp, res);
13513    next(xpp);
13514    int eventType = nextNoWhitespace(xpp);
13515    while (eventType != XmlPullParser.END_TAG) {
13516  if (!parseProcessRequestContent(eventType, xpp, res))
13517        unknownContent(xpp);
13518      eventType = nextNoWhitespace(xpp);
13519    }
13520    next(xpp);
13521    parseElementClose(res);
13522    return res;
13523  }
13524
13525  protected boolean parseProcessRequestContent(int eventType, XmlPullParser xpp, ProcessRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
13526      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13527        res.getIdentifier().add(parseIdentifier(xpp));
13528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13529        res.setStatusElement(parseEnumeration(xpp, ProcessRequest.ProcessRequestStatus.NULL, new ProcessRequest.ProcessRequestStatusEnumFactory()));
13530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
13531        res.setActionElement(parseEnumeration(xpp, ProcessRequest.ActionList.NULL, new ProcessRequest.ActionListEnumFactory()));
13532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
13533        res.setTarget(parseReference(xpp));
13534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
13535        res.setCreatedElement(parseDateTime(xpp));
13536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
13537        res.setProvider(parseReference(xpp));
13538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
13539        res.setOrganization(parseReference(xpp));
13540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
13541        res.setRequest(parseReference(xpp));
13542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
13543        res.setResponse(parseReference(xpp));
13544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nullify")) {
13545        res.setNullifyElement(parseBoolean(xpp));
13546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
13547        res.setReferenceElement(parseString(xpp));
13548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13549        res.getItem().add(parseProcessRequestItemsComponent(xpp, res));
13550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
13551        res.getInclude().add(parseString(xpp));
13552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
13553        res.getExclude().add(parseString(xpp));
13554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13555        res.setPeriod(parsePeriod(xpp));
13556      } else if (!parseDomainResourceContent(eventType, xpp, res))
13557        return false;
13558    return true;
13559  }
13560
13561  protected ProcessRequest.ItemsComponent parseProcessRequestItemsComponent(XmlPullParser xpp, ProcessRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
13562    ProcessRequest.ItemsComponent res = new ProcessRequest.ItemsComponent();
13563    parseBackboneAttributes(xpp, res);
13564    next(xpp);
13565    int eventType = nextNoWhitespace(xpp);
13566    while (eventType != XmlPullParser.END_TAG) {
13567  if (!parseProcessRequestItemsComponentContent(eventType, xpp, owner, res))
13568        unknownContent(xpp);
13569      eventType = nextNoWhitespace(xpp);
13570    }
13571    next(xpp);
13572    parseElementClose(res);
13573    return res;
13574  }
13575
13576  protected boolean parseProcessRequestItemsComponentContent(int eventType, XmlPullParser xpp, ProcessRequest owner, ProcessRequest.ItemsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13577      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceLinkId")) {
13578        res.setSequenceLinkIdElement(parseInteger(xpp));
13579      } else if (!parseBackboneContent(eventType, xpp, res))
13580        return false;
13581    return true;
13582  }
13583
13584  protected ProcessResponse parseProcessResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13585    ProcessResponse res = new ProcessResponse();
13586    parseDomainResourceAttributes(xpp, res);
13587    next(xpp);
13588    int eventType = nextNoWhitespace(xpp);
13589    while (eventType != XmlPullParser.END_TAG) {
13590  if (!parseProcessResponseContent(eventType, xpp, res))
13591        unknownContent(xpp);
13592      eventType = nextNoWhitespace(xpp);
13593    }
13594    next(xpp);
13595    parseElementClose(res);
13596    return res;
13597  }
13598
13599  protected boolean parseProcessResponseContent(int eventType, XmlPullParser xpp, ProcessResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
13600      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13601        res.getIdentifier().add(parseIdentifier(xpp));
13602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13603        res.setStatusElement(parseEnumeration(xpp, ProcessResponse.ProcessResponseStatus.NULL, new ProcessResponse.ProcessResponseStatusEnumFactory()));
13604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
13605        res.setCreatedElement(parseDateTime(xpp));
13606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
13607        res.setOrganization(parseReference(xpp));
13608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
13609        res.setRequest(parseReference(xpp));
13610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
13611        res.setOutcome(parseCodeableConcept(xpp));
13612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
13613        res.setDispositionElement(parseString(xpp));
13614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
13615        res.setRequestProvider(parseReference(xpp));
13616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestOrganization")) {
13617        res.setRequestOrganization(parseReference(xpp));
13618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
13619        res.setForm(parseCodeableConcept(xpp));
13620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
13621        res.getProcessNote().add(parseProcessResponseProcessResponseProcessNoteComponent(xpp, res));
13622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
13623        res.getError().add(parseCodeableConcept(xpp));
13624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
13625        res.getCommunicationRequest().add(parseReference(xpp));
13626      } else if (!parseDomainResourceContent(eventType, xpp, res))
13627        return false;
13628    return true;
13629  }
13630
13631  protected ProcessResponse.ProcessResponseProcessNoteComponent parseProcessResponseProcessResponseProcessNoteComponent(XmlPullParser xpp, ProcessResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
13632    ProcessResponse.ProcessResponseProcessNoteComponent res = new ProcessResponse.ProcessResponseProcessNoteComponent();
13633    parseBackboneAttributes(xpp, res);
13634    next(xpp);
13635    int eventType = nextNoWhitespace(xpp);
13636    while (eventType != XmlPullParser.END_TAG) {
13637  if (!parseProcessResponseProcessResponseProcessNoteComponentContent(eventType, xpp, owner, res))
13638        unknownContent(xpp);
13639      eventType = nextNoWhitespace(xpp);
13640    }
13641    next(xpp);
13642    parseElementClose(res);
13643    return res;
13644  }
13645
13646  protected boolean parseProcessResponseProcessResponseProcessNoteComponentContent(int eventType, XmlPullParser xpp, ProcessResponse owner, ProcessResponse.ProcessResponseProcessNoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13647      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13648        res.setType(parseCodeableConcept(xpp));
13649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
13650        res.setTextElement(parseString(xpp));
13651      } else if (!parseBackboneContent(eventType, xpp, res))
13652        return false;
13653    return true;
13654  }
13655
13656  protected Provenance parseProvenance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13657    Provenance res = new Provenance();
13658    parseDomainResourceAttributes(xpp, res);
13659    next(xpp);
13660    int eventType = nextNoWhitespace(xpp);
13661    while (eventType != XmlPullParser.END_TAG) {
13662  if (!parseProvenanceContent(eventType, xpp, res))
13663        unknownContent(xpp);
13664      eventType = nextNoWhitespace(xpp);
13665    }
13666    next(xpp);
13667    parseElementClose(res);
13668    return res;
13669  }
13670
13671  protected boolean parseProvenanceContent(int eventType, XmlPullParser xpp, Provenance res) throws XmlPullParserException, IOException, FHIRFormatError {
13672      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
13673        res.getTarget().add(parseReference(xpp));
13674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13675        res.setPeriod(parsePeriod(xpp));
13676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
13677        res.setRecordedElement(parseInstant(xpp));
13678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
13679        res.getPolicy().add(parseUri(xpp));
13680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13681        res.setLocation(parseReference(xpp));
13682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
13683        res.getReason().add(parseCoding(xpp));
13684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
13685        res.setActivity(parseCoding(xpp));
13686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
13687        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, res));
13688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
13689        res.getEntity().add(parseProvenanceProvenanceEntityComponent(xpp, res));
13690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
13691        res.getSignature().add(parseSignature(xpp));
13692      } else if (!parseDomainResourceContent(eventType, xpp, res))
13693        return false;
13694    return true;
13695  }
13696
13697  protected Provenance.ProvenanceAgentComponent parseProvenanceProvenanceAgentComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
13698    Provenance.ProvenanceAgentComponent res = new Provenance.ProvenanceAgentComponent();
13699    parseBackboneAttributes(xpp, res);
13700    next(xpp);
13701    int eventType = nextNoWhitespace(xpp);
13702    while (eventType != XmlPullParser.END_TAG) {
13703  if (!parseProvenanceProvenanceAgentComponentContent(eventType, xpp, owner, res))
13704        unknownContent(xpp);
13705      eventType = nextNoWhitespace(xpp);
13706    }
13707    next(xpp);
13708    parseElementClose(res);
13709    return res;
13710  }
13711
13712  protected boolean parseProvenanceProvenanceAgentComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13713      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13714        res.getRole().add(parseCodeableConcept(xpp));
13715      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "who")) {
13716        res.setWho(parseType("who", xpp));
13717      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onBehalfOf")) {
13718        res.setOnBehalfOf(parseType("onBehalfOf", xpp));
13719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAgentType")) {
13720        res.setRelatedAgentType(parseCodeableConcept(xpp));
13721      } else if (!parseBackboneContent(eventType, xpp, res))
13722        return false;
13723    return true;
13724  }
13725
13726  protected Provenance.ProvenanceEntityComponent parseProvenanceProvenanceEntityComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
13727    Provenance.ProvenanceEntityComponent res = new Provenance.ProvenanceEntityComponent();
13728    parseBackboneAttributes(xpp, res);
13729    next(xpp);
13730    int eventType = nextNoWhitespace(xpp);
13731    while (eventType != XmlPullParser.END_TAG) {
13732  if (!parseProvenanceProvenanceEntityComponentContent(eventType, xpp, owner, res))
13733        unknownContent(xpp);
13734      eventType = nextNoWhitespace(xpp);
13735    }
13736    next(xpp);
13737    parseElementClose(res);
13738    return res;
13739  }
13740
13741  protected boolean parseProvenanceProvenanceEntityComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13742      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13743        res.setRoleElement(parseEnumeration(xpp, Provenance.ProvenanceEntityRole.NULL, new Provenance.ProvenanceEntityRoleEnumFactory()));
13744      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "what")) {
13745        res.setWhat(parseType("what", xpp));
13746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
13747        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, owner));
13748      } else if (!parseBackboneContent(eventType, xpp, res))
13749        return false;
13750    return true;
13751  }
13752
13753  protected Questionnaire parseQuestionnaire(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13754    Questionnaire res = new Questionnaire();
13755    parseDomainResourceAttributes(xpp, res);
13756    next(xpp);
13757    int eventType = nextNoWhitespace(xpp);
13758    while (eventType != XmlPullParser.END_TAG) {
13759  if (!parseQuestionnaireContent(eventType, xpp, res))
13760        unknownContent(xpp);
13761      eventType = nextNoWhitespace(xpp);
13762    }
13763    next(xpp);
13764    parseElementClose(res);
13765    return res;
13766  }
13767
13768  protected boolean parseQuestionnaireContent(int eventType, XmlPullParser xpp, Questionnaire res) throws XmlPullParserException, IOException, FHIRFormatError {
13769      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
13770        res.setUrlElement(parseUri(xpp));
13771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13772        res.getIdentifier().add(parseIdentifier(xpp));
13773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13774        res.setVersionElement(parseString(xpp));
13775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13776        res.setNameElement(parseString(xpp));
13777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13778        res.setTitleElement(parseString(xpp));
13779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13780        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
13781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
13782        res.setExperimentalElement(parseBoolean(xpp));
13783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13784        res.setDateElement(parseDateTime(xpp));
13785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
13786        res.setPublisherElement(parseString(xpp));
13787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13788        res.setDescriptionElement(parseMarkdown(xpp));
13789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
13790        res.setPurposeElement(parseMarkdown(xpp));
13791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
13792        res.setApprovalDateElement(parseDate(xpp));
13793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
13794        res.setLastReviewDateElement(parseDate(xpp));
13795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
13796        res.setEffectivePeriod(parsePeriod(xpp));
13797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
13798        res.getUseContext().add(parseUsageContext(xpp));
13799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
13800        res.getJurisdiction().add(parseCodeableConcept(xpp));
13801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
13802        res.getContact().add(parseContactDetail(xpp));
13803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
13804        res.setCopyrightElement(parseMarkdown(xpp));
13805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13806        res.getCode().add(parseCoding(xpp));
13807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectType")) {
13808        res.getSubjectType().add(parseCode(xpp));
13809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13810        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, res));
13811      } else if (!parseDomainResourceContent(eventType, xpp, res))
13812        return false;
13813    return true;
13814  }
13815
13816  protected Questionnaire.QuestionnaireItemComponent parseQuestionnaireQuestionnaireItemComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
13817    Questionnaire.QuestionnaireItemComponent res = new Questionnaire.QuestionnaireItemComponent();
13818    parseBackboneAttributes(xpp, res);
13819    next(xpp);
13820    int eventType = nextNoWhitespace(xpp);
13821    while (eventType != XmlPullParser.END_TAG) {
13822  if (!parseQuestionnaireQuestionnaireItemComponentContent(eventType, xpp, owner, res))
13823        unknownContent(xpp);
13824      eventType = nextNoWhitespace(xpp);
13825    }
13826    next(xpp);
13827    parseElementClose(res);
13828    return res;
13829  }
13830
13831  protected boolean parseQuestionnaireQuestionnaireItemComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13832      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
13833        res.setLinkIdElement(parseString(xpp));
13834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13835        res.setDefinitionElement(parseUri(xpp));
13836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13837        res.getCode().add(parseCoding(xpp));
13838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
13839        res.setPrefixElement(parseString(xpp));
13840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
13841        res.setTextElement(parseString(xpp));
13842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13843        res.setTypeElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemType.NULL, new Questionnaire.QuestionnaireItemTypeEnumFactory()));
13844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableWhen")) {
13845        res.getEnableWhen().add(parseQuestionnaireQuestionnaireItemEnableWhenComponent(xpp, owner));
13846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
13847        res.setRequiredElement(parseBoolean(xpp));
13848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
13849        res.setRepeatsElement(parseBoolean(xpp));
13850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readOnly")) {
13851        res.setReadOnlyElement(parseBoolean(xpp));
13852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
13853        res.setMaxLengthElement(parseInteger(xpp));
13854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("options")) {
13855        res.setOptions(parseReference(xpp));
13856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("option")) {
13857        res.getOption().add(parseQuestionnaireQuestionnaireItemOptionComponent(xpp, owner));
13858      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "initial")) {
13859        res.setInitial(parseType("initial", xpp));
13860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13861        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, owner));
13862      } else if (!parseBackboneContent(eventType, xpp, res))
13863        return false;
13864    return true;
13865  }
13866
13867  protected Questionnaire.QuestionnaireItemEnableWhenComponent parseQuestionnaireQuestionnaireItemEnableWhenComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
13868    Questionnaire.QuestionnaireItemEnableWhenComponent res = new Questionnaire.QuestionnaireItemEnableWhenComponent();
13869    parseBackboneAttributes(xpp, res);
13870    next(xpp);
13871    int eventType = nextNoWhitespace(xpp);
13872    while (eventType != XmlPullParser.END_TAG) {
13873  if (!parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(eventType, xpp, owner, res))
13874        unknownContent(xpp);
13875      eventType = nextNoWhitespace(xpp);
13876    }
13877    next(xpp);
13878    parseElementClose(res);
13879    return res;
13880  }
13881
13882  protected boolean parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemEnableWhenComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13883      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
13884        res.setQuestionElement(parseString(xpp));
13885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasAnswer")) {
13886        res.setHasAnswerElement(parseBoolean(xpp));
13887      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "answer")) {
13888        res.setAnswer(parseType("answer", xpp));
13889      } else if (!parseBackboneContent(eventType, xpp, res))
13890        return false;
13891    return true;
13892  }
13893
13894  protected Questionnaire.QuestionnaireItemOptionComponent parseQuestionnaireQuestionnaireItemOptionComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
13895    Questionnaire.QuestionnaireItemOptionComponent res = new Questionnaire.QuestionnaireItemOptionComponent();
13896    parseBackboneAttributes(xpp, res);
13897    next(xpp);
13898    int eventType = nextNoWhitespace(xpp);
13899    while (eventType != XmlPullParser.END_TAG) {
13900  if (!parseQuestionnaireQuestionnaireItemOptionComponentContent(eventType, xpp, owner, res))
13901        unknownContent(xpp);
13902      eventType = nextNoWhitespace(xpp);
13903    }
13904    next(xpp);
13905    parseElementClose(res);
13906    return res;
13907  }
13908
13909  protected boolean parseQuestionnaireQuestionnaireItemOptionComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemOptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13910      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
13911        res.setValue(parseType("value", xpp));
13912      } else if (!parseBackboneContent(eventType, xpp, res))
13913        return false;
13914    return true;
13915  }
13916
13917  protected QuestionnaireResponse parseQuestionnaireResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13918    QuestionnaireResponse res = new QuestionnaireResponse();
13919    parseDomainResourceAttributes(xpp, res);
13920    next(xpp);
13921    int eventType = nextNoWhitespace(xpp);
13922    while (eventType != XmlPullParser.END_TAG) {
13923  if (!parseQuestionnaireResponseContent(eventType, xpp, res))
13924        unknownContent(xpp);
13925      eventType = nextNoWhitespace(xpp);
13926    }
13927    next(xpp);
13928    parseElementClose(res);
13929    return res;
13930  }
13931
13932  protected boolean parseQuestionnaireResponseContent(int eventType, XmlPullParser xpp, QuestionnaireResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
13933      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13934        res.setIdentifier(parseIdentifier(xpp));
13935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13936        res.getBasedOn().add(parseReference(xpp));
13937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
13938        res.getParent().add(parseReference(xpp));
13939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("questionnaire")) {
13940        res.setQuestionnaire(parseReference(xpp));
13941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13942        res.setStatusElement(parseEnumeration(xpp, QuestionnaireResponse.QuestionnaireResponseStatus.NULL, new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory()));
13943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13944        res.setSubject(parseReference(xpp));
13945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13946        res.setContext(parseReference(xpp));
13947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authored")) {
13948        res.setAuthoredElement(parseDateTime(xpp));
13949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
13950        res.setAuthor(parseReference(xpp));
13951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
13952        res.setSource(parseReference(xpp));
13953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13954        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, res));
13955      } else if (!parseDomainResourceContent(eventType, xpp, res))
13956        return false;
13957    return true;
13958  }
13959
13960  protected QuestionnaireResponse.QuestionnaireResponseItemComponent parseQuestionnaireResponseQuestionnaireResponseItemComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
13961    QuestionnaireResponse.QuestionnaireResponseItemComponent res = new QuestionnaireResponse.QuestionnaireResponseItemComponent();
13962    parseBackboneAttributes(xpp, res);
13963    next(xpp);
13964    int eventType = nextNoWhitespace(xpp);
13965    while (eventType != XmlPullParser.END_TAG) {
13966  if (!parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(eventType, xpp, owner, res))
13967        unknownContent(xpp);
13968      eventType = nextNoWhitespace(xpp);
13969    }
13970    next(xpp);
13971    parseElementClose(res);
13972    return res;
13973  }
13974
13975  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13976      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
13977        res.setLinkIdElement(parseString(xpp));
13978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13979        res.setDefinitionElement(parseUri(xpp));
13980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
13981        res.setTextElement(parseString(xpp));
13982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13983        res.setSubject(parseReference(xpp));
13984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
13985        res.getAnswer().add(parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(xpp, owner));
13986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13987        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
13988      } else if (!parseBackboneContent(eventType, xpp, res))
13989        return false;
13990    return true;
13991  }
13992
13993  protected QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
13994    QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res = new QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent();
13995    parseBackboneAttributes(xpp, res);
13996    next(xpp);
13997    int eventType = nextNoWhitespace(xpp);
13998    while (eventType != XmlPullParser.END_TAG) {
13999  if (!parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(eventType, xpp, owner, res))
14000        unknownContent(xpp);
14001      eventType = nextNoWhitespace(xpp);
14002    }
14003    next(xpp);
14004    parseElementClose(res);
14005    return res;
14006  }
14007
14008  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14009      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
14010        res.setValue(parseType("value", xpp));
14011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
14012        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
14013      } else if (!parseBackboneContent(eventType, xpp, res))
14014        return false;
14015    return true;
14016  }
14017
14018  protected ReferralRequest parseReferralRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14019    ReferralRequest res = new ReferralRequest();
14020    parseDomainResourceAttributes(xpp, res);
14021    next(xpp);
14022    int eventType = nextNoWhitespace(xpp);
14023    while (eventType != XmlPullParser.END_TAG) {
14024  if (!parseReferralRequestContent(eventType, xpp, res))
14025        unknownContent(xpp);
14026      eventType = nextNoWhitespace(xpp);
14027    }
14028    next(xpp);
14029    parseElementClose(res);
14030    return res;
14031  }
14032
14033  protected boolean parseReferralRequestContent(int eventType, XmlPullParser xpp, ReferralRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
14034      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14035        res.getIdentifier().add(parseIdentifier(xpp));
14036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
14037        res.getDefinition().add(parseReference(xpp));
14038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14039        res.getBasedOn().add(parseReference(xpp));
14040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
14041        res.getReplaces().add(parseReference(xpp));
14042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
14043        res.setGroupIdentifier(parseIdentifier(xpp));
14044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14045        res.setStatusElement(parseEnumeration(xpp, ReferralRequest.ReferralRequestStatus.NULL, new ReferralRequest.ReferralRequestStatusEnumFactory()));
14046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
14047        res.setIntentElement(parseEnumeration(xpp, ReferralRequest.ReferralCategory.NULL, new ReferralRequest.ReferralCategoryEnumFactory()));
14048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14049        res.setType(parseCodeableConcept(xpp));
14050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
14051        res.setPriorityElement(parseEnumeration(xpp, ReferralRequest.ReferralPriority.NULL, new ReferralRequest.ReferralPriorityEnumFactory()));
14052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceRequested")) {
14053        res.getServiceRequested().add(parseCodeableConcept(xpp));
14054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14055        res.setSubject(parseReference(xpp));
14056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
14057        res.setContext(parseReference(xpp));
14058      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
14059        res.setOccurrence(parseType("occurrence", xpp));
14060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
14061        res.setAuthoredOnElement(parseDateTime(xpp));
14062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
14063        res.setRequester(parseReferralRequestReferralRequestRequesterComponent(xpp, res));
14064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
14065        res.setSpecialty(parseCodeableConcept(xpp));
14066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
14067        res.getRecipient().add(parseReference(xpp));
14068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
14069        res.getReasonCode().add(parseCodeableConcept(xpp));
14070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
14071        res.getReasonReference().add(parseReference(xpp));
14072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14073        res.setDescriptionElement(parseString(xpp));
14074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
14075        res.getSupportingInfo().add(parseReference(xpp));
14076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14077        res.getNote().add(parseAnnotation(xpp));
14078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
14079        res.getRelevantHistory().add(parseReference(xpp));
14080      } else if (!parseDomainResourceContent(eventType, xpp, res))
14081        return false;
14082    return true;
14083  }
14084
14085  protected ReferralRequest.ReferralRequestRequesterComponent parseReferralRequestReferralRequestRequesterComponent(XmlPullParser xpp, ReferralRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
14086    ReferralRequest.ReferralRequestRequesterComponent res = new ReferralRequest.ReferralRequestRequesterComponent();
14087    parseBackboneAttributes(xpp, res);
14088    next(xpp);
14089    int eventType = nextNoWhitespace(xpp);
14090    while (eventType != XmlPullParser.END_TAG) {
14091  if (!parseReferralRequestReferralRequestRequesterComponentContent(eventType, xpp, owner, res))
14092        unknownContent(xpp);
14093      eventType = nextNoWhitespace(xpp);
14094    }
14095    next(xpp);
14096    parseElementClose(res);
14097    return res;
14098  }
14099
14100  protected boolean parseReferralRequestReferralRequestRequesterComponentContent(int eventType, XmlPullParser xpp, ReferralRequest owner, ReferralRequest.ReferralRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14101      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
14102        res.setAgent(parseReference(xpp));
14103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
14104        res.setOnBehalfOf(parseReference(xpp));
14105      } else if (!parseBackboneContent(eventType, xpp, res))
14106        return false;
14107    return true;
14108  }
14109
14110  protected RelatedPerson parseRelatedPerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14111    RelatedPerson res = new RelatedPerson();
14112    parseDomainResourceAttributes(xpp, res);
14113    next(xpp);
14114    int eventType = nextNoWhitespace(xpp);
14115    while (eventType != XmlPullParser.END_TAG) {
14116  if (!parseRelatedPersonContent(eventType, xpp, res))
14117        unknownContent(xpp);
14118      eventType = nextNoWhitespace(xpp);
14119    }
14120    next(xpp);
14121    parseElementClose(res);
14122    return res;
14123  }
14124
14125  protected boolean parseRelatedPersonContent(int eventType, XmlPullParser xpp, RelatedPerson res) throws XmlPullParserException, IOException, FHIRFormatError {
14126      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14127        res.getIdentifier().add(parseIdentifier(xpp));
14128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
14129        res.setActiveElement(parseBoolean(xpp));
14130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
14131        res.setPatient(parseReference(xpp));
14132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
14133        res.setRelationship(parseCodeableConcept(xpp));
14134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14135        res.getName().add(parseHumanName(xpp));
14136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
14137        res.getTelecom().add(parseContactPoint(xpp));
14138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
14139        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
14140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
14141        res.setBirthDateElement(parseDate(xpp));
14142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
14143        res.getAddress().add(parseAddress(xpp));
14144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
14145        res.getPhoto().add(parseAttachment(xpp));
14146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14147        res.setPeriod(parsePeriod(xpp));
14148      } else if (!parseDomainResourceContent(eventType, xpp, res))
14149        return false;
14150    return true;
14151  }
14152
14153  protected RequestGroup parseRequestGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14154    RequestGroup res = new RequestGroup();
14155    parseDomainResourceAttributes(xpp, res);
14156    next(xpp);
14157    int eventType = nextNoWhitespace(xpp);
14158    while (eventType != XmlPullParser.END_TAG) {
14159  if (!parseRequestGroupContent(eventType, xpp, res))
14160        unknownContent(xpp);
14161      eventType = nextNoWhitespace(xpp);
14162    }
14163    next(xpp);
14164    parseElementClose(res);
14165    return res;
14166  }
14167
14168  protected boolean parseRequestGroupContent(int eventType, XmlPullParser xpp, RequestGroup res) throws XmlPullParserException, IOException, FHIRFormatError {
14169      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14170        res.getIdentifier().add(parseIdentifier(xpp));
14171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
14172        res.getDefinition().add(parseReference(xpp));
14173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14174        res.getBasedOn().add(parseReference(xpp));
14175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
14176        res.getReplaces().add(parseReference(xpp));
14177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
14178        res.setGroupIdentifier(parseIdentifier(xpp));
14179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14180        res.setStatusElement(parseEnumeration(xpp, RequestGroup.RequestStatus.NULL, new RequestGroup.RequestStatusEnumFactory()));
14181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
14182        res.setIntentElement(parseEnumeration(xpp, RequestGroup.RequestIntent.NULL, new RequestGroup.RequestIntentEnumFactory()));
14183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
14184        res.setPriorityElement(parseEnumeration(xpp, RequestGroup.RequestPriority.NULL, new RequestGroup.RequestPriorityEnumFactory()));
14185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14186        res.setSubject(parseReference(xpp));
14187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
14188        res.setContext(parseReference(xpp));
14189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
14190        res.setAuthoredOnElement(parseDateTime(xpp));
14191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
14192        res.setAuthor(parseReference(xpp));
14193      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
14194        res.setReason(parseType("reason", xpp));
14195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14196        res.getNote().add(parseAnnotation(xpp));
14197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
14198        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, res));
14199      } else if (!parseDomainResourceContent(eventType, xpp, res))
14200        return false;
14201    return true;
14202  }
14203
14204  protected RequestGroup.RequestGroupActionComponent parseRequestGroupRequestGroupActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
14205    RequestGroup.RequestGroupActionComponent res = new RequestGroup.RequestGroupActionComponent();
14206    parseBackboneAttributes(xpp, res);
14207    next(xpp);
14208    int eventType = nextNoWhitespace(xpp);
14209    while (eventType != XmlPullParser.END_TAG) {
14210  if (!parseRequestGroupRequestGroupActionComponentContent(eventType, xpp, owner, res))
14211        unknownContent(xpp);
14212      eventType = nextNoWhitespace(xpp);
14213    }
14214    next(xpp);
14215    parseElementClose(res);
14216    return res;
14217  }
14218
14219  protected boolean parseRequestGroupRequestGroupActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14220      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
14221        res.setLabelElement(parseString(xpp));
14222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
14223        res.setTitleElement(parseString(xpp));
14224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14225        res.setDescriptionElement(parseString(xpp));
14226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
14227        res.setTextEquivalentElement(parseString(xpp));
14228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14229        res.getCode().add(parseCodeableConcept(xpp));
14230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
14231        res.getDocumentation().add(parseRelatedArtifact(xpp));
14232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
14233        res.getCondition().add(parseRequestGroupRequestGroupActionConditionComponent(xpp, owner));
14234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
14235        res.getRelatedAction().add(parseRequestGroupRequestGroupActionRelatedActionComponent(xpp, owner));
14236      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
14237        res.setTiming(parseType("timing", xpp));
14238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
14239        res.getParticipant().add(parseReference(xpp));
14240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14241        res.setType(parseCoding(xpp));
14242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
14243        res.setGroupingBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionGroupingBehavior.NULL, new RequestGroup.ActionGroupingBehaviorEnumFactory()));
14244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
14245        res.setSelectionBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionSelectionBehavior.NULL, new RequestGroup.ActionSelectionBehaviorEnumFactory()));
14246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
14247        res.setRequiredBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionRequiredBehavior.NULL, new RequestGroup.ActionRequiredBehaviorEnumFactory()));
14248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
14249        res.setPrecheckBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionPrecheckBehavior.NULL, new RequestGroup.ActionPrecheckBehaviorEnumFactory()));
14250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
14251        res.setCardinalityBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionCardinalityBehavior.NULL, new RequestGroup.ActionCardinalityBehaviorEnumFactory()));
14252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
14253        res.setResource(parseReference(xpp));
14254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
14255        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, owner));
14256      } else if (!parseBackboneContent(eventType, xpp, res))
14257        return false;
14258    return true;
14259  }
14260
14261  protected RequestGroup.RequestGroupActionConditionComponent parseRequestGroupRequestGroupActionConditionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
14262    RequestGroup.RequestGroupActionConditionComponent res = new RequestGroup.RequestGroupActionConditionComponent();
14263    parseBackboneAttributes(xpp, res);
14264    next(xpp);
14265    int eventType = nextNoWhitespace(xpp);
14266    while (eventType != XmlPullParser.END_TAG) {
14267  if (!parseRequestGroupRequestGroupActionConditionComponentContent(eventType, xpp, owner, res))
14268        unknownContent(xpp);
14269      eventType = nextNoWhitespace(xpp);
14270    }
14271    next(xpp);
14272    parseElementClose(res);
14273    return res;
14274  }
14275
14276  protected boolean parseRequestGroupRequestGroupActionConditionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14277      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
14278        res.setKindElement(parseEnumeration(xpp, RequestGroup.ActionConditionKind.NULL, new RequestGroup.ActionConditionKindEnumFactory()));
14279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14280        res.setDescriptionElement(parseString(xpp));
14281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
14282        res.setLanguageElement(parseString(xpp));
14283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
14284        res.setExpressionElement(parseString(xpp));
14285      } else if (!parseBackboneContent(eventType, xpp, res))
14286        return false;
14287    return true;
14288  }
14289
14290  protected RequestGroup.RequestGroupActionRelatedActionComponent parseRequestGroupRequestGroupActionRelatedActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
14291    RequestGroup.RequestGroupActionRelatedActionComponent res = new RequestGroup.RequestGroupActionRelatedActionComponent();
14292    parseBackboneAttributes(xpp, res);
14293    next(xpp);
14294    int eventType = nextNoWhitespace(xpp);
14295    while (eventType != XmlPullParser.END_TAG) {
14296  if (!parseRequestGroupRequestGroupActionRelatedActionComponentContent(eventType, xpp, owner, res))
14297        unknownContent(xpp);
14298      eventType = nextNoWhitespace(xpp);
14299    }
14300    next(xpp);
14301    parseElementClose(res);
14302    return res;
14303  }
14304
14305  protected boolean parseRequestGroupRequestGroupActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14306      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
14307        res.setActionIdElement(parseId(xpp));
14308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
14309        res.setRelationshipElement(parseEnumeration(xpp, RequestGroup.ActionRelationshipType.NULL, new RequestGroup.ActionRelationshipTypeEnumFactory()));
14310      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
14311        res.setOffset(parseType("offset", xpp));
14312      } else if (!parseBackboneContent(eventType, xpp, res))
14313        return false;
14314    return true;
14315  }
14316
14317  protected ResearchStudy parseResearchStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14318    ResearchStudy res = new ResearchStudy();
14319    parseDomainResourceAttributes(xpp, res);
14320    next(xpp);
14321    int eventType = nextNoWhitespace(xpp);
14322    while (eventType != XmlPullParser.END_TAG) {
14323  if (!parseResearchStudyContent(eventType, xpp, res))
14324        unknownContent(xpp);
14325      eventType = nextNoWhitespace(xpp);
14326    }
14327    next(xpp);
14328    parseElementClose(res);
14329    return res;
14330  }
14331
14332  protected boolean parseResearchStudyContent(int eventType, XmlPullParser xpp, ResearchStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
14333      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14334        res.getIdentifier().add(parseIdentifier(xpp));
14335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
14336        res.setTitleElement(parseString(xpp));
14337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
14338        res.getProtocol().add(parseReference(xpp));
14339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
14340        res.getPartOf().add(parseReference(xpp));
14341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14342        res.setStatusElement(parseEnumeration(xpp, ResearchStudy.ResearchStudyStatus.NULL, new ResearchStudy.ResearchStudyStatusEnumFactory()));
14343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14344        res.getCategory().add(parseCodeableConcept(xpp));
14345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
14346        res.getFocus().add(parseCodeableConcept(xpp));
14347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14348        res.getContact().add(parseContactDetail(xpp));
14349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
14350        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
14351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
14352        res.getKeyword().add(parseCodeableConcept(xpp));
14353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14354        res.getJurisdiction().add(parseCodeableConcept(xpp));
14355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14356        res.setDescriptionElement(parseMarkdown(xpp));
14357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enrollment")) {
14358        res.getEnrollment().add(parseReference(xpp));
14359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14360        res.setPeriod(parsePeriod(xpp));
14361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sponsor")) {
14362        res.setSponsor(parseReference(xpp));
14363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("principalInvestigator")) {
14364        res.setPrincipalInvestigator(parseReference(xpp));
14365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
14366        res.getSite().add(parseReference(xpp));
14367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonStopped")) {
14368        res.setReasonStopped(parseCodeableConcept(xpp));
14369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14370        res.getNote().add(parseAnnotation(xpp));
14371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("arm")) {
14372        res.getArm().add(parseResearchStudyResearchStudyArmComponent(xpp, res));
14373      } else if (!parseDomainResourceContent(eventType, xpp, res))
14374        return false;
14375    return true;
14376  }
14377
14378  protected ResearchStudy.ResearchStudyArmComponent parseResearchStudyResearchStudyArmComponent(XmlPullParser xpp, ResearchStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
14379    ResearchStudy.ResearchStudyArmComponent res = new ResearchStudy.ResearchStudyArmComponent();
14380    parseBackboneAttributes(xpp, res);
14381    next(xpp);
14382    int eventType = nextNoWhitespace(xpp);
14383    while (eventType != XmlPullParser.END_TAG) {
14384  if (!parseResearchStudyResearchStudyArmComponentContent(eventType, xpp, owner, res))
14385        unknownContent(xpp);
14386      eventType = nextNoWhitespace(xpp);
14387    }
14388    next(xpp);
14389    parseElementClose(res);
14390    return res;
14391  }
14392
14393  protected boolean parseResearchStudyResearchStudyArmComponentContent(int eventType, XmlPullParser xpp, ResearchStudy owner, ResearchStudy.ResearchStudyArmComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14394      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14395        res.setNameElement(parseString(xpp));
14396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14397        res.setCode(parseCodeableConcept(xpp));
14398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14399        res.setDescriptionElement(parseString(xpp));
14400      } else if (!parseBackboneContent(eventType, xpp, res))
14401        return false;
14402    return true;
14403  }
14404
14405  protected ResearchSubject parseResearchSubject(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14406    ResearchSubject res = new ResearchSubject();
14407    parseDomainResourceAttributes(xpp, res);
14408    next(xpp);
14409    int eventType = nextNoWhitespace(xpp);
14410    while (eventType != XmlPullParser.END_TAG) {
14411  if (!parseResearchSubjectContent(eventType, xpp, res))
14412        unknownContent(xpp);
14413      eventType = nextNoWhitespace(xpp);
14414    }
14415    next(xpp);
14416    parseElementClose(res);
14417    return res;
14418  }
14419
14420  protected boolean parseResearchSubjectContent(int eventType, XmlPullParser xpp, ResearchSubject res) throws XmlPullParserException, IOException, FHIRFormatError {
14421      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14422        res.setIdentifier(parseIdentifier(xpp));
14423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14424        res.setStatusElement(parseEnumeration(xpp, ResearchSubject.ResearchSubjectStatus.NULL, new ResearchSubject.ResearchSubjectStatusEnumFactory()));
14425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14426        res.setPeriod(parsePeriod(xpp));
14427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
14428        res.setStudy(parseReference(xpp));
14429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
14430        res.setIndividual(parseReference(xpp));
14431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assignedArm")) {
14432        res.setAssignedArmElement(parseString(xpp));
14433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actualArm")) {
14434        res.setActualArmElement(parseString(xpp));
14435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("consent")) {
14436        res.setConsent(parseReference(xpp));
14437      } else if (!parseDomainResourceContent(eventType, xpp, res))
14438        return false;
14439    return true;
14440  }
14441
14442  protected RiskAssessment parseRiskAssessment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14443    RiskAssessment res = new RiskAssessment();
14444    parseDomainResourceAttributes(xpp, res);
14445    next(xpp);
14446    int eventType = nextNoWhitespace(xpp);
14447    while (eventType != XmlPullParser.END_TAG) {
14448  if (!parseRiskAssessmentContent(eventType, xpp, res))
14449        unknownContent(xpp);
14450      eventType = nextNoWhitespace(xpp);
14451    }
14452    next(xpp);
14453    parseElementClose(res);
14454    return res;
14455  }
14456
14457  protected boolean parseRiskAssessmentContent(int eventType, XmlPullParser xpp, RiskAssessment res) throws XmlPullParserException, IOException, FHIRFormatError {
14458      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14459        res.setIdentifier(parseIdentifier(xpp));
14460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14461        res.setBasedOn(parseReference(xpp));
14462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
14463        res.setParent(parseReference(xpp));
14464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14465        res.setStatusElement(parseEnumeration(xpp, RiskAssessment.RiskAssessmentStatus.NULL, new RiskAssessment.RiskAssessmentStatusEnumFactory()));
14466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
14467        res.setMethod(parseCodeableConcept(xpp));
14468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14469        res.setCode(parseCodeableConcept(xpp));
14470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14471        res.setSubject(parseReference(xpp));
14472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
14473        res.setContext(parseReference(xpp));
14474      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
14475        res.setOccurrence(parseType("occurrence", xpp));
14476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
14477        res.setCondition(parseReference(xpp));
14478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
14479        res.setPerformer(parseReference(xpp));
14480      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
14481        res.setReason(parseType("reason", xpp));
14482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
14483        res.getBasis().add(parseReference(xpp));
14484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prediction")) {
14485        res.getPrediction().add(parseRiskAssessmentRiskAssessmentPredictionComponent(xpp, res));
14486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
14487        res.setMitigationElement(parseString(xpp));
14488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
14489        res.setCommentElement(parseString(xpp));
14490      } else if (!parseDomainResourceContent(eventType, xpp, res))
14491        return false;
14492    return true;
14493  }
14494
14495  protected RiskAssessment.RiskAssessmentPredictionComponent parseRiskAssessmentRiskAssessmentPredictionComponent(XmlPullParser xpp, RiskAssessment owner) throws XmlPullParserException, IOException, FHIRFormatError {
14496    RiskAssessment.RiskAssessmentPredictionComponent res = new RiskAssessment.RiskAssessmentPredictionComponent();
14497    parseBackboneAttributes(xpp, res);
14498    next(xpp);
14499    int eventType = nextNoWhitespace(xpp);
14500    while (eventType != XmlPullParser.END_TAG) {
14501  if (!parseRiskAssessmentRiskAssessmentPredictionComponentContent(eventType, xpp, owner, res))
14502        unknownContent(xpp);
14503      eventType = nextNoWhitespace(xpp);
14504    }
14505    next(xpp);
14506    parseElementClose(res);
14507    return res;
14508  }
14509
14510  protected boolean parseRiskAssessmentRiskAssessmentPredictionComponentContent(int eventType, XmlPullParser xpp, RiskAssessment owner, RiskAssessment.RiskAssessmentPredictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14511      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
14512        res.setOutcome(parseCodeableConcept(xpp));
14513      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "probability")) {
14514        res.setProbability(parseType("probability", xpp));
14515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualitativeRisk")) {
14516        res.setQualitativeRisk(parseCodeableConcept(xpp));
14517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativeRisk")) {
14518        res.setRelativeRiskElement(parseDecimal(xpp));
14519      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
14520        res.setWhen(parseType("when", xpp));
14521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
14522        res.setRationaleElement(parseString(xpp));
14523      } else if (!parseBackboneContent(eventType, xpp, res))
14524        return false;
14525    return true;
14526  }
14527
14528  protected Schedule parseSchedule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14529    Schedule res = new Schedule();
14530    parseDomainResourceAttributes(xpp, res);
14531    next(xpp);
14532    int eventType = nextNoWhitespace(xpp);
14533    while (eventType != XmlPullParser.END_TAG) {
14534  if (!parseScheduleContent(eventType, xpp, res))
14535        unknownContent(xpp);
14536      eventType = nextNoWhitespace(xpp);
14537    }
14538    next(xpp);
14539    parseElementClose(res);
14540    return res;
14541  }
14542
14543  protected boolean parseScheduleContent(int eventType, XmlPullParser xpp, Schedule res) throws XmlPullParserException, IOException, FHIRFormatError {
14544      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14545        res.getIdentifier().add(parseIdentifier(xpp));
14546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
14547        res.setActiveElement(parseBoolean(xpp));
14548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
14549        res.setServiceCategory(parseCodeableConcept(xpp));
14550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
14551        res.getServiceType().add(parseCodeableConcept(xpp));
14552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
14553        res.getSpecialty().add(parseCodeableConcept(xpp));
14554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
14555        res.getActor().add(parseReference(xpp));
14556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planningHorizon")) {
14557        res.setPlanningHorizon(parsePeriod(xpp));
14558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
14559        res.setCommentElement(parseString(xpp));
14560      } else if (!parseDomainResourceContent(eventType, xpp, res))
14561        return false;
14562    return true;
14563  }
14564
14565  protected SearchParameter parseSearchParameter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14566    SearchParameter res = new SearchParameter();
14567    parseDomainResourceAttributes(xpp, res);
14568    next(xpp);
14569    int eventType = nextNoWhitespace(xpp);
14570    while (eventType != XmlPullParser.END_TAG) {
14571  if (!parseSearchParameterContent(eventType, xpp, res))
14572        unknownContent(xpp);
14573      eventType = nextNoWhitespace(xpp);
14574    }
14575    next(xpp);
14576    parseElementClose(res);
14577    return res;
14578  }
14579
14580  protected boolean parseSearchParameterContent(int eventType, XmlPullParser xpp, SearchParameter res) throws XmlPullParserException, IOException, FHIRFormatError {
14581      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
14582        res.setUrlElement(parseUri(xpp));
14583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
14584        res.setVersionElement(parseString(xpp));
14585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14586        res.setNameElement(parseString(xpp));
14587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14588        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
14589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
14590        res.setExperimentalElement(parseBoolean(xpp));
14591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14592        res.setDateElement(parseDateTime(xpp));
14593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
14594        res.setPublisherElement(parseString(xpp));
14595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14596        res.getContact().add(parseContactDetail(xpp));
14597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
14598        res.getUseContext().add(parseUsageContext(xpp));
14599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14600        res.getJurisdiction().add(parseCodeableConcept(xpp));
14601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
14602        res.setPurposeElement(parseMarkdown(xpp));
14603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14604        res.setCodeElement(parseCode(xpp));
14605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
14606        res.getBase().add(parseCode(xpp));
14607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14608        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
14609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
14610        res.setDerivedFromElement(parseUri(xpp));
14611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14612        res.setDescriptionElement(parseMarkdown(xpp));
14613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
14614        res.setExpressionElement(parseString(xpp));
14615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
14616        res.setXpathElement(parseString(xpp));
14617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpathUsage")) {
14618        res.setXpathUsageElement(parseEnumeration(xpp, SearchParameter.XPathUsageType.NULL, new SearchParameter.XPathUsageTypeEnumFactory()));
14619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
14620        res.getTarget().add(parseCode(xpp));
14621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
14622        res.getComparator().add(parseEnumeration(xpp, SearchParameter.SearchComparator.NULL, new SearchParameter.SearchComparatorEnumFactory()));
14623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
14624        res.getModifier().add(parseEnumeration(xpp, SearchParameter.SearchModifierCode.NULL, new SearchParameter.SearchModifierCodeEnumFactory()));
14625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chain")) {
14626        res.getChain().add(parseString(xpp));
14627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
14628        res.getComponent().add(parseSearchParameterSearchParameterComponentComponent(xpp, res));
14629      } else if (!parseDomainResourceContent(eventType, xpp, res))
14630        return false;
14631    return true;
14632  }
14633
14634  protected SearchParameter.SearchParameterComponentComponent parseSearchParameterSearchParameterComponentComponent(XmlPullParser xpp, SearchParameter owner) throws XmlPullParserException, IOException, FHIRFormatError {
14635    SearchParameter.SearchParameterComponentComponent res = new SearchParameter.SearchParameterComponentComponent();
14636    parseBackboneAttributes(xpp, res);
14637    next(xpp);
14638    int eventType = nextNoWhitespace(xpp);
14639    while (eventType != XmlPullParser.END_TAG) {
14640  if (!parseSearchParameterSearchParameterComponentComponentContent(eventType, xpp, owner, res))
14641        unknownContent(xpp);
14642      eventType = nextNoWhitespace(xpp);
14643    }
14644    next(xpp);
14645    parseElementClose(res);
14646    return res;
14647  }
14648
14649  protected boolean parseSearchParameterSearchParameterComponentComponentContent(int eventType, XmlPullParser xpp, SearchParameter owner, SearchParameter.SearchParameterComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14650      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
14651        res.setDefinition(parseReference(xpp));
14652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
14653        res.setExpressionElement(parseString(xpp));
14654      } else if (!parseBackboneContent(eventType, xpp, res))
14655        return false;
14656    return true;
14657  }
14658
14659  protected Sequence parseSequence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14660    Sequence res = new Sequence();
14661    parseDomainResourceAttributes(xpp, res);
14662    next(xpp);
14663    int eventType = nextNoWhitespace(xpp);
14664    while (eventType != XmlPullParser.END_TAG) {
14665  if (!parseSequenceContent(eventType, xpp, res))
14666        unknownContent(xpp);
14667      eventType = nextNoWhitespace(xpp);
14668    }
14669    next(xpp);
14670    parseElementClose(res);
14671    return res;
14672  }
14673
14674  protected boolean parseSequenceContent(int eventType, XmlPullParser xpp, Sequence res) throws XmlPullParserException, IOException, FHIRFormatError {
14675      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14676        res.getIdentifier().add(parseIdentifier(xpp));
14677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14678        res.setTypeElement(parseEnumeration(xpp, Sequence.SequenceType.NULL, new Sequence.SequenceTypeEnumFactory()));
14679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coordinateSystem")) {
14680        res.setCoordinateSystemElement(parseInteger(xpp));
14681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
14682        res.setPatient(parseReference(xpp));
14683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
14684        res.setSpecimen(parseReference(xpp));
14685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
14686        res.setDevice(parseReference(xpp));
14687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
14688        res.setPerformer(parseReference(xpp));
14689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14690        res.setQuantity(parseQuantity(xpp));
14691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeq")) {
14692        res.setReferenceSeq(parseSequenceSequenceReferenceSeqComponent(xpp, res));
14693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variant")) {
14694        res.getVariant().add(parseSequenceSequenceVariantComponent(xpp, res));
14695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedSeq")) {
14696        res.setObservedSeqElement(parseString(xpp));
14697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quality")) {
14698        res.getQuality().add(parseSequenceSequenceQualityComponent(xpp, res));
14699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readCoverage")) {
14700        res.setReadCoverageElement(parseInteger(xpp));
14701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repository")) {
14702        res.getRepository().add(parseSequenceSequenceRepositoryComponent(xpp, res));
14703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pointer")) {
14704        res.getPointer().add(parseReference(xpp));
14705      } else if (!parseDomainResourceContent(eventType, xpp, res))
14706        return false;
14707    return true;
14708  }
14709
14710  protected Sequence.SequenceReferenceSeqComponent parseSequenceSequenceReferenceSeqComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
14711    Sequence.SequenceReferenceSeqComponent res = new Sequence.SequenceReferenceSeqComponent();
14712    parseBackboneAttributes(xpp, res);
14713    next(xpp);
14714    int eventType = nextNoWhitespace(xpp);
14715    while (eventType != XmlPullParser.END_TAG) {
14716  if (!parseSequenceSequenceReferenceSeqComponentContent(eventType, xpp, owner, res))
14717        unknownContent(xpp);
14718      eventType = nextNoWhitespace(xpp);
14719    }
14720    next(xpp);
14721    parseElementClose(res);
14722    return res;
14723  }
14724
14725  protected boolean parseSequenceSequenceReferenceSeqComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceReferenceSeqComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14726      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chromosome")) {
14727        res.setChromosome(parseCodeableConcept(xpp));
14728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genomeBuild")) {
14729        res.setGenomeBuildElement(parseString(xpp));
14730      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqId")) {
14731        res.setReferenceSeqId(parseCodeableConcept(xpp));
14732      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqPointer")) {
14733        res.setReferenceSeqPointer(parseReference(xpp));
14734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqString")) {
14735        res.setReferenceSeqStringElement(parseString(xpp));
14736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strand")) {
14737        res.setStrandElement(parseInteger(xpp));
14738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowStart")) {
14739        res.setWindowStartElement(parseInteger(xpp));
14740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowEnd")) {
14741        res.setWindowEndElement(parseInteger(xpp));
14742      } else if (!parseBackboneContent(eventType, xpp, res))
14743        return false;
14744    return true;
14745  }
14746
14747  protected Sequence.SequenceVariantComponent parseSequenceSequenceVariantComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
14748    Sequence.SequenceVariantComponent res = new Sequence.SequenceVariantComponent();
14749    parseBackboneAttributes(xpp, res);
14750    next(xpp);
14751    int eventType = nextNoWhitespace(xpp);
14752    while (eventType != XmlPullParser.END_TAG) {
14753  if (!parseSequenceSequenceVariantComponentContent(eventType, xpp, owner, res))
14754        unknownContent(xpp);
14755      eventType = nextNoWhitespace(xpp);
14756    }
14757    next(xpp);
14758    parseElementClose(res);
14759    return res;
14760  }
14761
14762  protected boolean parseSequenceSequenceVariantComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14763      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
14764        res.setStartElement(parseInteger(xpp));
14765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
14766        res.setEndElement(parseInteger(xpp));
14767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedAllele")) {
14768        res.setObservedAlleleElement(parseString(xpp));
14769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceAllele")) {
14770        res.setReferenceAlleleElement(parseString(xpp));
14771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cigar")) {
14772        res.setCigarElement(parseString(xpp));
14773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantPointer")) {
14774        res.setVariantPointer(parseReference(xpp));
14775      } else if (!parseBackboneContent(eventType, xpp, res))
14776        return false;
14777    return true;
14778  }
14779
14780  protected Sequence.SequenceQualityComponent parseSequenceSequenceQualityComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
14781    Sequence.SequenceQualityComponent res = new Sequence.SequenceQualityComponent();
14782    parseBackboneAttributes(xpp, res);
14783    next(xpp);
14784    int eventType = nextNoWhitespace(xpp);
14785    while (eventType != XmlPullParser.END_TAG) {
14786  if (!parseSequenceSequenceQualityComponentContent(eventType, xpp, owner, res))
14787        unknownContent(xpp);
14788      eventType = nextNoWhitespace(xpp);
14789    }
14790    next(xpp);
14791    parseElementClose(res);
14792    return res;
14793  }
14794
14795  protected boolean parseSequenceSequenceQualityComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceQualityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14796      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14797        res.setTypeElement(parseEnumeration(xpp, Sequence.QualityType.NULL, new Sequence.QualityTypeEnumFactory()));
14798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("standardSequence")) {
14799        res.setStandardSequence(parseCodeableConcept(xpp));
14800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
14801        res.setStartElement(parseInteger(xpp));
14802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
14803        res.setEndElement(parseInteger(xpp));
14804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
14805        res.setScore(parseQuantity(xpp));
14806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
14807        res.setMethod(parseCodeableConcept(xpp));
14808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthTP")) {
14809        res.setTruthTPElement(parseDecimal(xpp));
14810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryTP")) {
14811        res.setQueryTPElement(parseDecimal(xpp));
14812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthFN")) {
14813        res.setTruthFNElement(parseDecimal(xpp));
14814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryFP")) {
14815        res.setQueryFPElement(parseDecimal(xpp));
14816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gtFP")) {
14817        res.setGtFPElement(parseDecimal(xpp));
14818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
14819        res.setPrecisionElement(parseDecimal(xpp));
14820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recall")) {
14821        res.setRecallElement(parseDecimal(xpp));
14822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fScore")) {
14823        res.setFScoreElement(parseDecimal(xpp));
14824      } else if (!parseBackboneContent(eventType, xpp, res))
14825        return false;
14826    return true;
14827  }
14828
14829  protected Sequence.SequenceRepositoryComponent parseSequenceSequenceRepositoryComponent(XmlPullParser xpp, Sequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
14830    Sequence.SequenceRepositoryComponent res = new Sequence.SequenceRepositoryComponent();
14831    parseBackboneAttributes(xpp, res);
14832    next(xpp);
14833    int eventType = nextNoWhitespace(xpp);
14834    while (eventType != XmlPullParser.END_TAG) {
14835  if (!parseSequenceSequenceRepositoryComponentContent(eventType, xpp, owner, res))
14836        unknownContent(xpp);
14837      eventType = nextNoWhitespace(xpp);
14838    }
14839    next(xpp);
14840    parseElementClose(res);
14841    return res;
14842  }
14843
14844  protected boolean parseSequenceSequenceRepositoryComponentContent(int eventType, XmlPullParser xpp, Sequence owner, Sequence.SequenceRepositoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14845      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14846        res.setTypeElement(parseEnumeration(xpp, Sequence.RepositoryType.NULL, new Sequence.RepositoryTypeEnumFactory()));
14847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
14848        res.setUrlElement(parseUri(xpp));
14849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14850        res.setNameElement(parseString(xpp));
14851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("datasetId")) {
14852        res.setDatasetIdElement(parseString(xpp));
14853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantsetId")) {
14854        res.setVariantsetIdElement(parseString(xpp));
14855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readsetId")) {
14856        res.setReadsetIdElement(parseString(xpp));
14857      } else if (!parseBackboneContent(eventType, xpp, res))
14858        return false;
14859    return true;
14860  }
14861
14862  protected ServiceDefinition parseServiceDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14863    ServiceDefinition res = new ServiceDefinition();
14864    parseDomainResourceAttributes(xpp, res);
14865    next(xpp);
14866    int eventType = nextNoWhitespace(xpp);
14867    while (eventType != XmlPullParser.END_TAG) {
14868  if (!parseServiceDefinitionContent(eventType, xpp, res))
14869        unknownContent(xpp);
14870      eventType = nextNoWhitespace(xpp);
14871    }
14872    next(xpp);
14873    parseElementClose(res);
14874    return res;
14875  }
14876
14877  protected boolean parseServiceDefinitionContent(int eventType, XmlPullParser xpp, ServiceDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
14878      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
14879        res.setUrlElement(parseUri(xpp));
14880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14881        res.getIdentifier().add(parseIdentifier(xpp));
14882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
14883        res.setVersionElement(parseString(xpp));
14884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14885        res.setNameElement(parseString(xpp));
14886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
14887        res.setTitleElement(parseString(xpp));
14888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14889        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
14890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
14891        res.setExperimentalElement(parseBoolean(xpp));
14892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14893        res.setDateElement(parseDateTime(xpp));
14894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
14895        res.setPublisherElement(parseString(xpp));
14896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14897        res.setDescriptionElement(parseMarkdown(xpp));
14898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
14899        res.setPurposeElement(parseMarkdown(xpp));
14900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
14901        res.setUsageElement(parseString(xpp));
14902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
14903        res.setApprovalDateElement(parseDate(xpp));
14904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
14905        res.setLastReviewDateElement(parseDate(xpp));
14906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
14907        res.setEffectivePeriod(parsePeriod(xpp));
14908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
14909        res.getUseContext().add(parseUsageContext(xpp));
14910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14911        res.getJurisdiction().add(parseCodeableConcept(xpp));
14912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
14913        res.getTopic().add(parseCodeableConcept(xpp));
14914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
14915        res.getContributor().add(parseContributor(xpp));
14916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14917        res.getContact().add(parseContactDetail(xpp));
14918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
14919        res.setCopyrightElement(parseMarkdown(xpp));
14920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
14921        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
14922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
14923        res.getTrigger().add(parseTriggerDefinition(xpp));
14924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
14925        res.getDataRequirement().add(parseDataRequirement(xpp));
14926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationDefinition")) {
14927        res.setOperationDefinition(parseReference(xpp));
14928      } else if (!parseDomainResourceContent(eventType, xpp, res))
14929        return false;
14930    return true;
14931  }
14932
14933  protected Slot parseSlot(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14934    Slot res = new Slot();
14935    parseDomainResourceAttributes(xpp, res);
14936    next(xpp);
14937    int eventType = nextNoWhitespace(xpp);
14938    while (eventType != XmlPullParser.END_TAG) {
14939  if (!parseSlotContent(eventType, xpp, res))
14940        unknownContent(xpp);
14941      eventType = nextNoWhitespace(xpp);
14942    }
14943    next(xpp);
14944    parseElementClose(res);
14945    return res;
14946  }
14947
14948  protected boolean parseSlotContent(int eventType, XmlPullParser xpp, Slot res) throws XmlPullParserException, IOException, FHIRFormatError {
14949      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14950        res.getIdentifier().add(parseIdentifier(xpp));
14951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
14952        res.setServiceCategory(parseCodeableConcept(xpp));
14953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
14954        res.getServiceType().add(parseCodeableConcept(xpp));
14955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
14956        res.getSpecialty().add(parseCodeableConcept(xpp));
14957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
14958        res.setAppointmentType(parseCodeableConcept(xpp));
14959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
14960        res.setSchedule(parseReference(xpp));
14961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14962        res.setStatusElement(parseEnumeration(xpp, Slot.SlotStatus.NULL, new Slot.SlotStatusEnumFactory()));
14963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
14964        res.setStartElement(parseInstant(xpp));
14965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
14966        res.setEndElement(parseInstant(xpp));
14967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overbooked")) {
14968        res.setOverbookedElement(parseBoolean(xpp));
14969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
14970        res.setCommentElement(parseString(xpp));
14971      } else if (!parseDomainResourceContent(eventType, xpp, res))
14972        return false;
14973    return true;
14974  }
14975
14976  protected Specimen parseSpecimen(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14977    Specimen res = new Specimen();
14978    parseDomainResourceAttributes(xpp, res);
14979    next(xpp);
14980    int eventType = nextNoWhitespace(xpp);
14981    while (eventType != XmlPullParser.END_TAG) {
14982  if (!parseSpecimenContent(eventType, xpp, res))
14983        unknownContent(xpp);
14984      eventType = nextNoWhitespace(xpp);
14985    }
14986    next(xpp);
14987    parseElementClose(res);
14988    return res;
14989  }
14990
14991  protected boolean parseSpecimenContent(int eventType, XmlPullParser xpp, Specimen res) throws XmlPullParserException, IOException, FHIRFormatError {
14992      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14993        res.getIdentifier().add(parseIdentifier(xpp));
14994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionIdentifier")) {
14995        res.setAccessionIdentifier(parseIdentifier(xpp));
14996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14997        res.setStatusElement(parseEnumeration(xpp, Specimen.SpecimenStatus.NULL, new Specimen.SpecimenStatusEnumFactory()));
14998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14999        res.setType(parseCodeableConcept(xpp));
15000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15001        res.setSubject(parseReference(xpp));
15002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receivedTime")) {
15003        res.setReceivedTimeElement(parseDateTime(xpp));
15004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
15005        res.getParent().add(parseReference(xpp));
15006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
15007        res.getRequest().add(parseReference(xpp));
15008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
15009        res.setCollection(parseSpecimenSpecimenCollectionComponent(xpp, res));
15010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
15011        res.getProcessing().add(parseSpecimenSpecimenProcessingComponent(xpp, res));
15012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
15013        res.getContainer().add(parseSpecimenSpecimenContainerComponent(xpp, res));
15014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
15015        res.getNote().add(parseAnnotation(xpp));
15016      } else if (!parseDomainResourceContent(eventType, xpp, res))
15017        return false;
15018    return true;
15019  }
15020
15021  protected Specimen.SpecimenCollectionComponent parseSpecimenSpecimenCollectionComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
15022    Specimen.SpecimenCollectionComponent res = new Specimen.SpecimenCollectionComponent();
15023    parseBackboneAttributes(xpp, res);
15024    next(xpp);
15025    int eventType = nextNoWhitespace(xpp);
15026    while (eventType != XmlPullParser.END_TAG) {
15027  if (!parseSpecimenSpecimenCollectionComponentContent(eventType, xpp, owner, res))
15028        unknownContent(xpp);
15029      eventType = nextNoWhitespace(xpp);
15030    }
15031    next(xpp);
15032    parseElementClose(res);
15033    return res;
15034  }
15035
15036  protected boolean parseSpecimenSpecimenCollectionComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15037      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
15038        res.setCollector(parseReference(xpp));
15039      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
15040        res.setCollected(parseType("collected", xpp));
15041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15042        res.setQuantity(parseSimpleQuantity(xpp));
15043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
15044        res.setMethod(parseCodeableConcept(xpp));
15045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
15046        res.setBodySite(parseCodeableConcept(xpp));
15047      } else if (!parseBackboneContent(eventType, xpp, res))
15048        return false;
15049    return true;
15050  }
15051
15052  protected Specimen.SpecimenProcessingComponent parseSpecimenSpecimenProcessingComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
15053    Specimen.SpecimenProcessingComponent res = new Specimen.SpecimenProcessingComponent();
15054    parseBackboneAttributes(xpp, res);
15055    next(xpp);
15056    int eventType = nextNoWhitespace(xpp);
15057    while (eventType != XmlPullParser.END_TAG) {
15058  if (!parseSpecimenSpecimenProcessingComponentContent(eventType, xpp, owner, res))
15059        unknownContent(xpp);
15060      eventType = nextNoWhitespace(xpp);
15061    }
15062    next(xpp);
15063    parseElementClose(res);
15064    return res;
15065  }
15066
15067  protected boolean parseSpecimenSpecimenProcessingComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15068      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15069        res.setDescriptionElement(parseString(xpp));
15070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
15071        res.setProcedure(parseCodeableConcept(xpp));
15072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
15073        res.getAdditive().add(parseReference(xpp));
15074      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
15075        res.setTime(parseType("time", xpp));
15076      } else if (!parseBackboneContent(eventType, xpp, res))
15077        return false;
15078    return true;
15079  }
15080
15081  protected Specimen.SpecimenContainerComponent parseSpecimenSpecimenContainerComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
15082    Specimen.SpecimenContainerComponent res = new Specimen.SpecimenContainerComponent();
15083    parseBackboneAttributes(xpp, res);
15084    next(xpp);
15085    int eventType = nextNoWhitespace(xpp);
15086    while (eventType != XmlPullParser.END_TAG) {
15087  if (!parseSpecimenSpecimenContainerComponentContent(eventType, xpp, owner, res))
15088        unknownContent(xpp);
15089      eventType = nextNoWhitespace(xpp);
15090    }
15091    next(xpp);
15092    parseElementClose(res);
15093    return res;
15094  }
15095
15096  protected boolean parseSpecimenSpecimenContainerComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15097      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15098        res.getIdentifier().add(parseIdentifier(xpp));
15099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15100        res.setDescriptionElement(parseString(xpp));
15101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15102        res.setType(parseCodeableConcept(xpp));
15103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
15104        res.setCapacity(parseSimpleQuantity(xpp));
15105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenQuantity")) {
15106        res.setSpecimenQuantity(parseSimpleQuantity(xpp));
15107      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
15108        res.setAdditive(parseType("additive", xpp));
15109      } else if (!parseBackboneContent(eventType, xpp, res))
15110        return false;
15111    return true;
15112  }
15113
15114  protected StructureDefinition parseStructureDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15115    StructureDefinition res = new StructureDefinition();
15116    parseDomainResourceAttributes(xpp, res);
15117    next(xpp);
15118    int eventType = nextNoWhitespace(xpp);
15119    while (eventType != XmlPullParser.END_TAG) {
15120  if (!parseStructureDefinitionContent(eventType, xpp, res))
15121        unknownContent(xpp);
15122      eventType = nextNoWhitespace(xpp);
15123    }
15124    next(xpp);
15125    parseElementClose(res);
15126    return res;
15127  }
15128
15129  protected boolean parseStructureDefinitionContent(int eventType, XmlPullParser xpp, StructureDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
15130      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15131        res.setUrlElement(parseUri(xpp));
15132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15133        res.getIdentifier().add(parseIdentifier(xpp));
15134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15135        res.setVersionElement(parseString(xpp));
15136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15137        res.setNameElement(parseString(xpp));
15138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
15139        res.setTitleElement(parseString(xpp));
15140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15141        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
15142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
15143        res.setExperimentalElement(parseBoolean(xpp));
15144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15145        res.setDateElement(parseDateTime(xpp));
15146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
15147        res.setPublisherElement(parseString(xpp));
15148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15149        res.getContact().add(parseContactDetail(xpp));
15150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15151        res.setDescriptionElement(parseMarkdown(xpp));
15152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
15153        res.getUseContext().add(parseUsageContext(xpp));
15154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
15155        res.getJurisdiction().add(parseCodeableConcept(xpp));
15156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
15157        res.setPurposeElement(parseMarkdown(xpp));
15158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
15159        res.setCopyrightElement(parseMarkdown(xpp));
15160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
15161        res.getKeyword().add(parseCoding(xpp));
15162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
15163        res.setFhirVersionElement(parseId(xpp));
15164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
15165        res.getMapping().add(parseStructureDefinitionStructureDefinitionMappingComponent(xpp, res));
15166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
15167        res.setKindElement(parseEnumeration(xpp, StructureDefinition.StructureDefinitionKind.NULL, new StructureDefinition.StructureDefinitionKindEnumFactory()));
15168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
15169        res.setAbstractElement(parseBoolean(xpp));
15170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
15171        res.setContextTypeElement(parseEnumeration(xpp, StructureDefinition.ExtensionContext.NULL, new StructureDefinition.ExtensionContextEnumFactory()));
15172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15173        res.getContext().add(parseString(xpp));
15174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextInvariant")) {
15175        res.getContextInvariant().add(parseString(xpp));
15176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15177        res.setTypeElement(parseCode(xpp));
15178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseDefinition")) {
15179        res.setBaseDefinitionElement(parseUri(xpp));
15180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivation")) {
15181        res.setDerivationElement(parseEnumeration(xpp, StructureDefinition.TypeDerivationRule.NULL, new StructureDefinition.TypeDerivationRuleEnumFactory()));
15182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("snapshot")) {
15183        res.setSnapshot(parseStructureDefinitionStructureDefinitionSnapshotComponent(xpp, res));
15184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("differential")) {
15185        res.setDifferential(parseStructureDefinitionStructureDefinitionDifferentialComponent(xpp, res));
15186      } else if (!parseDomainResourceContent(eventType, xpp, res))
15187        return false;
15188    return true;
15189  }
15190
15191  protected StructureDefinition.StructureDefinitionMappingComponent parseStructureDefinitionStructureDefinitionMappingComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15192    StructureDefinition.StructureDefinitionMappingComponent res = new StructureDefinition.StructureDefinitionMappingComponent();
15193    parseBackboneAttributes(xpp, res);
15194    next(xpp);
15195    int eventType = nextNoWhitespace(xpp);
15196    while (eventType != XmlPullParser.END_TAG) {
15197  if (!parseStructureDefinitionStructureDefinitionMappingComponentContent(eventType, xpp, owner, res))
15198        unknownContent(xpp);
15199      eventType = nextNoWhitespace(xpp);
15200    }
15201    next(xpp);
15202    parseElementClose(res);
15203    return res;
15204  }
15205
15206  protected boolean parseStructureDefinitionStructureDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15207      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
15208        res.setIdentityElement(parseId(xpp));
15209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
15210        res.setUriElement(parseUri(xpp));
15211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15212        res.setNameElement(parseString(xpp));
15213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
15214        res.setCommentElement(parseString(xpp));
15215      } else if (!parseBackboneContent(eventType, xpp, res))
15216        return false;
15217    return true;
15218  }
15219
15220  protected StructureDefinition.StructureDefinitionSnapshotComponent parseStructureDefinitionStructureDefinitionSnapshotComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15221    StructureDefinition.StructureDefinitionSnapshotComponent res = new StructureDefinition.StructureDefinitionSnapshotComponent();
15222    parseBackboneAttributes(xpp, res);
15223    next(xpp);
15224    int eventType = nextNoWhitespace(xpp);
15225    while (eventType != XmlPullParser.END_TAG) {
15226  if (!parseStructureDefinitionStructureDefinitionSnapshotComponentContent(eventType, xpp, owner, res))
15227        unknownContent(xpp);
15228      eventType = nextNoWhitespace(xpp);
15229    }
15230    next(xpp);
15231    parseElementClose(res);
15232    return res;
15233  }
15234
15235  protected boolean parseStructureDefinitionStructureDefinitionSnapshotComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionSnapshotComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15236      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
15237        res.getElement().add(parseElementDefinition(xpp));
15238      } else if (!parseBackboneContent(eventType, xpp, res))
15239        return false;
15240    return true;
15241  }
15242
15243  protected StructureDefinition.StructureDefinitionDifferentialComponent parseStructureDefinitionStructureDefinitionDifferentialComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15244    StructureDefinition.StructureDefinitionDifferentialComponent res = new StructureDefinition.StructureDefinitionDifferentialComponent();
15245    parseBackboneAttributes(xpp, res);
15246    next(xpp);
15247    int eventType = nextNoWhitespace(xpp);
15248    while (eventType != XmlPullParser.END_TAG) {
15249  if (!parseStructureDefinitionStructureDefinitionDifferentialComponentContent(eventType, xpp, owner, res))
15250        unknownContent(xpp);
15251      eventType = nextNoWhitespace(xpp);
15252    }
15253    next(xpp);
15254    parseElementClose(res);
15255    return res;
15256  }
15257
15258  protected boolean parseStructureDefinitionStructureDefinitionDifferentialComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionDifferentialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15259      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
15260        res.getElement().add(parseElementDefinition(xpp));
15261      } else if (!parseBackboneContent(eventType, xpp, res))
15262        return false;
15263    return true;
15264  }
15265
15266  protected StructureMap parseStructureMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15267    StructureMap res = new StructureMap();
15268    parseDomainResourceAttributes(xpp, res);
15269    next(xpp);
15270    int eventType = nextNoWhitespace(xpp);
15271    while (eventType != XmlPullParser.END_TAG) {
15272  if (!parseStructureMapContent(eventType, xpp, res))
15273        unknownContent(xpp);
15274      eventType = nextNoWhitespace(xpp);
15275    }
15276    next(xpp);
15277    parseElementClose(res);
15278    return res;
15279  }
15280
15281  protected boolean parseStructureMapContent(int eventType, XmlPullParser xpp, StructureMap res) throws XmlPullParserException, IOException, FHIRFormatError {
15282      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15283        res.setUrlElement(parseUri(xpp));
15284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15285        res.getIdentifier().add(parseIdentifier(xpp));
15286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15287        res.setVersionElement(parseString(xpp));
15288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15289        res.setNameElement(parseString(xpp));
15290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
15291        res.setTitleElement(parseString(xpp));
15292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15293        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
15294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
15295        res.setExperimentalElement(parseBoolean(xpp));
15296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15297        res.setDateElement(parseDateTime(xpp));
15298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
15299        res.setPublisherElement(parseString(xpp));
15300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15301        res.getContact().add(parseContactDetail(xpp));
15302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15303        res.setDescriptionElement(parseMarkdown(xpp));
15304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
15305        res.getUseContext().add(parseUsageContext(xpp));
15306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
15307        res.getJurisdiction().add(parseCodeableConcept(xpp));
15308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
15309        res.setPurposeElement(parseMarkdown(xpp));
15310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
15311        res.setCopyrightElement(parseMarkdown(xpp));
15312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
15313        res.getStructure().add(parseStructureMapStructureMapStructureComponent(xpp, res));
15314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("import")) {
15315        res.getImport().add(parseUri(xpp));
15316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
15317        res.getGroup().add(parseStructureMapStructureMapGroupComponent(xpp, res));
15318      } else if (!parseDomainResourceContent(eventType, xpp, res))
15319        return false;
15320    return true;
15321  }
15322
15323  protected StructureMap.StructureMapStructureComponent parseStructureMapStructureMapStructureComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15324    StructureMap.StructureMapStructureComponent res = new StructureMap.StructureMapStructureComponent();
15325    parseBackboneAttributes(xpp, res);
15326    next(xpp);
15327    int eventType = nextNoWhitespace(xpp);
15328    while (eventType != XmlPullParser.END_TAG) {
15329  if (!parseStructureMapStructureMapStructureComponentContent(eventType, xpp, owner, res))
15330        unknownContent(xpp);
15331      eventType = nextNoWhitespace(xpp);
15332    }
15333    next(xpp);
15334    parseElementClose(res);
15335    return res;
15336  }
15337
15338  protected boolean parseStructureMapStructureMapStructureComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15339      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15340        res.setUrlElement(parseUri(xpp));
15341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
15342        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapModelMode.NULL, new StructureMap.StructureMapModelModeEnumFactory()));
15343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
15344        res.setAliasElement(parseString(xpp));
15345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
15346        res.setDocumentationElement(parseString(xpp));
15347      } else if (!parseBackboneContent(eventType, xpp, res))
15348        return false;
15349    return true;
15350  }
15351
15352  protected StructureMap.StructureMapGroupComponent parseStructureMapStructureMapGroupComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15353    StructureMap.StructureMapGroupComponent res = new StructureMap.StructureMapGroupComponent();
15354    parseBackboneAttributes(xpp, res);
15355    next(xpp);
15356    int eventType = nextNoWhitespace(xpp);
15357    while (eventType != XmlPullParser.END_TAG) {
15358  if (!parseStructureMapStructureMapGroupComponentContent(eventType, xpp, owner, res))
15359        unknownContent(xpp);
15360      eventType = nextNoWhitespace(xpp);
15361    }
15362    next(xpp);
15363    parseElementClose(res);
15364    return res;
15365  }
15366
15367  protected boolean parseStructureMapStructureMapGroupComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15368      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15369        res.setNameElement(parseId(xpp));
15370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extends")) {
15371        res.setExtendsElement(parseId(xpp));
15372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeMode")) {
15373        res.setTypeModeElement(parseEnumeration(xpp, StructureMap.StructureMapGroupTypeMode.NULL, new StructureMap.StructureMapGroupTypeModeEnumFactory()));
15374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
15375        res.setDocumentationElement(parseString(xpp));
15376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
15377        res.getInput().add(parseStructureMapStructureMapGroupInputComponent(xpp, owner));
15378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
15379        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
15380      } else if (!parseBackboneContent(eventType, xpp, res))
15381        return false;
15382    return true;
15383  }
15384
15385  protected StructureMap.StructureMapGroupInputComponent parseStructureMapStructureMapGroupInputComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15386    StructureMap.StructureMapGroupInputComponent res = new StructureMap.StructureMapGroupInputComponent();
15387    parseBackboneAttributes(xpp, res);
15388    next(xpp);
15389    int eventType = nextNoWhitespace(xpp);
15390    while (eventType != XmlPullParser.END_TAG) {
15391  if (!parseStructureMapStructureMapGroupInputComponentContent(eventType, xpp, owner, res))
15392        unknownContent(xpp);
15393      eventType = nextNoWhitespace(xpp);
15394    }
15395    next(xpp);
15396    parseElementClose(res);
15397    return res;
15398  }
15399
15400  protected boolean parseStructureMapStructureMapGroupInputComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupInputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15401      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15402        res.setNameElement(parseId(xpp));
15403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15404        res.setTypeElement(parseString(xpp));
15405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
15406        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapInputMode.NULL, new StructureMap.StructureMapInputModeEnumFactory()));
15407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
15408        res.setDocumentationElement(parseString(xpp));
15409      } else if (!parseBackboneContent(eventType, xpp, res))
15410        return false;
15411    return true;
15412  }
15413
15414  protected StructureMap.StructureMapGroupRuleComponent parseStructureMapStructureMapGroupRuleComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15415    StructureMap.StructureMapGroupRuleComponent res = new StructureMap.StructureMapGroupRuleComponent();
15416    parseBackboneAttributes(xpp, res);
15417    next(xpp);
15418    int eventType = nextNoWhitespace(xpp);
15419    while (eventType != XmlPullParser.END_TAG) {
15420  if (!parseStructureMapStructureMapGroupRuleComponentContent(eventType, xpp, owner, res))
15421        unknownContent(xpp);
15422      eventType = nextNoWhitespace(xpp);
15423    }
15424    next(xpp);
15425    parseElementClose(res);
15426    return res;
15427  }
15428
15429  protected boolean parseStructureMapStructureMapGroupRuleComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15430      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15431        res.setNameElement(parseId(xpp));
15432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
15433        res.getSource().add(parseStructureMapStructureMapGroupRuleSourceComponent(xpp, owner));
15434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
15435        res.getTarget().add(parseStructureMapStructureMapGroupRuleTargetComponent(xpp, owner));
15436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
15437        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
15438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
15439        res.getDependent().add(parseStructureMapStructureMapGroupRuleDependentComponent(xpp, owner));
15440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
15441        res.setDocumentationElement(parseString(xpp));
15442      } else if (!parseBackboneContent(eventType, xpp, res))
15443        return false;
15444    return true;
15445  }
15446
15447  protected StructureMap.StructureMapGroupRuleSourceComponent parseStructureMapStructureMapGroupRuleSourceComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15448    StructureMap.StructureMapGroupRuleSourceComponent res = new StructureMap.StructureMapGroupRuleSourceComponent();
15449    parseBackboneAttributes(xpp, res);
15450    next(xpp);
15451    int eventType = nextNoWhitespace(xpp);
15452    while (eventType != XmlPullParser.END_TAG) {
15453  if (!parseStructureMapStructureMapGroupRuleSourceComponentContent(eventType, xpp, owner, res))
15454        unknownContent(xpp);
15455      eventType = nextNoWhitespace(xpp);
15456    }
15457    next(xpp);
15458    parseElementClose(res);
15459    return res;
15460  }
15461
15462  protected boolean parseStructureMapStructureMapGroupRuleSourceComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15463      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15464        res.setContextElement(parseId(xpp));
15465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
15466        res.setMinElement(parseInteger(xpp));
15467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
15468        res.setMaxElement(parseString(xpp));
15469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15470        res.setTypeElement(parseString(xpp));
15471      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
15472        res.setDefaultValue(parseType("defaultValue", xpp));
15473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
15474        res.setElementElement(parseString(xpp));
15475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
15476        res.setListModeElement(parseEnumeration(xpp, StructureMap.StructureMapSourceListMode.NULL, new StructureMap.StructureMapSourceListModeEnumFactory()));
15477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
15478        res.setVariableElement(parseId(xpp));
15479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
15480        res.setConditionElement(parseString(xpp));
15481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("check")) {
15482        res.setCheckElement(parseString(xpp));
15483      } else if (!parseBackboneContent(eventType, xpp, res))
15484        return false;
15485    return true;
15486  }
15487
15488  protected StructureMap.StructureMapGroupRuleTargetComponent parseStructureMapStructureMapGroupRuleTargetComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15489    StructureMap.StructureMapGroupRuleTargetComponent res = new StructureMap.StructureMapGroupRuleTargetComponent();
15490    parseBackboneAttributes(xpp, res);
15491    next(xpp);
15492    int eventType = nextNoWhitespace(xpp);
15493    while (eventType != XmlPullParser.END_TAG) {
15494  if (!parseStructureMapStructureMapGroupRuleTargetComponentContent(eventType, xpp, owner, res))
15495        unknownContent(xpp);
15496      eventType = nextNoWhitespace(xpp);
15497    }
15498    next(xpp);
15499    parseElementClose(res);
15500    return res;
15501  }
15502
15503  protected boolean parseStructureMapStructureMapGroupRuleTargetComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15504      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15505        res.setContextElement(parseId(xpp));
15506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
15507        res.setContextTypeElement(parseEnumeration(xpp, StructureMap.StructureMapContextType.NULL, new StructureMap.StructureMapContextTypeEnumFactory()));
15508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
15509        res.setElementElement(parseString(xpp));
15510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
15511        res.setVariableElement(parseId(xpp));
15512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
15513        res.getListMode().add(parseEnumeration(xpp, StructureMap.StructureMapTargetListMode.NULL, new StructureMap.StructureMapTargetListModeEnumFactory()));
15514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listRuleId")) {
15515        res.setListRuleIdElement(parseId(xpp));
15516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
15517        res.setTransformElement(parseEnumeration(xpp, StructureMap.StructureMapTransform.NULL, new StructureMap.StructureMapTransformEnumFactory()));
15518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
15519        res.getParameter().add(parseStructureMapStructureMapGroupRuleTargetParameterComponent(xpp, owner));
15520      } else if (!parseBackboneContent(eventType, xpp, res))
15521        return false;
15522    return true;
15523  }
15524
15525  protected StructureMap.StructureMapGroupRuleTargetParameterComponent parseStructureMapStructureMapGroupRuleTargetParameterComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15526    StructureMap.StructureMapGroupRuleTargetParameterComponent res = new StructureMap.StructureMapGroupRuleTargetParameterComponent();
15527    parseBackboneAttributes(xpp, res);
15528    next(xpp);
15529    int eventType = nextNoWhitespace(xpp);
15530    while (eventType != XmlPullParser.END_TAG) {
15531  if (!parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(eventType, xpp, owner, res))
15532        unknownContent(xpp);
15533      eventType = nextNoWhitespace(xpp);
15534    }
15535    next(xpp);
15536    parseElementClose(res);
15537    return res;
15538  }
15539
15540  protected boolean parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15541      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
15542        res.setValue(parseType("value", xpp));
15543      } else if (!parseBackboneContent(eventType, xpp, res))
15544        return false;
15545    return true;
15546  }
15547
15548  protected StructureMap.StructureMapGroupRuleDependentComponent parseStructureMapStructureMapGroupRuleDependentComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
15549    StructureMap.StructureMapGroupRuleDependentComponent res = new StructureMap.StructureMapGroupRuleDependentComponent();
15550    parseBackboneAttributes(xpp, res);
15551    next(xpp);
15552    int eventType = nextNoWhitespace(xpp);
15553    while (eventType != XmlPullParser.END_TAG) {
15554  if (!parseStructureMapStructureMapGroupRuleDependentComponentContent(eventType, xpp, owner, res))
15555        unknownContent(xpp);
15556      eventType = nextNoWhitespace(xpp);
15557    }
15558    next(xpp);
15559    parseElementClose(res);
15560    return res;
15561  }
15562
15563  protected boolean parseStructureMapStructureMapGroupRuleDependentComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleDependentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15564      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15565        res.setNameElement(parseId(xpp));
15566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
15567        res.getVariable().add(parseString(xpp));
15568      } else if (!parseBackboneContent(eventType, xpp, res))
15569        return false;
15570    return true;
15571  }
15572
15573  protected Subscription parseSubscription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15574    Subscription res = new Subscription();
15575    parseDomainResourceAttributes(xpp, res);
15576    next(xpp);
15577    int eventType = nextNoWhitespace(xpp);
15578    while (eventType != XmlPullParser.END_TAG) {
15579  if (!parseSubscriptionContent(eventType, xpp, res))
15580        unknownContent(xpp);
15581      eventType = nextNoWhitespace(xpp);
15582    }
15583    next(xpp);
15584    parseElementClose(res);
15585    return res;
15586  }
15587
15588  protected boolean parseSubscriptionContent(int eventType, XmlPullParser xpp, Subscription res) throws XmlPullParserException, IOException, FHIRFormatError {
15589      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15590        res.setStatusElement(parseEnumeration(xpp, Subscription.SubscriptionStatus.NULL, new Subscription.SubscriptionStatusEnumFactory()));
15591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15592        res.getContact().add(parseContactPoint(xpp));
15593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
15594        res.setEndElement(parseInstant(xpp));
15595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15596        res.setReasonElement(parseString(xpp));
15597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
15598        res.setCriteriaElement(parseString(xpp));
15599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
15600        res.setErrorElement(parseString(xpp));
15601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("channel")) {
15602        res.setChannel(parseSubscriptionSubscriptionChannelComponent(xpp, res));
15603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
15604        res.getTag().add(parseCoding(xpp));
15605      } else if (!parseDomainResourceContent(eventType, xpp, res))
15606        return false;
15607    return true;
15608  }
15609
15610  protected Subscription.SubscriptionChannelComponent parseSubscriptionSubscriptionChannelComponent(XmlPullParser xpp, Subscription owner) throws XmlPullParserException, IOException, FHIRFormatError {
15611    Subscription.SubscriptionChannelComponent res = new Subscription.SubscriptionChannelComponent();
15612    parseBackboneAttributes(xpp, res);
15613    next(xpp);
15614    int eventType = nextNoWhitespace(xpp);
15615    while (eventType != XmlPullParser.END_TAG) {
15616  if (!parseSubscriptionSubscriptionChannelComponentContent(eventType, xpp, owner, res))
15617        unknownContent(xpp);
15618      eventType = nextNoWhitespace(xpp);
15619    }
15620    next(xpp);
15621    parseElementClose(res);
15622    return res;
15623  }
15624
15625  protected boolean parseSubscriptionSubscriptionChannelComponentContent(int eventType, XmlPullParser xpp, Subscription owner, Subscription.SubscriptionChannelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15626      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15627        res.setTypeElement(parseEnumeration(xpp, Subscription.SubscriptionChannelType.NULL, new Subscription.SubscriptionChannelTypeEnumFactory()));
15628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15629        res.setEndpointElement(parseUri(xpp));
15630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
15631        res.setPayloadElement(parseString(xpp));
15632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
15633        res.getHeader().add(parseString(xpp));
15634      } else if (!parseBackboneContent(eventType, xpp, res))
15635        return false;
15636    return true;
15637  }
15638
15639  protected Substance parseSubstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15640    Substance res = new Substance();
15641    parseDomainResourceAttributes(xpp, res);
15642    next(xpp);
15643    int eventType = nextNoWhitespace(xpp);
15644    while (eventType != XmlPullParser.END_TAG) {
15645  if (!parseSubstanceContent(eventType, xpp, res))
15646        unknownContent(xpp);
15647      eventType = nextNoWhitespace(xpp);
15648    }
15649    next(xpp);
15650    parseElementClose(res);
15651    return res;
15652  }
15653
15654  protected boolean parseSubstanceContent(int eventType, XmlPullParser xpp, Substance res) throws XmlPullParserException, IOException, FHIRFormatError {
15655      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15656        res.getIdentifier().add(parseIdentifier(xpp));
15657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15658        res.setStatusElement(parseEnumeration(xpp, Substance.FHIRSubstanceStatus.NULL, new Substance.FHIRSubstanceStatusEnumFactory()));
15659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15660        res.getCategory().add(parseCodeableConcept(xpp));
15661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15662        res.setCode(parseCodeableConcept(xpp));
15663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15664        res.setDescriptionElement(parseString(xpp));
15665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
15666        res.getInstance().add(parseSubstanceSubstanceInstanceComponent(xpp, res));
15667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
15668        res.getIngredient().add(parseSubstanceSubstanceIngredientComponent(xpp, res));
15669      } else if (!parseDomainResourceContent(eventType, xpp, res))
15670        return false;
15671    return true;
15672  }
15673
15674  protected Substance.SubstanceInstanceComponent parseSubstanceSubstanceInstanceComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
15675    Substance.SubstanceInstanceComponent res = new Substance.SubstanceInstanceComponent();
15676    parseBackboneAttributes(xpp, res);
15677    next(xpp);
15678    int eventType = nextNoWhitespace(xpp);
15679    while (eventType != XmlPullParser.END_TAG) {
15680  if (!parseSubstanceSubstanceInstanceComponentContent(eventType, xpp, owner, res))
15681        unknownContent(xpp);
15682      eventType = nextNoWhitespace(xpp);
15683    }
15684    next(xpp);
15685    parseElementClose(res);
15686    return res;
15687  }
15688
15689  protected boolean parseSubstanceSubstanceInstanceComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15690      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15691        res.setIdentifier(parseIdentifier(xpp));
15692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
15693        res.setExpiryElement(parseDateTime(xpp));
15694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15695        res.setQuantity(parseSimpleQuantity(xpp));
15696      } else if (!parseBackboneContent(eventType, xpp, res))
15697        return false;
15698    return true;
15699  }
15700
15701  protected Substance.SubstanceIngredientComponent parseSubstanceSubstanceIngredientComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
15702    Substance.SubstanceIngredientComponent res = new Substance.SubstanceIngredientComponent();
15703    parseBackboneAttributes(xpp, res);
15704    next(xpp);
15705    int eventType = nextNoWhitespace(xpp);
15706    while (eventType != XmlPullParser.END_TAG) {
15707  if (!parseSubstanceSubstanceIngredientComponentContent(eventType, xpp, owner, res))
15708        unknownContent(xpp);
15709      eventType = nextNoWhitespace(xpp);
15710    }
15711    next(xpp);
15712    parseElementClose(res);
15713    return res;
15714  }
15715
15716  protected boolean parseSubstanceSubstanceIngredientComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15717      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15718        res.setQuantity(parseRatio(xpp));
15719      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
15720        res.setSubstance(parseType("substance", xpp));
15721      } else if (!parseBackboneContent(eventType, xpp, res))
15722        return false;
15723    return true;
15724  }
15725
15726  protected SupplyDelivery parseSupplyDelivery(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15727    SupplyDelivery res = new SupplyDelivery();
15728    parseDomainResourceAttributes(xpp, res);
15729    next(xpp);
15730    int eventType = nextNoWhitespace(xpp);
15731    while (eventType != XmlPullParser.END_TAG) {
15732  if (!parseSupplyDeliveryContent(eventType, xpp, res))
15733        unknownContent(xpp);
15734      eventType = nextNoWhitespace(xpp);
15735    }
15736    next(xpp);
15737    parseElementClose(res);
15738    return res;
15739  }
15740
15741  protected boolean parseSupplyDeliveryContent(int eventType, XmlPullParser xpp, SupplyDelivery res) throws XmlPullParserException, IOException, FHIRFormatError {
15742      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15743        res.setIdentifier(parseIdentifier(xpp));
15744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
15745        res.getBasedOn().add(parseReference(xpp));
15746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
15747        res.getPartOf().add(parseReference(xpp));
15748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15749        res.setStatusElement(parseEnumeration(xpp, SupplyDelivery.SupplyDeliveryStatus.NULL, new SupplyDelivery.SupplyDeliveryStatusEnumFactory()));
15750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
15751        res.setPatient(parseReference(xpp));
15752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15753        res.setType(parseCodeableConcept(xpp));
15754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suppliedItem")) {
15755        res.setSuppliedItem(parseSupplyDeliverySupplyDeliverySuppliedItemComponent(xpp, res));
15756      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
15757        res.setOccurrence(parseType("occurrence", xpp));
15758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
15759        res.setSupplier(parseReference(xpp));
15760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
15761        res.setDestination(parseReference(xpp));
15762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
15763        res.getReceiver().add(parseReference(xpp));
15764      } else if (!parseDomainResourceContent(eventType, xpp, res))
15765        return false;
15766    return true;
15767  }
15768
15769  protected SupplyDelivery.SupplyDeliverySuppliedItemComponent parseSupplyDeliverySupplyDeliverySuppliedItemComponent(XmlPullParser xpp, SupplyDelivery owner) throws XmlPullParserException, IOException, FHIRFormatError {
15770    SupplyDelivery.SupplyDeliverySuppliedItemComponent res = new SupplyDelivery.SupplyDeliverySuppliedItemComponent();
15771    parseBackboneAttributes(xpp, res);
15772    next(xpp);
15773    int eventType = nextNoWhitespace(xpp);
15774    while (eventType != XmlPullParser.END_TAG) {
15775  if (!parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(eventType, xpp, owner, res))
15776        unknownContent(xpp);
15777      eventType = nextNoWhitespace(xpp);
15778    }
15779    next(xpp);
15780    parseElementClose(res);
15781    return res;
15782  }
15783
15784  protected boolean parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(int eventType, XmlPullParser xpp, SupplyDelivery owner, SupplyDelivery.SupplyDeliverySuppliedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15785      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15786        res.setQuantity(parseSimpleQuantity(xpp));
15787      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
15788        res.setItem(parseType("item", xpp));
15789      } else if (!parseBackboneContent(eventType, xpp, res))
15790        return false;
15791    return true;
15792  }
15793
15794  protected SupplyRequest parseSupplyRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15795    SupplyRequest res = new SupplyRequest();
15796    parseDomainResourceAttributes(xpp, res);
15797    next(xpp);
15798    int eventType = nextNoWhitespace(xpp);
15799    while (eventType != XmlPullParser.END_TAG) {
15800  if (!parseSupplyRequestContent(eventType, xpp, res))
15801        unknownContent(xpp);
15802      eventType = nextNoWhitespace(xpp);
15803    }
15804    next(xpp);
15805    parseElementClose(res);
15806    return res;
15807  }
15808
15809  protected boolean parseSupplyRequestContent(int eventType, XmlPullParser xpp, SupplyRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
15810      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15811        res.setIdentifier(parseIdentifier(xpp));
15812      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15813        res.setStatusElement(parseEnumeration(xpp, SupplyRequest.SupplyRequestStatus.NULL, new SupplyRequest.SupplyRequestStatusEnumFactory()));
15814      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15815        res.setCategory(parseCodeableConcept(xpp));
15816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
15817        res.setPriorityElement(parseEnumeration(xpp, SupplyRequest.RequestPriority.NULL, new SupplyRequest.RequestPriorityEnumFactory()));
15818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedItem")) {
15819        res.setOrderedItem(parseSupplyRequestSupplyRequestOrderedItemComponent(xpp, res));
15820      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
15821        res.setOccurrence(parseType("occurrence", xpp));
15822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
15823        res.setAuthoredOnElement(parseDateTime(xpp));
15824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
15825        res.setRequester(parseSupplyRequestSupplyRequestRequesterComponent(xpp, res));
15826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
15827        res.getSupplier().add(parseReference(xpp));
15828      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
15829        res.setReason(parseType("reason", xpp));
15830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverFrom")) {
15831        res.setDeliverFrom(parseReference(xpp));
15832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverTo")) {
15833        res.setDeliverTo(parseReference(xpp));
15834      } else if (!parseDomainResourceContent(eventType, xpp, res))
15835        return false;
15836    return true;
15837  }
15838
15839  protected SupplyRequest.SupplyRequestOrderedItemComponent parseSupplyRequestSupplyRequestOrderedItemComponent(XmlPullParser xpp, SupplyRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
15840    SupplyRequest.SupplyRequestOrderedItemComponent res = new SupplyRequest.SupplyRequestOrderedItemComponent();
15841    parseBackboneAttributes(xpp, res);
15842    next(xpp);
15843    int eventType = nextNoWhitespace(xpp);
15844    while (eventType != XmlPullParser.END_TAG) {
15845  if (!parseSupplyRequestSupplyRequestOrderedItemComponentContent(eventType, xpp, owner, res))
15846        unknownContent(xpp);
15847      eventType = nextNoWhitespace(xpp);
15848    }
15849    next(xpp);
15850    parseElementClose(res);
15851    return res;
15852  }
15853
15854  protected boolean parseSupplyRequestSupplyRequestOrderedItemComponentContent(int eventType, XmlPullParser xpp, SupplyRequest owner, SupplyRequest.SupplyRequestOrderedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15855      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15856        res.setQuantity(parseQuantity(xpp));
15857      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
15858        res.setItem(parseType("item", xpp));
15859      } else if (!parseBackboneContent(eventType, xpp, res))
15860        return false;
15861    return true;
15862  }
15863
15864  protected SupplyRequest.SupplyRequestRequesterComponent parseSupplyRequestSupplyRequestRequesterComponent(XmlPullParser xpp, SupplyRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
15865    SupplyRequest.SupplyRequestRequesterComponent res = new SupplyRequest.SupplyRequestRequesterComponent();
15866    parseBackboneAttributes(xpp, res);
15867    next(xpp);
15868    int eventType = nextNoWhitespace(xpp);
15869    while (eventType != XmlPullParser.END_TAG) {
15870  if (!parseSupplyRequestSupplyRequestRequesterComponentContent(eventType, xpp, owner, res))
15871        unknownContent(xpp);
15872      eventType = nextNoWhitespace(xpp);
15873    }
15874    next(xpp);
15875    parseElementClose(res);
15876    return res;
15877  }
15878
15879  protected boolean parseSupplyRequestSupplyRequestRequesterComponentContent(int eventType, XmlPullParser xpp, SupplyRequest owner, SupplyRequest.SupplyRequestRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15880      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
15881        res.setAgent(parseReference(xpp));
15882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
15883        res.setOnBehalfOf(parseReference(xpp));
15884      } else if (!parseBackboneContent(eventType, xpp, res))
15885        return false;
15886    return true;
15887  }
15888
15889  protected Task parseTask(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15890    Task res = new Task();
15891    parseDomainResourceAttributes(xpp, res);
15892    next(xpp);
15893    int eventType = nextNoWhitespace(xpp);
15894    while (eventType != XmlPullParser.END_TAG) {
15895  if (!parseTaskContent(eventType, xpp, res))
15896        unknownContent(xpp);
15897      eventType = nextNoWhitespace(xpp);
15898    }
15899    next(xpp);
15900    parseElementClose(res);
15901    return res;
15902  }
15903
15904  protected boolean parseTaskContent(int eventType, XmlPullParser xpp, Task res) throws XmlPullParserException, IOException, FHIRFormatError {
15905      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15906        res.getIdentifier().add(parseIdentifier(xpp));
15907      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
15908        res.setDefinition(parseType("definition", xpp));
15909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
15910        res.getBasedOn().add(parseReference(xpp));
15911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
15912        res.setGroupIdentifier(parseIdentifier(xpp));
15913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
15914        res.getPartOf().add(parseReference(xpp));
15915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15916        res.setStatusElement(parseEnumeration(xpp, Task.TaskStatus.NULL, new Task.TaskStatusEnumFactory()));
15917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
15918        res.setStatusReason(parseCodeableConcept(xpp));
15919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessStatus")) {
15920        res.setBusinessStatus(parseCodeableConcept(xpp));
15921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
15922        res.setIntentElement(parseEnumeration(xpp, Task.TaskIntent.NULL, new Task.TaskIntentEnumFactory()));
15923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
15924        res.setPriorityElement(parseEnumeration(xpp, Task.TaskPriority.NULL, new Task.TaskPriorityEnumFactory()));
15925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15926        res.setCode(parseCodeableConcept(xpp));
15927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15928        res.setDescriptionElement(parseString(xpp));
15929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
15930        res.setFocus(parseReference(xpp));
15931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("for")) {
15932        res.setFor(parseReference(xpp));
15933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
15934        res.setContext(parseReference(xpp));
15935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("executionPeriod")) {
15936        res.setExecutionPeriod(parsePeriod(xpp));
15937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
15938        res.setAuthoredOnElement(parseDateTime(xpp));
15939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
15940        res.setLastModifiedElement(parseDateTime(xpp));
15941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
15942        res.setRequester(parseTaskTaskRequesterComponent(xpp, res));
15943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
15944        res.getPerformerType().add(parseCodeableConcept(xpp));
15945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
15946        res.setOwner(parseReference(xpp));
15947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15948        res.setReason(parseCodeableConcept(xpp));
15949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
15950        res.getNote().add(parseAnnotation(xpp));
15951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
15952        res.getRelevantHistory().add(parseReference(xpp));
15953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restriction")) {
15954        res.setRestriction(parseTaskTaskRestrictionComponent(xpp, res));
15955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
15956        res.getInput().add(parseTaskParameterComponent(xpp, res));
15957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
15958        res.getOutput().add(parseTaskTaskOutputComponent(xpp, res));
15959      } else if (!parseDomainResourceContent(eventType, xpp, res))
15960        return false;
15961    return true;
15962  }
15963
15964  protected Task.TaskRequesterComponent parseTaskTaskRequesterComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
15965    Task.TaskRequesterComponent res = new Task.TaskRequesterComponent();
15966    parseBackboneAttributes(xpp, res);
15967    next(xpp);
15968    int eventType = nextNoWhitespace(xpp);
15969    while (eventType != XmlPullParser.END_TAG) {
15970  if (!parseTaskTaskRequesterComponentContent(eventType, xpp, owner, res))
15971        unknownContent(xpp);
15972      eventType = nextNoWhitespace(xpp);
15973    }
15974    next(xpp);
15975    parseElementClose(res);
15976    return res;
15977  }
15978
15979  protected boolean parseTaskTaskRequesterComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskRequesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15980      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
15981        res.setAgent(parseReference(xpp));
15982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
15983        res.setOnBehalfOf(parseReference(xpp));
15984      } else if (!parseBackboneContent(eventType, xpp, res))
15985        return false;
15986    return true;
15987  }
15988
15989  protected Task.TaskRestrictionComponent parseTaskTaskRestrictionComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
15990    Task.TaskRestrictionComponent res = new Task.TaskRestrictionComponent();
15991    parseBackboneAttributes(xpp, res);
15992    next(xpp);
15993    int eventType = nextNoWhitespace(xpp);
15994    while (eventType != XmlPullParser.END_TAG) {
15995  if (!parseTaskTaskRestrictionComponentContent(eventType, xpp, owner, res))
15996        unknownContent(xpp);
15997      eventType = nextNoWhitespace(xpp);
15998    }
15999    next(xpp);
16000    parseElementClose(res);
16001    return res;
16002  }
16003
16004  protected boolean parseTaskTaskRestrictionComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskRestrictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16005      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repetitions")) {
16006        res.setRepetitionsElement(parsePositiveInt(xpp));
16007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
16008        res.setPeriod(parsePeriod(xpp));
16009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
16010        res.getRecipient().add(parseReference(xpp));
16011      } else if (!parseBackboneContent(eventType, xpp, res))
16012        return false;
16013    return true;
16014  }
16015
16016  protected Task.ParameterComponent parseTaskParameterComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
16017    Task.ParameterComponent res = new Task.ParameterComponent();
16018    parseBackboneAttributes(xpp, res);
16019    next(xpp);
16020    int eventType = nextNoWhitespace(xpp);
16021    while (eventType != XmlPullParser.END_TAG) {
16022  if (!parseTaskParameterComponentContent(eventType, xpp, owner, res))
16023        unknownContent(xpp);
16024      eventType = nextNoWhitespace(xpp);
16025    }
16026    next(xpp);
16027    parseElementClose(res);
16028    return res;
16029  }
16030
16031  protected boolean parseTaskParameterComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.ParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16032      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16033        res.setType(parseCodeableConcept(xpp));
16034      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16035        res.setValue(parseType("value", xpp));
16036      } else if (!parseBackboneContent(eventType, xpp, res))
16037        return false;
16038    return true;
16039  }
16040
16041  protected Task.TaskOutputComponent parseTaskTaskOutputComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
16042    Task.TaskOutputComponent res = new Task.TaskOutputComponent();
16043    parseBackboneAttributes(xpp, res);
16044    next(xpp);
16045    int eventType = nextNoWhitespace(xpp);
16046    while (eventType != XmlPullParser.END_TAG) {
16047  if (!parseTaskTaskOutputComponentContent(eventType, xpp, owner, res))
16048        unknownContent(xpp);
16049      eventType = nextNoWhitespace(xpp);
16050    }
16051    next(xpp);
16052    parseElementClose(res);
16053    return res;
16054  }
16055
16056  protected boolean parseTaskTaskOutputComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskOutputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16057      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16058        res.setType(parseCodeableConcept(xpp));
16059      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16060        res.setValue(parseType("value", xpp));
16061      } else if (!parseBackboneContent(eventType, xpp, res))
16062        return false;
16063    return true;
16064  }
16065
16066  protected TestReport parseTestReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16067    TestReport res = new TestReport();
16068    parseDomainResourceAttributes(xpp, res);
16069    next(xpp);
16070    int eventType = nextNoWhitespace(xpp);
16071    while (eventType != XmlPullParser.END_TAG) {
16072  if (!parseTestReportContent(eventType, xpp, res))
16073        unknownContent(xpp);
16074      eventType = nextNoWhitespace(xpp);
16075    }
16076    next(xpp);
16077    parseElementClose(res);
16078    return res;
16079  }
16080
16081  protected boolean parseTestReportContent(int eventType, XmlPullParser xpp, TestReport res) throws XmlPullParserException, IOException, FHIRFormatError {
16082      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16083        res.setIdentifier(parseIdentifier(xpp));
16084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16085        res.setNameElement(parseString(xpp));
16086      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16087        res.setStatusElement(parseEnumeration(xpp, TestReport.TestReportStatus.NULL, new TestReport.TestReportStatusEnumFactory()));
16088      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testScript")) {
16089        res.setTestScript(parseReference(xpp));
16090      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
16091        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportResult.NULL, new TestReport.TestReportResultEnumFactory()));
16092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
16093        res.setScoreElement(parseDecimal(xpp));
16094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tester")) {
16095        res.setTesterElement(parseString(xpp));
16096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
16097        res.setIssuedElement(parseDateTime(xpp));
16098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
16099        res.getParticipant().add(parseTestReportTestReportParticipantComponent(xpp, res));
16100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
16101        res.setSetup(parseTestReportTestReportSetupComponent(xpp, res));
16102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
16103        res.getTest().add(parseTestReportTestReportTestComponent(xpp, res));
16104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
16105        res.setTeardown(parseTestReportTestReportTeardownComponent(xpp, res));
16106      } else if (!parseDomainResourceContent(eventType, xpp, res))
16107        return false;
16108    return true;
16109  }
16110
16111  protected TestReport.TestReportParticipantComponent parseTestReportTestReportParticipantComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16112    TestReport.TestReportParticipantComponent res = new TestReport.TestReportParticipantComponent();
16113    parseBackboneAttributes(xpp, res);
16114    next(xpp);
16115    int eventType = nextNoWhitespace(xpp);
16116    while (eventType != XmlPullParser.END_TAG) {
16117  if (!parseTestReportTestReportParticipantComponentContent(eventType, xpp, owner, res))
16118        unknownContent(xpp);
16119      eventType = nextNoWhitespace(xpp);
16120    }
16121    next(xpp);
16122    parseElementClose(res);
16123    return res;
16124  }
16125
16126  protected boolean parseTestReportTestReportParticipantComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16127      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16128        res.setTypeElement(parseEnumeration(xpp, TestReport.TestReportParticipantType.NULL, new TestReport.TestReportParticipantTypeEnumFactory()));
16129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
16130        res.setUriElement(parseUri(xpp));
16131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
16132        res.setDisplayElement(parseString(xpp));
16133      } else if (!parseBackboneContent(eventType, xpp, res))
16134        return false;
16135    return true;
16136  }
16137
16138  protected TestReport.TestReportSetupComponent parseTestReportTestReportSetupComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16139    TestReport.TestReportSetupComponent res = new TestReport.TestReportSetupComponent();
16140    parseBackboneAttributes(xpp, res);
16141    next(xpp);
16142    int eventType = nextNoWhitespace(xpp);
16143    while (eventType != XmlPullParser.END_TAG) {
16144  if (!parseTestReportTestReportSetupComponentContent(eventType, xpp, owner, res))
16145        unknownContent(xpp);
16146      eventType = nextNoWhitespace(xpp);
16147    }
16148    next(xpp);
16149    parseElementClose(res);
16150    return res;
16151  }
16152
16153  protected boolean parseTestReportTestReportSetupComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16154      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16155        res.getAction().add(parseTestReportSetupActionComponent(xpp, owner));
16156      } else if (!parseBackboneContent(eventType, xpp, res))
16157        return false;
16158    return true;
16159  }
16160
16161  protected TestReport.SetupActionComponent parseTestReportSetupActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16162    TestReport.SetupActionComponent res = new TestReport.SetupActionComponent();
16163    parseBackboneAttributes(xpp, res);
16164    next(xpp);
16165    int eventType = nextNoWhitespace(xpp);
16166    while (eventType != XmlPullParser.END_TAG) {
16167  if (!parseTestReportSetupActionComponentContent(eventType, xpp, owner, res))
16168        unknownContent(xpp);
16169      eventType = nextNoWhitespace(xpp);
16170    }
16171    next(xpp);
16172    parseElementClose(res);
16173    return res;
16174  }
16175
16176  protected boolean parseTestReportSetupActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16177      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
16178        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
16179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
16180        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
16181      } else if (!parseBackboneContent(eventType, xpp, res))
16182        return false;
16183    return true;
16184  }
16185
16186  protected TestReport.SetupActionOperationComponent parseTestReportSetupActionOperationComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16187    TestReport.SetupActionOperationComponent res = new TestReport.SetupActionOperationComponent();
16188    parseBackboneAttributes(xpp, res);
16189    next(xpp);
16190    int eventType = nextNoWhitespace(xpp);
16191    while (eventType != XmlPullParser.END_TAG) {
16192  if (!parseTestReportSetupActionOperationComponentContent(eventType, xpp, owner, res))
16193        unknownContent(xpp);
16194      eventType = nextNoWhitespace(xpp);
16195    }
16196    next(xpp);
16197    parseElementClose(res);
16198    return res;
16199  }
16200
16201  protected boolean parseTestReportSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16202      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
16203        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
16204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
16205        res.setMessageElement(parseMarkdown(xpp));
16206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
16207        res.setDetailElement(parseUri(xpp));
16208      } else if (!parseBackboneContent(eventType, xpp, res))
16209        return false;
16210    return true;
16211  }
16212
16213  protected TestReport.SetupActionAssertComponent parseTestReportSetupActionAssertComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16214    TestReport.SetupActionAssertComponent res = new TestReport.SetupActionAssertComponent();
16215    parseBackboneAttributes(xpp, res);
16216    next(xpp);
16217    int eventType = nextNoWhitespace(xpp);
16218    while (eventType != XmlPullParser.END_TAG) {
16219  if (!parseTestReportSetupActionAssertComponentContent(eventType, xpp, owner, res))
16220        unknownContent(xpp);
16221      eventType = nextNoWhitespace(xpp);
16222    }
16223    next(xpp);
16224    parseElementClose(res);
16225    return res;
16226  }
16227
16228  protected boolean parseTestReportSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16229      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
16230        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
16231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
16232        res.setMessageElement(parseMarkdown(xpp));
16233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
16234        res.setDetailElement(parseString(xpp));
16235      } else if (!parseBackboneContent(eventType, xpp, res))
16236        return false;
16237    return true;
16238  }
16239
16240  protected TestReport.TestReportTestComponent parseTestReportTestReportTestComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16241    TestReport.TestReportTestComponent res = new TestReport.TestReportTestComponent();
16242    parseBackboneAttributes(xpp, res);
16243    next(xpp);
16244    int eventType = nextNoWhitespace(xpp);
16245    while (eventType != XmlPullParser.END_TAG) {
16246  if (!parseTestReportTestReportTestComponentContent(eventType, xpp, owner, res))
16247        unknownContent(xpp);
16248      eventType = nextNoWhitespace(xpp);
16249    }
16250    next(xpp);
16251    parseElementClose(res);
16252    return res;
16253  }
16254
16255  protected boolean parseTestReportTestReportTestComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16256      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16257        res.setNameElement(parseString(xpp));
16258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16259        res.setDescriptionElement(parseString(xpp));
16260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16261        res.getAction().add(parseTestReportTestActionComponent(xpp, owner));
16262      } else if (!parseBackboneContent(eventType, xpp, res))
16263        return false;
16264    return true;
16265  }
16266
16267  protected TestReport.TestActionComponent parseTestReportTestActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16268    TestReport.TestActionComponent res = new TestReport.TestActionComponent();
16269    parseBackboneAttributes(xpp, res);
16270    next(xpp);
16271    int eventType = nextNoWhitespace(xpp);
16272    while (eventType != XmlPullParser.END_TAG) {
16273  if (!parseTestReportTestActionComponentContent(eventType, xpp, owner, res))
16274        unknownContent(xpp);
16275      eventType = nextNoWhitespace(xpp);
16276    }
16277    next(xpp);
16278    parseElementClose(res);
16279    return res;
16280  }
16281
16282  protected boolean parseTestReportTestActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16283      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
16284        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
16285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
16286        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
16287      } else if (!parseBackboneContent(eventType, xpp, res))
16288        return false;
16289    return true;
16290  }
16291
16292  protected TestReport.TestReportTeardownComponent parseTestReportTestReportTeardownComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16293    TestReport.TestReportTeardownComponent res = new TestReport.TestReportTeardownComponent();
16294    parseBackboneAttributes(xpp, res);
16295    next(xpp);
16296    int eventType = nextNoWhitespace(xpp);
16297    while (eventType != XmlPullParser.END_TAG) {
16298  if (!parseTestReportTestReportTeardownComponentContent(eventType, xpp, owner, res))
16299        unknownContent(xpp);
16300      eventType = nextNoWhitespace(xpp);
16301    }
16302    next(xpp);
16303    parseElementClose(res);
16304    return res;
16305  }
16306
16307  protected boolean parseTestReportTestReportTeardownComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16308      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16309        res.getAction().add(parseTestReportTeardownActionComponent(xpp, owner));
16310      } else if (!parseBackboneContent(eventType, xpp, res))
16311        return false;
16312    return true;
16313  }
16314
16315  protected TestReport.TeardownActionComponent parseTestReportTeardownActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
16316    TestReport.TeardownActionComponent res = new TestReport.TeardownActionComponent();
16317    parseBackboneAttributes(xpp, res);
16318    next(xpp);
16319    int eventType = nextNoWhitespace(xpp);
16320    while (eventType != XmlPullParser.END_TAG) {
16321  if (!parseTestReportTeardownActionComponentContent(eventType, xpp, owner, res))
16322        unknownContent(xpp);
16323      eventType = nextNoWhitespace(xpp);
16324    }
16325    next(xpp);
16326    parseElementClose(res);
16327    return res;
16328  }
16329
16330  protected boolean parseTestReportTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16331      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
16332        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
16333      } else if (!parseBackboneContent(eventType, xpp, res))
16334        return false;
16335    return true;
16336  }
16337
16338  protected TestScript parseTestScript(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16339    TestScript res = new TestScript();
16340    parseDomainResourceAttributes(xpp, res);
16341    next(xpp);
16342    int eventType = nextNoWhitespace(xpp);
16343    while (eventType != XmlPullParser.END_TAG) {
16344  if (!parseTestScriptContent(eventType, xpp, res))
16345        unknownContent(xpp);
16346      eventType = nextNoWhitespace(xpp);
16347    }
16348    next(xpp);
16349    parseElementClose(res);
16350    return res;
16351  }
16352
16353  protected boolean parseTestScriptContent(int eventType, XmlPullParser xpp, TestScript res) throws XmlPullParserException, IOException, FHIRFormatError {
16354      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16355        res.setUrlElement(parseUri(xpp));
16356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16357        res.setIdentifier(parseIdentifier(xpp));
16358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
16359        res.setVersionElement(parseString(xpp));
16360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16361        res.setNameElement(parseString(xpp));
16362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
16363        res.setTitleElement(parseString(xpp));
16364      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16365        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
16367        res.setExperimentalElement(parseBoolean(xpp));
16368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16369        res.setDateElement(parseDateTime(xpp));
16370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
16371        res.setPublisherElement(parseString(xpp));
16372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16373        res.getContact().add(parseContactDetail(xpp));
16374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16375        res.setDescriptionElement(parseMarkdown(xpp));
16376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
16377        res.getUseContext().add(parseUsageContext(xpp));
16378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16379        res.getJurisdiction().add(parseCodeableConcept(xpp));
16380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16381        res.setPurposeElement(parseMarkdown(xpp));
16382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
16383        res.setCopyrightElement(parseMarkdown(xpp));
16384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
16385        res.getOrigin().add(parseTestScriptTestScriptOriginComponent(xpp, res));
16386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
16387        res.getDestination().add(parseTestScriptTestScriptDestinationComponent(xpp, res));
16388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
16389        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, res));
16390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixture")) {
16391        res.getFixture().add(parseTestScriptTestScriptFixtureComponent(xpp, res));
16392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
16393        res.getProfile().add(parseReference(xpp));
16394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
16395        res.getVariable().add(parseTestScriptTestScriptVariableComponent(xpp, res));
16396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
16397        res.getRule().add(parseTestScriptTestScriptRuleComponent(xpp, res));
16398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
16399        res.getRuleset().add(parseTestScriptTestScriptRulesetComponent(xpp, res));
16400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
16401        res.setSetup(parseTestScriptTestScriptSetupComponent(xpp, res));
16402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
16403        res.getTest().add(parseTestScriptTestScriptTestComponent(xpp, res));
16404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
16405        res.setTeardown(parseTestScriptTestScriptTeardownComponent(xpp, res));
16406      } else if (!parseDomainResourceContent(eventType, xpp, res))
16407        return false;
16408    return true;
16409  }
16410
16411  protected TestScript.TestScriptOriginComponent parseTestScriptTestScriptOriginComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16412    TestScript.TestScriptOriginComponent res = new TestScript.TestScriptOriginComponent();
16413    parseBackboneAttributes(xpp, res);
16414    next(xpp);
16415    int eventType = nextNoWhitespace(xpp);
16416    while (eventType != XmlPullParser.END_TAG) {
16417  if (!parseTestScriptTestScriptOriginComponentContent(eventType, xpp, owner, res))
16418        unknownContent(xpp);
16419      eventType = nextNoWhitespace(xpp);
16420    }
16421    next(xpp);
16422    parseElementClose(res);
16423    return res;
16424  }
16425
16426  protected boolean parseTestScriptTestScriptOriginComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptOriginComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16427      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
16428        res.setIndexElement(parseInteger(xpp));
16429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
16430        res.setProfile(parseCoding(xpp));
16431      } else if (!parseBackboneContent(eventType, xpp, res))
16432        return false;
16433    return true;
16434  }
16435
16436  protected TestScript.TestScriptDestinationComponent parseTestScriptTestScriptDestinationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16437    TestScript.TestScriptDestinationComponent res = new TestScript.TestScriptDestinationComponent();
16438    parseBackboneAttributes(xpp, res);
16439    next(xpp);
16440    int eventType = nextNoWhitespace(xpp);
16441    while (eventType != XmlPullParser.END_TAG) {
16442  if (!parseTestScriptTestScriptDestinationComponentContent(eventType, xpp, owner, res))
16443        unknownContent(xpp);
16444      eventType = nextNoWhitespace(xpp);
16445    }
16446    next(xpp);
16447    parseElementClose(res);
16448    return res;
16449  }
16450
16451  protected boolean parseTestScriptTestScriptDestinationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16452      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
16453        res.setIndexElement(parseInteger(xpp));
16454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
16455        res.setProfile(parseCoding(xpp));
16456      } else if (!parseBackboneContent(eventType, xpp, res))
16457        return false;
16458    return true;
16459  }
16460
16461  protected TestScript.TestScriptMetadataComponent parseTestScriptTestScriptMetadataComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16462    TestScript.TestScriptMetadataComponent res = new TestScript.TestScriptMetadataComponent();
16463    parseBackboneAttributes(xpp, res);
16464    next(xpp);
16465    int eventType = nextNoWhitespace(xpp);
16466    while (eventType != XmlPullParser.END_TAG) {
16467  if (!parseTestScriptTestScriptMetadataComponentContent(eventType, xpp, owner, res))
16468        unknownContent(xpp);
16469      eventType = nextNoWhitespace(xpp);
16470    }
16471    next(xpp);
16472    parseElementClose(res);
16473    return res;
16474  }
16475
16476  protected boolean parseTestScriptTestScriptMetadataComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16477      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
16478        res.getLink().add(parseTestScriptTestScriptMetadataLinkComponent(xpp, owner));
16479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
16480        res.getCapability().add(parseTestScriptTestScriptMetadataCapabilityComponent(xpp, owner));
16481      } else if (!parseBackboneContent(eventType, xpp, res))
16482        return false;
16483    return true;
16484  }
16485
16486  protected TestScript.TestScriptMetadataLinkComponent parseTestScriptTestScriptMetadataLinkComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16487    TestScript.TestScriptMetadataLinkComponent res = new TestScript.TestScriptMetadataLinkComponent();
16488    parseBackboneAttributes(xpp, res);
16489    next(xpp);
16490    int eventType = nextNoWhitespace(xpp);
16491    while (eventType != XmlPullParser.END_TAG) {
16492  if (!parseTestScriptTestScriptMetadataLinkComponentContent(eventType, xpp, owner, res))
16493        unknownContent(xpp);
16494      eventType = nextNoWhitespace(xpp);
16495    }
16496    next(xpp);
16497    parseElementClose(res);
16498    return res;
16499  }
16500
16501  protected boolean parseTestScriptTestScriptMetadataLinkComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16502      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16503        res.setUrlElement(parseUri(xpp));
16504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16505        res.setDescriptionElement(parseString(xpp));
16506      } else if (!parseBackboneContent(eventType, xpp, res))
16507        return false;
16508    return true;
16509  }
16510
16511  protected TestScript.TestScriptMetadataCapabilityComponent parseTestScriptTestScriptMetadataCapabilityComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16512    TestScript.TestScriptMetadataCapabilityComponent res = new TestScript.TestScriptMetadataCapabilityComponent();
16513    parseBackboneAttributes(xpp, res);
16514    next(xpp);
16515    int eventType = nextNoWhitespace(xpp);
16516    while (eventType != XmlPullParser.END_TAG) {
16517  if (!parseTestScriptTestScriptMetadataCapabilityComponentContent(eventType, xpp, owner, res))
16518        unknownContent(xpp);
16519      eventType = nextNoWhitespace(xpp);
16520    }
16521    next(xpp);
16522    parseElementClose(res);
16523    return res;
16524  }
16525
16526  protected boolean parseTestScriptTestScriptMetadataCapabilityComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16527      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
16528        res.setRequiredElement(parseBoolean(xpp));
16529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validated")) {
16530        res.setValidatedElement(parseBoolean(xpp));
16531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16532        res.setDescriptionElement(parseString(xpp));
16533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
16534        res.getOrigin().add(parseInteger(xpp));
16535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
16536        res.setDestinationElement(parseInteger(xpp));
16537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
16538        res.getLink().add(parseUri(xpp));
16539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capabilities")) {
16540        res.setCapabilities(parseReference(xpp));
16541      } else if (!parseBackboneContent(eventType, xpp, res))
16542        return false;
16543    return true;
16544  }
16545
16546  protected TestScript.TestScriptFixtureComponent parseTestScriptTestScriptFixtureComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16547    TestScript.TestScriptFixtureComponent res = new TestScript.TestScriptFixtureComponent();
16548    parseBackboneAttributes(xpp, res);
16549    next(xpp);
16550    int eventType = nextNoWhitespace(xpp);
16551    while (eventType != XmlPullParser.END_TAG) {
16552  if (!parseTestScriptTestScriptFixtureComponentContent(eventType, xpp, owner, res))
16553        unknownContent(xpp);
16554      eventType = nextNoWhitespace(xpp);
16555    }
16556    next(xpp);
16557    parseElementClose(res);
16558    return res;
16559  }
16560
16561  protected boolean parseTestScriptTestScriptFixtureComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptFixtureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16562      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autocreate")) {
16563        res.setAutocreateElement(parseBoolean(xpp));
16564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autodelete")) {
16565        res.setAutodeleteElement(parseBoolean(xpp));
16566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16567        res.setResource(parseReference(xpp));
16568      } else if (!parseBackboneContent(eventType, xpp, res))
16569        return false;
16570    return true;
16571  }
16572
16573  protected TestScript.TestScriptVariableComponent parseTestScriptTestScriptVariableComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16574    TestScript.TestScriptVariableComponent res = new TestScript.TestScriptVariableComponent();
16575    parseBackboneAttributes(xpp, res);
16576    next(xpp);
16577    int eventType = nextNoWhitespace(xpp);
16578    while (eventType != XmlPullParser.END_TAG) {
16579  if (!parseTestScriptTestScriptVariableComponentContent(eventType, xpp, owner, res))
16580        unknownContent(xpp);
16581      eventType = nextNoWhitespace(xpp);
16582    }
16583    next(xpp);
16584    parseElementClose(res);
16585    return res;
16586  }
16587
16588  protected boolean parseTestScriptTestScriptVariableComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptVariableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16589      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16590        res.setNameElement(parseString(xpp));
16591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("defaultValue")) {
16592        res.setDefaultValueElement(parseString(xpp));
16593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16594        res.setDescriptionElement(parseString(xpp));
16595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
16596        res.setExpressionElement(parseString(xpp));
16597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
16598        res.setHeaderFieldElement(parseString(xpp));
16599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hint")) {
16600        res.setHintElement(parseString(xpp));
16601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
16602        res.setPathElement(parseString(xpp));
16603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
16604        res.setSourceIdElement(parseId(xpp));
16605      } else if (!parseBackboneContent(eventType, xpp, res))
16606        return false;
16607    return true;
16608  }
16609
16610  protected TestScript.TestScriptRuleComponent parseTestScriptTestScriptRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16611    TestScript.TestScriptRuleComponent res = new TestScript.TestScriptRuleComponent();
16612    parseBackboneAttributes(xpp, res);
16613    next(xpp);
16614    int eventType = nextNoWhitespace(xpp);
16615    while (eventType != XmlPullParser.END_TAG) {
16616  if (!parseTestScriptTestScriptRuleComponentContent(eventType, xpp, owner, res))
16617        unknownContent(xpp);
16618      eventType = nextNoWhitespace(xpp);
16619    }
16620    next(xpp);
16621    parseElementClose(res);
16622    return res;
16623  }
16624
16625  protected boolean parseTestScriptTestScriptRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16626      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16627        res.setResource(parseReference(xpp));
16628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
16629        res.getParam().add(parseTestScriptRuleParamComponent(xpp, owner));
16630      } else if (!parseBackboneContent(eventType, xpp, res))
16631        return false;
16632    return true;
16633  }
16634
16635  protected TestScript.RuleParamComponent parseTestScriptRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16636    TestScript.RuleParamComponent res = new TestScript.RuleParamComponent();
16637    parseBackboneAttributes(xpp, res);
16638    next(xpp);
16639    int eventType = nextNoWhitespace(xpp);
16640    while (eventType != XmlPullParser.END_TAG) {
16641  if (!parseTestScriptRuleParamComponentContent(eventType, xpp, owner, res))
16642        unknownContent(xpp);
16643      eventType = nextNoWhitespace(xpp);
16644    }
16645    next(xpp);
16646    parseElementClose(res);
16647    return res;
16648  }
16649
16650  protected boolean parseTestScriptRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16651      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16652        res.setNameElement(parseString(xpp));
16653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16654        res.setValueElement(parseString(xpp));
16655      } else if (!parseBackboneContent(eventType, xpp, res))
16656        return false;
16657    return true;
16658  }
16659
16660  protected TestScript.TestScriptRulesetComponent parseTestScriptTestScriptRulesetComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16661    TestScript.TestScriptRulesetComponent res = new TestScript.TestScriptRulesetComponent();
16662    parseBackboneAttributes(xpp, res);
16663    next(xpp);
16664    int eventType = nextNoWhitespace(xpp);
16665    while (eventType != XmlPullParser.END_TAG) {
16666  if (!parseTestScriptTestScriptRulesetComponentContent(eventType, xpp, owner, res))
16667        unknownContent(xpp);
16668      eventType = nextNoWhitespace(xpp);
16669    }
16670    next(xpp);
16671    parseElementClose(res);
16672    return res;
16673  }
16674
16675  protected boolean parseTestScriptTestScriptRulesetComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptRulesetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16676      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16677        res.setResource(parseReference(xpp));
16678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
16679        res.getRule().add(parseTestScriptRulesetRuleComponent(xpp, owner));
16680      } else if (!parseBackboneContent(eventType, xpp, res))
16681        return false;
16682    return true;
16683  }
16684
16685  protected TestScript.RulesetRuleComponent parseTestScriptRulesetRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16686    TestScript.RulesetRuleComponent res = new TestScript.RulesetRuleComponent();
16687    parseBackboneAttributes(xpp, res);
16688    next(xpp);
16689    int eventType = nextNoWhitespace(xpp);
16690    while (eventType != XmlPullParser.END_TAG) {
16691  if (!parseTestScriptRulesetRuleComponentContent(eventType, xpp, owner, res))
16692        unknownContent(xpp);
16693      eventType = nextNoWhitespace(xpp);
16694    }
16695    next(xpp);
16696    parseElementClose(res);
16697    return res;
16698  }
16699
16700  protected boolean parseTestScriptRulesetRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RulesetRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16701      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
16702        res.setRuleIdElement(parseId(xpp));
16703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
16704        res.getParam().add(parseTestScriptRulesetRuleParamComponent(xpp, owner));
16705      } else if (!parseBackboneContent(eventType, xpp, res))
16706        return false;
16707    return true;
16708  }
16709
16710  protected TestScript.RulesetRuleParamComponent parseTestScriptRulesetRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16711    TestScript.RulesetRuleParamComponent res = new TestScript.RulesetRuleParamComponent();
16712    parseBackboneAttributes(xpp, res);
16713    next(xpp);
16714    int eventType = nextNoWhitespace(xpp);
16715    while (eventType != XmlPullParser.END_TAG) {
16716  if (!parseTestScriptRulesetRuleParamComponentContent(eventType, xpp, owner, res))
16717        unknownContent(xpp);
16718      eventType = nextNoWhitespace(xpp);
16719    }
16720    next(xpp);
16721    parseElementClose(res);
16722    return res;
16723  }
16724
16725  protected boolean parseTestScriptRulesetRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.RulesetRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16726      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16727        res.setNameElement(parseString(xpp));
16728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16729        res.setValueElement(parseString(xpp));
16730      } else if (!parseBackboneContent(eventType, xpp, res))
16731        return false;
16732    return true;
16733  }
16734
16735  protected TestScript.TestScriptSetupComponent parseTestScriptTestScriptSetupComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16736    TestScript.TestScriptSetupComponent res = new TestScript.TestScriptSetupComponent();
16737    parseBackboneAttributes(xpp, res);
16738    next(xpp);
16739    int eventType = nextNoWhitespace(xpp);
16740    while (eventType != XmlPullParser.END_TAG) {
16741  if (!parseTestScriptTestScriptSetupComponentContent(eventType, xpp, owner, res))
16742        unknownContent(xpp);
16743      eventType = nextNoWhitespace(xpp);
16744    }
16745    next(xpp);
16746    parseElementClose(res);
16747    return res;
16748  }
16749
16750  protected boolean parseTestScriptTestScriptSetupComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16751      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
16752        res.getAction().add(parseTestScriptSetupActionComponent(xpp, owner));
16753      } else if (!parseBackboneContent(eventType, xpp, res))
16754        return false;
16755    return true;
16756  }
16757
16758  protected TestScript.SetupActionComponent parseTestScriptSetupActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16759    TestScript.SetupActionComponent res = new TestScript.SetupActionComponent();
16760    parseBackboneAttributes(xpp, res);
16761    next(xpp);
16762    int eventType = nextNoWhitespace(xpp);
16763    while (eventType != XmlPullParser.END_TAG) {
16764  if (!parseTestScriptSetupActionComponentContent(eventType, xpp, owner, res))
16765        unknownContent(xpp);
16766      eventType = nextNoWhitespace(xpp);
16767    }
16768    next(xpp);
16769    parseElementClose(res);
16770    return res;
16771  }
16772
16773  protected boolean parseTestScriptSetupActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16774      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
16775        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
16776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
16777        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
16778      } else if (!parseBackboneContent(eventType, xpp, res))
16779        return false;
16780    return true;
16781  }
16782
16783  protected TestScript.SetupActionOperationComponent parseTestScriptSetupActionOperationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16784    TestScript.SetupActionOperationComponent res = new TestScript.SetupActionOperationComponent();
16785    parseBackboneAttributes(xpp, res);
16786    next(xpp);
16787    int eventType = nextNoWhitespace(xpp);
16788    while (eventType != XmlPullParser.END_TAG) {
16789  if (!parseTestScriptSetupActionOperationComponentContent(eventType, xpp, owner, res))
16790        unknownContent(xpp);
16791      eventType = nextNoWhitespace(xpp);
16792    }
16793    next(xpp);
16794    parseElementClose(res);
16795    return res;
16796  }
16797
16798  protected boolean parseTestScriptSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16799      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16800        res.setType(parseCoding(xpp));
16801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16802        res.setResourceElement(parseCode(xpp));
16803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
16804        res.setLabelElement(parseString(xpp));
16805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16806        res.setDescriptionElement(parseString(xpp));
16807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accept")) {
16808        res.setAcceptElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
16809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
16810        res.setContentTypeElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
16811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
16812        res.setDestinationElement(parseInteger(xpp));
16813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encodeRequestUrl")) {
16814        res.setEncodeRequestUrlElement(parseBoolean(xpp));
16815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
16816        res.setOriginElement(parseInteger(xpp));
16817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
16818        res.setParamsElement(parseString(xpp));
16819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestHeader")) {
16820        res.getRequestHeader().add(parseTestScriptSetupActionOperationRequestHeaderComponent(xpp, owner));
16821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
16822        res.setRequestIdElement(parseId(xpp));
16823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseId")) {
16824        res.setResponseIdElement(parseId(xpp));
16825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
16826        res.setSourceIdElement(parseId(xpp));
16827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
16828        res.setTargetIdElement(parseId(xpp));
16829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16830        res.setUrlElement(parseString(xpp));
16831      } else if (!parseBackboneContent(eventType, xpp, res))
16832        return false;
16833    return true;
16834  }
16835
16836  protected TestScript.SetupActionOperationRequestHeaderComponent parseTestScriptSetupActionOperationRequestHeaderComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16837    TestScript.SetupActionOperationRequestHeaderComponent res = new TestScript.SetupActionOperationRequestHeaderComponent();
16838    parseBackboneAttributes(xpp, res);
16839    next(xpp);
16840    int eventType = nextNoWhitespace(xpp);
16841    while (eventType != XmlPullParser.END_TAG) {
16842  if (!parseTestScriptSetupActionOperationRequestHeaderComponentContent(eventType, xpp, owner, res))
16843        unknownContent(xpp);
16844      eventType = nextNoWhitespace(xpp);
16845    }
16846    next(xpp);
16847    parseElementClose(res);
16848    return res;
16849  }
16850
16851  protected boolean parseTestScriptSetupActionOperationRequestHeaderComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationRequestHeaderComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16852      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("field")) {
16853        res.setFieldElement(parseString(xpp));
16854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16855        res.setValueElement(parseString(xpp));
16856      } else if (!parseBackboneContent(eventType, xpp, res))
16857        return false;
16858    return true;
16859  }
16860
16861  protected TestScript.SetupActionAssertComponent parseTestScriptSetupActionAssertComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16862    TestScript.SetupActionAssertComponent res = new TestScript.SetupActionAssertComponent();
16863    parseBackboneAttributes(xpp, res);
16864    next(xpp);
16865    int eventType = nextNoWhitespace(xpp);
16866    while (eventType != XmlPullParser.END_TAG) {
16867  if (!parseTestScriptSetupActionAssertComponentContent(eventType, xpp, owner, res))
16868        unknownContent(xpp);
16869      eventType = nextNoWhitespace(xpp);
16870    }
16871    next(xpp);
16872    parseElementClose(res);
16873    return res;
16874  }
16875
16876  protected boolean parseTestScriptSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16877      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
16878        res.setLabelElement(parseString(xpp));
16879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16880        res.setDescriptionElement(parseString(xpp));
16881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
16882        res.setDirectionElement(parseEnumeration(xpp, TestScript.AssertionDirectionType.NULL, new TestScript.AssertionDirectionTypeEnumFactory()));
16883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceId")) {
16884        res.setCompareToSourceIdElement(parseString(xpp));
16885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceExpression")) {
16886        res.setCompareToSourceExpressionElement(parseString(xpp));
16887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourcePath")) {
16888        res.setCompareToSourcePathElement(parseString(xpp));
16889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
16890        res.setContentTypeElement(parseEnumeration(xpp, TestScript.ContentType.NULL, new TestScript.ContentTypeEnumFactory()));
16891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
16892        res.setExpressionElement(parseString(xpp));
16893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
16894        res.setHeaderFieldElement(parseString(xpp));
16895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minimumId")) {
16896        res.setMinimumIdElement(parseString(xpp));
16897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("navigationLinks")) {
16898        res.setNavigationLinksElement(parseBoolean(xpp));
16899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
16900        res.setOperatorElement(parseEnumeration(xpp, TestScript.AssertionOperatorType.NULL, new TestScript.AssertionOperatorTypeEnumFactory()));
16901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
16902        res.setPathElement(parseString(xpp));
16903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestMethod")) {
16904        res.setRequestMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
16905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestURL")) {
16906        res.setRequestURLElement(parseString(xpp));
16907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16908        res.setResourceElement(parseCode(xpp));
16909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
16910        res.setResponseElement(parseEnumeration(xpp, TestScript.AssertionResponseTypes.NULL, new TestScript.AssertionResponseTypesEnumFactory()));
16911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseCode")) {
16912        res.setResponseCodeElement(parseString(xpp));
16913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
16914        res.setRule(parseTestScriptActionAssertRuleComponent(xpp, owner));
16915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleset")) {
16916        res.setRuleset(parseTestScriptActionAssertRulesetComponent(xpp, owner));
16917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
16918        res.setSourceIdElement(parseId(xpp));
16919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateProfileId")) {
16920        res.setValidateProfileIdElement(parseId(xpp));
16921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16922        res.setValueElement(parseString(xpp));
16923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warningOnly")) {
16924        res.setWarningOnlyElement(parseBoolean(xpp));
16925      } else if (!parseBackboneContent(eventType, xpp, res))
16926        return false;
16927    return true;
16928  }
16929
16930  protected TestScript.ActionAssertRuleComponent parseTestScriptActionAssertRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16931    TestScript.ActionAssertRuleComponent res = new TestScript.ActionAssertRuleComponent();
16932    parseBackboneAttributes(xpp, res);
16933    next(xpp);
16934    int eventType = nextNoWhitespace(xpp);
16935    while (eventType != XmlPullParser.END_TAG) {
16936  if (!parseTestScriptActionAssertRuleComponentContent(eventType, xpp, owner, res))
16937        unknownContent(xpp);
16938      eventType = nextNoWhitespace(xpp);
16939    }
16940    next(xpp);
16941    parseElementClose(res);
16942    return res;
16943  }
16944
16945  protected boolean parseTestScriptActionAssertRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16946      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
16947        res.setRuleIdElement(parseId(xpp));
16948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
16949        res.getParam().add(parseTestScriptActionAssertRuleParamComponent(xpp, owner));
16950      } else if (!parseBackboneContent(eventType, xpp, res))
16951        return false;
16952    return true;
16953  }
16954
16955  protected TestScript.ActionAssertRuleParamComponent parseTestScriptActionAssertRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16956    TestScript.ActionAssertRuleParamComponent res = new TestScript.ActionAssertRuleParamComponent();
16957    parseBackboneAttributes(xpp, res);
16958    next(xpp);
16959    int eventType = nextNoWhitespace(xpp);
16960    while (eventType != XmlPullParser.END_TAG) {
16961  if (!parseTestScriptActionAssertRuleParamComponentContent(eventType, xpp, owner, res))
16962        unknownContent(xpp);
16963      eventType = nextNoWhitespace(xpp);
16964    }
16965    next(xpp);
16966    parseElementClose(res);
16967    return res;
16968  }
16969
16970  protected boolean parseTestScriptActionAssertRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16971      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16972        res.setNameElement(parseString(xpp));
16973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16974        res.setValueElement(parseString(xpp));
16975      } else if (!parseBackboneContent(eventType, xpp, res))
16976        return false;
16977    return true;
16978  }
16979
16980  protected TestScript.ActionAssertRulesetComponent parseTestScriptActionAssertRulesetComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
16981    TestScript.ActionAssertRulesetComponent res = new TestScript.ActionAssertRulesetComponent();
16982    parseBackboneAttributes(xpp, res);
16983    next(xpp);
16984    int eventType = nextNoWhitespace(xpp);
16985    while (eventType != XmlPullParser.END_TAG) {
16986  if (!parseTestScriptActionAssertRulesetComponentContent(eventType, xpp, owner, res))
16987        unknownContent(xpp);
16988      eventType = nextNoWhitespace(xpp);
16989    }
16990    next(xpp);
16991    parseElementClose(res);
16992    return res;
16993  }
16994
16995  protected boolean parseTestScriptActionAssertRulesetComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16996      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rulesetId")) {
16997        res.setRulesetIdElement(parseId(xpp));
16998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
16999        res.getRule().add(parseTestScriptActionAssertRulesetRuleComponent(xpp, owner));
17000      } else if (!parseBackboneContent(eventType, xpp, res))
17001        return false;
17002    return true;
17003  }
17004
17005  protected TestScript.ActionAssertRulesetRuleComponent parseTestScriptActionAssertRulesetRuleComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17006    TestScript.ActionAssertRulesetRuleComponent res = new TestScript.ActionAssertRulesetRuleComponent();
17007    parseBackboneAttributes(xpp, res);
17008    next(xpp);
17009    int eventType = nextNoWhitespace(xpp);
17010    while (eventType != XmlPullParser.END_TAG) {
17011  if (!parseTestScriptActionAssertRulesetRuleComponentContent(eventType, xpp, owner, res))
17012        unknownContent(xpp);
17013      eventType = nextNoWhitespace(xpp);
17014    }
17015    next(xpp);
17016    parseElementClose(res);
17017    return res;
17018  }
17019
17020  protected boolean parseTestScriptActionAssertRulesetRuleComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17021      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ruleId")) {
17022        res.setRuleIdElement(parseId(xpp));
17023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
17024        res.getParam().add(parseTestScriptActionAssertRulesetRuleParamComponent(xpp, owner));
17025      } else if (!parseBackboneContent(eventType, xpp, res))
17026        return false;
17027    return true;
17028  }
17029
17030  protected TestScript.ActionAssertRulesetRuleParamComponent parseTestScriptActionAssertRulesetRuleParamComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17031    TestScript.ActionAssertRulesetRuleParamComponent res = new TestScript.ActionAssertRulesetRuleParamComponent();
17032    parseBackboneAttributes(xpp, res);
17033    next(xpp);
17034    int eventType = nextNoWhitespace(xpp);
17035    while (eventType != XmlPullParser.END_TAG) {
17036  if (!parseTestScriptActionAssertRulesetRuleParamComponentContent(eventType, xpp, owner, res))
17037        unknownContent(xpp);
17038      eventType = nextNoWhitespace(xpp);
17039    }
17040    next(xpp);
17041    parseElementClose(res);
17042    return res;
17043  }
17044
17045  protected boolean parseTestScriptActionAssertRulesetRuleParamComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.ActionAssertRulesetRuleParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17046      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17047        res.setNameElement(parseString(xpp));
17048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
17049        res.setValueElement(parseString(xpp));
17050      } else if (!parseBackboneContent(eventType, xpp, res))
17051        return false;
17052    return true;
17053  }
17054
17055  protected TestScript.TestScriptTestComponent parseTestScriptTestScriptTestComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17056    TestScript.TestScriptTestComponent res = new TestScript.TestScriptTestComponent();
17057    parseBackboneAttributes(xpp, res);
17058    next(xpp);
17059    int eventType = nextNoWhitespace(xpp);
17060    while (eventType != XmlPullParser.END_TAG) {
17061  if (!parseTestScriptTestScriptTestComponentContent(eventType, xpp, owner, res))
17062        unknownContent(xpp);
17063      eventType = nextNoWhitespace(xpp);
17064    }
17065    next(xpp);
17066    parseElementClose(res);
17067    return res;
17068  }
17069
17070  protected boolean parseTestScriptTestScriptTestComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17071      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17072        res.setNameElement(parseString(xpp));
17073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17074        res.setDescriptionElement(parseString(xpp));
17075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17076        res.getAction().add(parseTestScriptTestActionComponent(xpp, owner));
17077      } else if (!parseBackboneContent(eventType, xpp, res))
17078        return false;
17079    return true;
17080  }
17081
17082  protected TestScript.TestActionComponent parseTestScriptTestActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17083    TestScript.TestActionComponent res = new TestScript.TestActionComponent();
17084    parseBackboneAttributes(xpp, res);
17085    next(xpp);
17086    int eventType = nextNoWhitespace(xpp);
17087    while (eventType != XmlPullParser.END_TAG) {
17088  if (!parseTestScriptTestActionComponentContent(eventType, xpp, owner, res))
17089        unknownContent(xpp);
17090      eventType = nextNoWhitespace(xpp);
17091    }
17092    next(xpp);
17093    parseElementClose(res);
17094    return res;
17095  }
17096
17097  protected boolean parseTestScriptTestActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17098      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
17099        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
17100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
17101        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
17102      } else if (!parseBackboneContent(eventType, xpp, res))
17103        return false;
17104    return true;
17105  }
17106
17107  protected TestScript.TestScriptTeardownComponent parseTestScriptTestScriptTeardownComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17108    TestScript.TestScriptTeardownComponent res = new TestScript.TestScriptTeardownComponent();
17109    parseBackboneAttributes(xpp, res);
17110    next(xpp);
17111    int eventType = nextNoWhitespace(xpp);
17112    while (eventType != XmlPullParser.END_TAG) {
17113  if (!parseTestScriptTestScriptTeardownComponentContent(eventType, xpp, owner, res))
17114        unknownContent(xpp);
17115      eventType = nextNoWhitespace(xpp);
17116    }
17117    next(xpp);
17118    parseElementClose(res);
17119    return res;
17120  }
17121
17122  protected boolean parseTestScriptTestScriptTeardownComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17123      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17124        res.getAction().add(parseTestScriptTeardownActionComponent(xpp, owner));
17125      } else if (!parseBackboneContent(eventType, xpp, res))
17126        return false;
17127    return true;
17128  }
17129
17130  protected TestScript.TeardownActionComponent parseTestScriptTeardownActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
17131    TestScript.TeardownActionComponent res = new TestScript.TeardownActionComponent();
17132    parseBackboneAttributes(xpp, res);
17133    next(xpp);
17134    int eventType = nextNoWhitespace(xpp);
17135    while (eventType != XmlPullParser.END_TAG) {
17136  if (!parseTestScriptTeardownActionComponentContent(eventType, xpp, owner, res))
17137        unknownContent(xpp);
17138      eventType = nextNoWhitespace(xpp);
17139    }
17140    next(xpp);
17141    parseElementClose(res);
17142    return res;
17143  }
17144
17145  protected boolean parseTestScriptTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17146      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
17147        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
17148      } else if (!parseBackboneContent(eventType, xpp, res))
17149        return false;
17150    return true;
17151  }
17152
17153  protected ValueSet parseValueSet(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17154    ValueSet res = new ValueSet();
17155    parseDomainResourceAttributes(xpp, res);
17156    next(xpp);
17157    int eventType = nextNoWhitespace(xpp);
17158    while (eventType != XmlPullParser.END_TAG) {
17159  if (!parseValueSetContent(eventType, xpp, res))
17160        unknownContent(xpp);
17161      eventType = nextNoWhitespace(xpp);
17162    }
17163    next(xpp);
17164    parseElementClose(res);
17165    return res;
17166  }
17167
17168  protected boolean parseValueSetContent(int eventType, XmlPullParser xpp, ValueSet res) throws XmlPullParserException, IOException, FHIRFormatError {
17169      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
17170        res.setUrlElement(parseUri(xpp));
17171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17172        res.getIdentifier().add(parseIdentifier(xpp));
17173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17174        res.setVersionElement(parseString(xpp));
17175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17176        res.setNameElement(parseString(xpp));
17177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17178        res.setTitleElement(parseString(xpp));
17179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17180        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
17181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
17182        res.setExperimentalElement(parseBoolean(xpp));
17183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17184        res.setDateElement(parseDateTime(xpp));
17185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
17186        res.setPublisherElement(parseString(xpp));
17187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17188        res.getContact().add(parseContactDetail(xpp));
17189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17190        res.setDescriptionElement(parseMarkdown(xpp));
17191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
17192        res.getUseContext().add(parseUsageContext(xpp));
17193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
17194        res.getJurisdiction().add(parseCodeableConcept(xpp));
17195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immutable")) {
17196        res.setImmutableElement(parseBoolean(xpp));
17197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
17198        res.setPurposeElement(parseMarkdown(xpp));
17199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
17200        res.setCopyrightElement(parseMarkdown(xpp));
17201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extensible")) {
17202        res.setExtensibleElement(parseBoolean(xpp));
17203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compose")) {
17204        res.setCompose(parseValueSetValueSetComposeComponent(xpp, res));
17205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
17206        res.setExpansion(parseValueSetValueSetExpansionComponent(xpp, res));
17207      } else if (!parseDomainResourceContent(eventType, xpp, res))
17208        return false;
17209    return true;
17210  }
17211
17212  protected ValueSet.ValueSetComposeComponent parseValueSetValueSetComposeComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17213    ValueSet.ValueSetComposeComponent res = new ValueSet.ValueSetComposeComponent();
17214    parseBackboneAttributes(xpp, res);
17215    next(xpp);
17216    int eventType = nextNoWhitespace(xpp);
17217    while (eventType != XmlPullParser.END_TAG) {
17218  if (!parseValueSetValueSetComposeComponentContent(eventType, xpp, owner, res))
17219        unknownContent(xpp);
17220      eventType = nextNoWhitespace(xpp);
17221    }
17222    next(xpp);
17223    parseElementClose(res);
17224    return res;
17225  }
17226
17227  protected boolean parseValueSetValueSetComposeComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetComposeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17228      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
17229        res.setLockedDateElement(parseDate(xpp));
17230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
17231        res.setInactiveElement(parseBoolean(xpp));
17232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
17233        res.getInclude().add(parseValueSetConceptSetComponent(xpp, owner));
17234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
17235        res.getExclude().add(parseValueSetConceptSetComponent(xpp, owner));
17236      } else if (!parseBackboneContent(eventType, xpp, res))
17237        return false;
17238    return true;
17239  }
17240
17241  protected ValueSet.ConceptSetComponent parseValueSetConceptSetComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17242    ValueSet.ConceptSetComponent res = new ValueSet.ConceptSetComponent();
17243    parseBackboneAttributes(xpp, res);
17244    next(xpp);
17245    int eventType = nextNoWhitespace(xpp);
17246    while (eventType != XmlPullParser.END_TAG) {
17247  if (!parseValueSetConceptSetComponentContent(eventType, xpp, owner, res))
17248        unknownContent(xpp);
17249      eventType = nextNoWhitespace(xpp);
17250    }
17251    next(xpp);
17252    parseElementClose(res);
17253    return res;
17254  }
17255
17256  protected boolean parseValueSetConceptSetComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17257      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
17258        res.setSystemElement(parseUri(xpp));
17259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17260        res.setVersionElement(parseString(xpp));
17261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
17262        res.getConcept().add(parseValueSetConceptReferenceComponent(xpp, owner));
17263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
17264        res.getFilter().add(parseValueSetConceptSetFilterComponent(xpp, owner));
17265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
17266        res.getValueSet().add(parseUri(xpp));
17267      } else if (!parseBackboneContent(eventType, xpp, res))
17268        return false;
17269    return true;
17270  }
17271
17272  protected ValueSet.ConceptReferenceComponent parseValueSetConceptReferenceComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17273    ValueSet.ConceptReferenceComponent res = new ValueSet.ConceptReferenceComponent();
17274    parseBackboneAttributes(xpp, res);
17275    next(xpp);
17276    int eventType = nextNoWhitespace(xpp);
17277    while (eventType != XmlPullParser.END_TAG) {
17278  if (!parseValueSetConceptReferenceComponentContent(eventType, xpp, owner, res))
17279        unknownContent(xpp);
17280      eventType = nextNoWhitespace(xpp);
17281    }
17282    next(xpp);
17283    parseElementClose(res);
17284    return res;
17285  }
17286
17287  protected boolean parseValueSetConceptReferenceComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17288      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17289        res.setCodeElement(parseCode(xpp));
17290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
17291        res.setDisplayElement(parseString(xpp));
17292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
17293        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
17294      } else if (!parseBackboneContent(eventType, xpp, res))
17295        return false;
17296    return true;
17297  }
17298
17299  protected ValueSet.ConceptReferenceDesignationComponent parseValueSetConceptReferenceDesignationComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17300    ValueSet.ConceptReferenceDesignationComponent res = new ValueSet.ConceptReferenceDesignationComponent();
17301    parseBackboneAttributes(xpp, res);
17302    next(xpp);
17303    int eventType = nextNoWhitespace(xpp);
17304    while (eventType != XmlPullParser.END_TAG) {
17305  if (!parseValueSetConceptReferenceDesignationComponentContent(eventType, xpp, owner, res))
17306        unknownContent(xpp);
17307      eventType = nextNoWhitespace(xpp);
17308    }
17309    next(xpp);
17310    parseElementClose(res);
17311    return res;
17312  }
17313
17314  protected boolean parseValueSetConceptReferenceDesignationComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17315      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
17316        res.setLanguageElement(parseCode(xpp));
17317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
17318        res.setUse(parseCoding(xpp));
17319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
17320        res.setValueElement(parseString(xpp));
17321      } else if (!parseBackboneContent(eventType, xpp, res))
17322        return false;
17323    return true;
17324  }
17325
17326  protected ValueSet.ConceptSetFilterComponent parseValueSetConceptSetFilterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17327    ValueSet.ConceptSetFilterComponent res = new ValueSet.ConceptSetFilterComponent();
17328    parseBackboneAttributes(xpp, res);
17329    next(xpp);
17330    int eventType = nextNoWhitespace(xpp);
17331    while (eventType != XmlPullParser.END_TAG) {
17332  if (!parseValueSetConceptSetFilterComponentContent(eventType, xpp, owner, res))
17333        unknownContent(xpp);
17334      eventType = nextNoWhitespace(xpp);
17335    }
17336    next(xpp);
17337    parseElementClose(res);
17338    return res;
17339  }
17340
17341  protected boolean parseValueSetConceptSetFilterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17342      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
17343        res.setPropertyElement(parseCode(xpp));
17344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
17345        res.setOpElement(parseEnumeration(xpp, ValueSet.FilterOperator.NULL, new ValueSet.FilterOperatorEnumFactory()));
17346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
17347        res.setValueElement(parseCode(xpp));
17348      } else if (!parseBackboneContent(eventType, xpp, res))
17349        return false;
17350    return true;
17351  }
17352
17353  protected ValueSet.ValueSetExpansionComponent parseValueSetValueSetExpansionComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17354    ValueSet.ValueSetExpansionComponent res = new ValueSet.ValueSetExpansionComponent();
17355    parseBackboneAttributes(xpp, res);
17356    next(xpp);
17357    int eventType = nextNoWhitespace(xpp);
17358    while (eventType != XmlPullParser.END_TAG) {
17359  if (!parseValueSetValueSetExpansionComponentContent(eventType, xpp, owner, res))
17360        unknownContent(xpp);
17361      eventType = nextNoWhitespace(xpp);
17362    }
17363    next(xpp);
17364    parseElementClose(res);
17365    return res;
17366  }
17367
17368  protected boolean parseValueSetValueSetExpansionComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17369      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17370        res.setIdentifierElement(parseUri(xpp));
17371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
17372        res.setTimestampElement(parseDateTime(xpp));
17373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
17374        res.setTotalElement(parseInteger(xpp));
17375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
17376        res.setOffsetElement(parseInteger(xpp));
17377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
17378        res.getParameter().add(parseValueSetValueSetExpansionParameterComponent(xpp, owner));
17379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
17380        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
17381      } else if (!parseBackboneContent(eventType, xpp, res))
17382        return false;
17383    return true;
17384  }
17385
17386  protected ValueSet.ValueSetExpansionParameterComponent parseValueSetValueSetExpansionParameterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17387    ValueSet.ValueSetExpansionParameterComponent res = new ValueSet.ValueSetExpansionParameterComponent();
17388    parseBackboneAttributes(xpp, res);
17389    next(xpp);
17390    int eventType = nextNoWhitespace(xpp);
17391    while (eventType != XmlPullParser.END_TAG) {
17392  if (!parseValueSetValueSetExpansionParameterComponentContent(eventType, xpp, owner, res))
17393        unknownContent(xpp);
17394      eventType = nextNoWhitespace(xpp);
17395    }
17396    next(xpp);
17397    parseElementClose(res);
17398    return res;
17399  }
17400
17401  protected boolean parseValueSetValueSetExpansionParameterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17402      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17403        res.setNameElement(parseString(xpp));
17404      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
17405        res.setValue(parseType("value", xpp));
17406      } else if (!parseBackboneContent(eventType, xpp, res))
17407        return false;
17408    return true;
17409  }
17410
17411  protected ValueSet.ValueSetExpansionContainsComponent parseValueSetValueSetExpansionContainsComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
17412    ValueSet.ValueSetExpansionContainsComponent res = new ValueSet.ValueSetExpansionContainsComponent();
17413    parseBackboneAttributes(xpp, res);
17414    next(xpp);
17415    int eventType = nextNoWhitespace(xpp);
17416    while (eventType != XmlPullParser.END_TAG) {
17417  if (!parseValueSetValueSetExpansionContainsComponentContent(eventType, xpp, owner, res))
17418        unknownContent(xpp);
17419      eventType = nextNoWhitespace(xpp);
17420    }
17421    next(xpp);
17422    parseElementClose(res);
17423    return res;
17424  }
17425
17426  protected boolean parseValueSetValueSetExpansionContainsComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionContainsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17427      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
17428        res.setSystemElement(parseUri(xpp));
17429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
17430        res.setAbstractElement(parseBoolean(xpp));
17431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
17432        res.setInactiveElement(parseBoolean(xpp));
17433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17434        res.setVersionElement(parseString(xpp));
17435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17436        res.setCodeElement(parseCode(xpp));
17437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
17438        res.setDisplayElement(parseString(xpp));
17439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
17440        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
17441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
17442        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
17443      } else if (!parseBackboneContent(eventType, xpp, res))
17444        return false;
17445    return true;
17446  }
17447
17448  protected VisionPrescription parseVisionPrescription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17449    VisionPrescription res = new VisionPrescription();
17450    parseDomainResourceAttributes(xpp, res);
17451    next(xpp);
17452    int eventType = nextNoWhitespace(xpp);
17453    while (eventType != XmlPullParser.END_TAG) {
17454  if (!parseVisionPrescriptionContent(eventType, xpp, res))
17455        unknownContent(xpp);
17456      eventType = nextNoWhitespace(xpp);
17457    }
17458    next(xpp);
17459    parseElementClose(res);
17460    return res;
17461  }
17462
17463  protected boolean parseVisionPrescriptionContent(int eventType, XmlPullParser xpp, VisionPrescription res) throws XmlPullParserException, IOException, FHIRFormatError {
17464      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17465        res.getIdentifier().add(parseIdentifier(xpp));
17466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17467        res.setStatusElement(parseEnumeration(xpp, VisionPrescription.VisionStatus.NULL, new VisionPrescription.VisionStatusEnumFactory()));
17468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
17469        res.setPatient(parseReference(xpp));
17470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
17471        res.setEncounter(parseReference(xpp));
17472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
17473        res.setDateWrittenElement(parseDateTime(xpp));
17474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
17475        res.setPrescriber(parseReference(xpp));
17476      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reason")) {
17477        res.setReason(parseType("reason", xpp));
17478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispense")) {
17479        res.getDispense().add(parseVisionPrescriptionVisionPrescriptionDispenseComponent(xpp, res));
17480      } else if (!parseDomainResourceContent(eventType, xpp, res))
17481        return false;
17482    return true;
17483  }
17484
17485  protected VisionPrescription.VisionPrescriptionDispenseComponent parseVisionPrescriptionVisionPrescriptionDispenseComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
17486    VisionPrescription.VisionPrescriptionDispenseComponent res = new VisionPrescription.VisionPrescriptionDispenseComponent();
17487    parseBackboneAttributes(xpp, res);
17488    next(xpp);
17489    int eventType = nextNoWhitespace(xpp);
17490    while (eventType != XmlPullParser.END_TAG) {
17491  if (!parseVisionPrescriptionVisionPrescriptionDispenseComponentContent(eventType, xpp, owner, res))
17492        unknownContent(xpp);
17493      eventType = nextNoWhitespace(xpp);
17494    }
17495    next(xpp);
17496    parseElementClose(res);
17497    return res;
17498  }
17499
17500  protected boolean parseVisionPrescriptionVisionPrescriptionDispenseComponentContent(int eventType, XmlPullParser xpp, VisionPrescription owner, VisionPrescription.VisionPrescriptionDispenseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17501      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
17502        res.setProduct(parseCodeableConcept(xpp));
17503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eye")) {
17504        res.setEyeElement(parseEnumeration(xpp, VisionPrescription.VisionEyes.NULL, new VisionPrescription.VisionEyesEnumFactory()));
17505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sphere")) {
17506        res.setSphereElement(parseDecimal(xpp));
17507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cylinder")) {
17508        res.setCylinderElement(parseDecimal(xpp));
17509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("axis")) {
17510        res.setAxisElement(parseInteger(xpp));
17511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prism")) {
17512        res.setPrismElement(parseDecimal(xpp));
17513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
17514        res.setBaseElement(parseEnumeration(xpp, VisionPrescription.VisionBase.NULL, new VisionPrescription.VisionBaseEnumFactory()));
17515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("add")) {
17516        res.setAddElement(parseDecimal(xpp));
17517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("power")) {
17518        res.setPowerElement(parseDecimal(xpp));
17519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("backCurve")) {
17520        res.setBackCurveElement(parseDecimal(xpp));
17521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diameter")) {
17522        res.setDiameterElement(parseDecimal(xpp));
17523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
17524        res.setDuration(parseSimpleQuantity(xpp));
17525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
17526        res.setColorElement(parseString(xpp));
17527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("brand")) {
17528        res.setBrandElement(parseString(xpp));
17529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17530        res.getNote().add(parseAnnotation(xpp));
17531      } else if (!parseBackboneContent(eventType, xpp, res))
17532        return false;
17533    return true;
17534  }
17535
17536  @Override
17537  protected Resource parseResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17538    if (xpp.getName().equals("Parameters"))
17539      return parseParameters(xpp);
17540    else if (xpp.getName().equals("Account"))
17541      return parseAccount(xpp);
17542    else if (xpp.getName().equals("ActivityDefinition"))
17543      return parseActivityDefinition(xpp);
17544    else if (xpp.getName().equals("AdverseEvent"))
17545      return parseAdverseEvent(xpp);
17546    else if (xpp.getName().equals("AllergyIntolerance"))
17547      return parseAllergyIntolerance(xpp);
17548    else if (xpp.getName().equals("Appointment"))
17549      return parseAppointment(xpp);
17550    else if (xpp.getName().equals("AppointmentResponse"))
17551      return parseAppointmentResponse(xpp);
17552    else if (xpp.getName().equals("AuditEvent"))
17553      return parseAuditEvent(xpp);
17554    else if (xpp.getName().equals("Basic"))
17555      return parseBasic(xpp);
17556    else if (xpp.getName().equals("Binary"))
17557      return parseBinary(xpp);
17558    else if (xpp.getName().equals("BodySite"))
17559      return parseBodySite(xpp);
17560    else if (xpp.getName().equals("Bundle"))
17561      return parseBundle(xpp);
17562    else if (xpp.getName().equals("CapabilityStatement"))
17563      return parseCapabilityStatement(xpp);
17564    else if (xpp.getName().equals("CarePlan"))
17565      return parseCarePlan(xpp);
17566    else if (xpp.getName().equals("CareTeam"))
17567      return parseCareTeam(xpp);
17568    else if (xpp.getName().equals("ChargeItem"))
17569      return parseChargeItem(xpp);
17570    else if (xpp.getName().equals("Claim"))
17571      return parseClaim(xpp);
17572    else if (xpp.getName().equals("ClaimResponse"))
17573      return parseClaimResponse(xpp);
17574    else if (xpp.getName().equals("ClinicalImpression"))
17575      return parseClinicalImpression(xpp);
17576    else if (xpp.getName().equals("CodeSystem"))
17577      return parseCodeSystem(xpp);
17578    else if (xpp.getName().equals("Communication"))
17579      return parseCommunication(xpp);
17580    else if (xpp.getName().equals("CommunicationRequest"))
17581      return parseCommunicationRequest(xpp);
17582    else if (xpp.getName().equals("CompartmentDefinition"))
17583      return parseCompartmentDefinition(xpp);
17584    else if (xpp.getName().equals("Composition"))
17585      return parseComposition(xpp);
17586    else if (xpp.getName().equals("ConceptMap"))
17587      return parseConceptMap(xpp);
17588    else if (xpp.getName().equals("Condition"))
17589      return parseCondition(xpp);
17590    else if (xpp.getName().equals("Consent"))
17591      return parseConsent(xpp);
17592    else if (xpp.getName().equals("Contract"))
17593      return parseContract(xpp);
17594    else if (xpp.getName().equals("Coverage"))
17595      return parseCoverage(xpp);
17596    else if (xpp.getName().equals("DataElement"))
17597      return parseDataElement(xpp);
17598    else if (xpp.getName().equals("DetectedIssue"))
17599      return parseDetectedIssue(xpp);
17600    else if (xpp.getName().equals("Device"))
17601      return parseDevice(xpp);
17602    else if (xpp.getName().equals("DeviceComponent"))
17603      return parseDeviceComponent(xpp);
17604    else if (xpp.getName().equals("DeviceMetric"))
17605      return parseDeviceMetric(xpp);
17606    else if (xpp.getName().equals("DeviceRequest"))
17607      return parseDeviceRequest(xpp);
17608    else if (xpp.getName().equals("DeviceUseStatement"))
17609      return parseDeviceUseStatement(xpp);
17610    else if (xpp.getName().equals("DiagnosticReport"))
17611      return parseDiagnosticReport(xpp);
17612    else if (xpp.getName().equals("DocumentManifest"))
17613      return parseDocumentManifest(xpp);
17614    else if (xpp.getName().equals("DocumentReference"))
17615      return parseDocumentReference(xpp);
17616    else if (xpp.getName().equals("EligibilityRequest"))
17617      return parseEligibilityRequest(xpp);
17618    else if (xpp.getName().equals("EligibilityResponse"))
17619      return parseEligibilityResponse(xpp);
17620    else if (xpp.getName().equals("Encounter"))
17621      return parseEncounter(xpp);
17622    else if (xpp.getName().equals("Endpoint"))
17623      return parseEndpoint(xpp);
17624    else if (xpp.getName().equals("EnrollmentRequest"))
17625      return parseEnrollmentRequest(xpp);
17626    else if (xpp.getName().equals("EnrollmentResponse"))
17627      return parseEnrollmentResponse(xpp);
17628    else if (xpp.getName().equals("EpisodeOfCare"))
17629      return parseEpisodeOfCare(xpp);
17630    else if (xpp.getName().equals("ExpansionProfile"))
17631      return parseExpansionProfile(xpp);
17632    else if (xpp.getName().equals("ExplanationOfBenefit"))
17633      return parseExplanationOfBenefit(xpp);
17634    else if (xpp.getName().equals("FamilyMemberHistory"))
17635      return parseFamilyMemberHistory(xpp);
17636    else if (xpp.getName().equals("Flag"))
17637      return parseFlag(xpp);
17638    else if (xpp.getName().equals("Goal"))
17639      return parseGoal(xpp);
17640    else if (xpp.getName().equals("GraphDefinition"))
17641      return parseGraphDefinition(xpp);
17642    else if (xpp.getName().equals("Group"))
17643      return parseGroup(xpp);
17644    else if (xpp.getName().equals("GuidanceResponse"))
17645      return parseGuidanceResponse(xpp);
17646    else if (xpp.getName().equals("HealthcareService"))
17647      return parseHealthcareService(xpp);
17648    else if (xpp.getName().equals("ImagingManifest"))
17649      return parseImagingManifest(xpp);
17650    else if (xpp.getName().equals("ImagingStudy"))
17651      return parseImagingStudy(xpp);
17652    else if (xpp.getName().equals("Immunization"))
17653      return parseImmunization(xpp);
17654    else if (xpp.getName().equals("ImmunizationRecommendation"))
17655      return parseImmunizationRecommendation(xpp);
17656    else if (xpp.getName().equals("ImplementationGuide"))
17657      return parseImplementationGuide(xpp);
17658    else if (xpp.getName().equals("Library"))
17659      return parseLibrary(xpp);
17660    else if (xpp.getName().equals("Linkage"))
17661      return parseLinkage(xpp);
17662    else if (xpp.getName().equals("List"))
17663      return parseListResource(xpp);
17664    else if (xpp.getName().equals("Location"))
17665      return parseLocation(xpp);
17666    else if (xpp.getName().equals("Measure"))
17667      return parseMeasure(xpp);
17668    else if (xpp.getName().equals("MeasureReport"))
17669      return parseMeasureReport(xpp);
17670    else if (xpp.getName().equals("Media"))
17671      return parseMedia(xpp);
17672    else if (xpp.getName().equals("Medication"))
17673      return parseMedication(xpp);
17674    else if (xpp.getName().equals("MedicationAdministration"))
17675      return parseMedicationAdministration(xpp);
17676    else if (xpp.getName().equals("MedicationDispense"))
17677      return parseMedicationDispense(xpp);
17678    else if (xpp.getName().equals("MedicationRequest"))
17679      return parseMedicationRequest(xpp);
17680    else if (xpp.getName().equals("MedicationStatement"))
17681      return parseMedicationStatement(xpp);
17682    else if (xpp.getName().equals("MessageDefinition"))
17683      return parseMessageDefinition(xpp);
17684    else if (xpp.getName().equals("MessageHeader"))
17685      return parseMessageHeader(xpp);
17686    else if (xpp.getName().equals("NamingSystem"))
17687      return parseNamingSystem(xpp);
17688    else if (xpp.getName().equals("NutritionOrder"))
17689      return parseNutritionOrder(xpp);
17690    else if (xpp.getName().equals("Observation"))
17691      return parseObservation(xpp);
17692    else if (xpp.getName().equals("OperationDefinition"))
17693      return parseOperationDefinition(xpp);
17694    else if (xpp.getName().equals("OperationOutcome"))
17695      return parseOperationOutcome(xpp);
17696    else if (xpp.getName().equals("Organization"))
17697      return parseOrganization(xpp);
17698    else if (xpp.getName().equals("Patient"))
17699      return parsePatient(xpp);
17700    else if (xpp.getName().equals("PaymentNotice"))
17701      return parsePaymentNotice(xpp);
17702    else if (xpp.getName().equals("PaymentReconciliation"))
17703      return parsePaymentReconciliation(xpp);
17704    else if (xpp.getName().equals("Person"))
17705      return parsePerson(xpp);
17706    else if (xpp.getName().equals("PlanDefinition"))
17707      return parsePlanDefinition(xpp);
17708    else if (xpp.getName().equals("Practitioner"))
17709      return parsePractitioner(xpp);
17710    else if (xpp.getName().equals("PractitionerRole"))
17711      return parsePractitionerRole(xpp);
17712    else if (xpp.getName().equals("Procedure"))
17713      return parseProcedure(xpp);
17714    else if (xpp.getName().equals("ProcedureRequest"))
17715      return parseProcedureRequest(xpp);
17716    else if (xpp.getName().equals("ProcessRequest"))
17717      return parseProcessRequest(xpp);
17718    else if (xpp.getName().equals("ProcessResponse"))
17719      return parseProcessResponse(xpp);
17720    else if (xpp.getName().equals("Provenance"))
17721      return parseProvenance(xpp);
17722    else if (xpp.getName().equals("Questionnaire"))
17723      return parseQuestionnaire(xpp);
17724    else if (xpp.getName().equals("QuestionnaireResponse"))
17725      return parseQuestionnaireResponse(xpp);
17726    else if (xpp.getName().equals("ReferralRequest"))
17727      return parseReferralRequest(xpp);
17728    else if (xpp.getName().equals("RelatedPerson"))
17729      return parseRelatedPerson(xpp);
17730    else if (xpp.getName().equals("RequestGroup"))
17731      return parseRequestGroup(xpp);
17732    else if (xpp.getName().equals("ResearchStudy"))
17733      return parseResearchStudy(xpp);
17734    else if (xpp.getName().equals("ResearchSubject"))
17735      return parseResearchSubject(xpp);
17736    else if (xpp.getName().equals("RiskAssessment"))
17737      return parseRiskAssessment(xpp);
17738    else if (xpp.getName().equals("Schedule"))
17739      return parseSchedule(xpp);
17740    else if (xpp.getName().equals("SearchParameter"))
17741      return parseSearchParameter(xpp);
17742    else if (xpp.getName().equals("Sequence"))
17743      return parseSequence(xpp);
17744    else if (xpp.getName().equals("ServiceDefinition"))
17745      return parseServiceDefinition(xpp);
17746    else if (xpp.getName().equals("Slot"))
17747      return parseSlot(xpp);
17748    else if (xpp.getName().equals("Specimen"))
17749      return parseSpecimen(xpp);
17750    else if (xpp.getName().equals("StructureDefinition"))
17751      return parseStructureDefinition(xpp);
17752    else if (xpp.getName().equals("StructureMap"))
17753      return parseStructureMap(xpp);
17754    else if (xpp.getName().equals("Subscription"))
17755      return parseSubscription(xpp);
17756    else if (xpp.getName().equals("Substance"))
17757      return parseSubstance(xpp);
17758    else if (xpp.getName().equals("SupplyDelivery"))
17759      return parseSupplyDelivery(xpp);
17760    else if (xpp.getName().equals("SupplyRequest"))
17761      return parseSupplyRequest(xpp);
17762    else if (xpp.getName().equals("Task"))
17763      return parseTask(xpp);
17764    else if (xpp.getName().equals("TestReport"))
17765      return parseTestReport(xpp);
17766    else if (xpp.getName().equals("TestScript"))
17767      return parseTestScript(xpp);
17768    else if (xpp.getName().equals("ValueSet"))
17769      return parseValueSet(xpp);
17770    else if (xpp.getName().equals("VisionPrescription"))
17771      return parseVisionPrescription(xpp);
17772    else if (xpp.getName().equals("Binary"))
17773      return parseBinary(xpp);
17774    throw new FHIRFormatError("Unknown resource type "+xpp.getName()+"");
17775  }
17776
17777  protected Type parseType(String prefix, XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17778    if (xpp.getName().equals(prefix+"date"))
17779      return parseDate(xpp);
17780    else if (xpp.getName().equals(prefix+"dateTime"))
17781      return parseDateTime(xpp);
17782    else if (xpp.getName().equals(prefix+"code"))
17783      return parseCode(xpp);
17784    else if (xpp.getName().equals(prefix+"string"))
17785      return parseString(xpp);
17786    else if (xpp.getName().equals(prefix+"integer"))
17787      return parseInteger(xpp);
17788    else if (xpp.getName().equals(prefix+"oid"))
17789      return parseOid(xpp);
17790    else if (xpp.getName().equals(prefix+"uri"))
17791      return parseUri(xpp);
17792    else if (xpp.getName().equals(prefix+"uuid"))
17793      return parseUuid(xpp);
17794    else if (xpp.getName().equals(prefix+"instant"))
17795      return parseInstant(xpp);
17796    else if (xpp.getName().equals(prefix+"boolean"))
17797      return parseBoolean(xpp);
17798    else if (xpp.getName().equals(prefix+"base64Binary"))
17799      return parseBase64Binary(xpp);
17800    else if (xpp.getName().equals(prefix+"unsignedInt"))
17801      return parseUnsignedInt(xpp);
17802    else if (xpp.getName().equals(prefix+"markdown"))
17803      return parseMarkdown(xpp);
17804    else if (xpp.getName().equals(prefix+"time"))
17805      return parseTime(xpp);
17806    else if (xpp.getName().equals(prefix+"id"))
17807      return parseId(xpp);
17808    else if (xpp.getName().equals(prefix+"positiveInt"))
17809      return parsePositiveInt(xpp);
17810    else if (xpp.getName().equals(prefix+"decimal"))
17811      return parseDecimal(xpp);
17812    else if (xpp.getName().equals(prefix+"Extension"))
17813      return parseExtension(xpp);
17814    else if (xpp.getName().equals(prefix+"Narrative"))
17815      return parseNarrative(xpp);
17816    else if (xpp.getName().equals(prefix+"Reference"))
17817      return parseReference(xpp);
17818    else if (xpp.getName().equals(prefix+"Quantity"))
17819      return parseQuantity(xpp);
17820    else if (xpp.getName().equals(prefix+"Period"))
17821      return parsePeriod(xpp);
17822    else if (xpp.getName().equals(prefix+"Attachment"))
17823      return parseAttachment(xpp);
17824    else if (xpp.getName().equals(prefix+"Duration"))
17825      return parseDuration(xpp);
17826    else if (xpp.getName().equals(prefix+"Count"))
17827      return parseCount(xpp);
17828    else if (xpp.getName().equals(prefix+"Range"))
17829      return parseRange(xpp);
17830    else if (xpp.getName().equals(prefix+"Annotation"))
17831      return parseAnnotation(xpp);
17832    else if (xpp.getName().equals(prefix+"Money"))
17833      return parseMoney(xpp);
17834    else if (xpp.getName().equals(prefix+"Identifier"))
17835      return parseIdentifier(xpp);
17836    else if (xpp.getName().equals(prefix+"Coding"))
17837      return parseCoding(xpp);
17838    else if (xpp.getName().equals(prefix+"Signature"))
17839      return parseSignature(xpp);
17840    else if (xpp.getName().equals(prefix+"SampledData"))
17841      return parseSampledData(xpp);
17842    else if (xpp.getName().equals(prefix+"Ratio"))
17843      return parseRatio(xpp);
17844    else if (xpp.getName().equals(prefix+"Distance"))
17845      return parseDistance(xpp);
17846    else if (xpp.getName().equals(prefix+"Age"))
17847      return parseAge(xpp);
17848    else if (xpp.getName().equals(prefix+"CodeableConcept"))
17849      return parseCodeableConcept(xpp);
17850    else if (xpp.getName().equals(prefix+"SimpleQuantity"))
17851      return parseSimpleQuantity(xpp);
17852    else if (xpp.getName().equals(prefix+"Meta"))
17853      return parseMeta(xpp);
17854    else if (xpp.getName().equals(prefix+"Address"))
17855      return parseAddress(xpp);
17856    else if (xpp.getName().equals(prefix+"TriggerDefinition"))
17857      return parseTriggerDefinition(xpp);
17858    else if (xpp.getName().equals(prefix+"Contributor"))
17859      return parseContributor(xpp);
17860    else if (xpp.getName().equals(prefix+"DataRequirement"))
17861      return parseDataRequirement(xpp);
17862    else if (xpp.getName().equals(prefix+"Dosage"))
17863      return parseDosage(xpp);
17864    else if (xpp.getName().equals(prefix+"RelatedArtifact"))
17865      return parseRelatedArtifact(xpp);
17866    else if (xpp.getName().equals(prefix+"ContactDetail"))
17867      return parseContactDetail(xpp);
17868    else if (xpp.getName().equals(prefix+"HumanName"))
17869      return parseHumanName(xpp);
17870    else if (xpp.getName().equals(prefix+"ContactPoint"))
17871      return parseContactPoint(xpp);
17872    else if (xpp.getName().equals(prefix+"UsageContext"))
17873      return parseUsageContext(xpp);
17874    else if (xpp.getName().equals(prefix+"Timing"))
17875      return parseTiming(xpp);
17876    else if (xpp.getName().equals(prefix+"ElementDefinition"))
17877      return parseElementDefinition(xpp);
17878    else if (xpp.getName().equals(prefix+"ParameterDefinition"))
17879      return parseParameterDefinition(xpp);
17880    else if (xpp.getName().equals(prefix+"Date"))
17881      return parseDate(xpp);
17882    else if (xpp.getName().equals(prefix+"DateTime"))
17883      return parseDateTime(xpp);
17884    else if (xpp.getName().equals(prefix+"Code"))
17885      return parseCode(xpp);
17886    else if (xpp.getName().equals(prefix+"String"))
17887      return parseString(xpp);
17888    else if (xpp.getName().equals(prefix+"Integer"))
17889      return parseInteger(xpp);
17890    else if (xpp.getName().equals(prefix+"Oid"))
17891      return parseOid(xpp);
17892    else if (xpp.getName().equals(prefix+"Uri"))
17893      return parseUri(xpp);
17894    else if (xpp.getName().equals(prefix+"Uuid"))
17895      return parseUuid(xpp);
17896    else if (xpp.getName().equals(prefix+"Instant"))
17897      return parseInstant(xpp);
17898    else if (xpp.getName().equals(prefix+"Boolean"))
17899      return parseBoolean(xpp);
17900    else if (xpp.getName().equals(prefix+"Base64Binary"))
17901      return parseBase64Binary(xpp);
17902    else if (xpp.getName().equals(prefix+"UnsignedInt"))
17903      return parseUnsignedInt(xpp);
17904    else if (xpp.getName().equals(prefix+"Markdown"))
17905      return parseMarkdown(xpp);
17906    else if (xpp.getName().equals(prefix+"Time"))
17907      return parseTime(xpp);
17908    else if (xpp.getName().equals(prefix+"Id"))
17909      return parseId(xpp);
17910    else if (xpp.getName().equals(prefix+"PositiveInt"))
17911      return parsePositiveInt(xpp);
17912    else if (xpp.getName().equals(prefix+"Decimal"))
17913      return parseDecimal(xpp);
17914    throw new FHIRFormatError("Unknown type "+xpp.getName());
17915  }
17916
17917  protected Type parseType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
17918    if (type.equals("date"))
17919      return parseDate(xpp);
17920    else if (type.equals("dateTime"))
17921      return parseDateTime(xpp);
17922    else if (type.equals("code"))
17923      return parseCode(xpp);
17924    else if (type.equals("string"))
17925      return parseString(xpp);
17926    else if (type.equals("integer"))
17927      return parseInteger(xpp);
17928    else if (type.equals("oid"))
17929      return parseOid(xpp);
17930    else if (type.equals("uri"))
17931      return parseUri(xpp);
17932    else if (type.equals("uuid"))
17933      return parseUuid(xpp);
17934    else if (type.equals("instant"))
17935      return parseInstant(xpp);
17936    else if (type.equals("boolean"))
17937      return parseBoolean(xpp);
17938    else if (type.equals("base64Binary"))
17939      return parseBase64Binary(xpp);
17940    else if (type.equals("unsignedInt"))
17941      return parseUnsignedInt(xpp);
17942    else if (type.equals("markdown"))
17943      return parseMarkdown(xpp);
17944    else if (type.equals("time"))
17945      return parseTime(xpp);
17946    else if (type.equals("id"))
17947      return parseId(xpp);
17948    else if (type.equals("positiveInt"))
17949      return parsePositiveInt(xpp);
17950    else if (type.equals("decimal"))
17951      return parseDecimal(xpp);
17952    else if (type.equals("Extension"))
17953      return parseExtension(xpp);
17954    else if (type.equals("Narrative"))
17955      return parseNarrative(xpp);
17956    else if (type.equals("Reference"))
17957      return parseReference(xpp);
17958    else if (type.equals("Quantity"))
17959      return parseQuantity(xpp);
17960    else if (type.equals("Period"))
17961      return parsePeriod(xpp);
17962    else if (type.equals("Attachment"))
17963      return parseAttachment(xpp);
17964    else if (type.equals("Duration"))
17965      return parseDuration(xpp);
17966    else if (type.equals("Count"))
17967      return parseCount(xpp);
17968    else if (type.equals("Range"))
17969      return parseRange(xpp);
17970    else if (type.equals("Annotation"))
17971      return parseAnnotation(xpp);
17972    else if (type.equals("Money"))
17973      return parseMoney(xpp);
17974    else if (type.equals("Identifier"))
17975      return parseIdentifier(xpp);
17976    else if (type.equals("Coding"))
17977      return parseCoding(xpp);
17978    else if (type.equals("Signature"))
17979      return parseSignature(xpp);
17980    else if (type.equals("SampledData"))
17981      return parseSampledData(xpp);
17982    else if (type.equals("Ratio"))
17983      return parseRatio(xpp);
17984    else if (type.equals("Distance"))
17985      return parseDistance(xpp);
17986    else if (type.equals("Age"))
17987      return parseAge(xpp);
17988    else if (type.equals("CodeableConcept"))
17989      return parseCodeableConcept(xpp);
17990    else if (type.equals("SimpleQuantity"))
17991      return parseSimpleQuantity(xpp);
17992    else if (type.equals("Meta"))
17993      return parseMeta(xpp);
17994    else if (type.equals("Address"))
17995      return parseAddress(xpp);
17996    else if (type.equals("TriggerDefinition"))
17997      return parseTriggerDefinition(xpp);
17998    else if (type.equals("Contributor"))
17999      return parseContributor(xpp);
18000    else if (type.equals("DataRequirement"))
18001      return parseDataRequirement(xpp);
18002    else if (type.equals("Dosage"))
18003      return parseDosage(xpp);
18004    else if (type.equals("RelatedArtifact"))
18005      return parseRelatedArtifact(xpp);
18006    else if (type.equals("ContactDetail"))
18007      return parseContactDetail(xpp);
18008    else if (type.equals("HumanName"))
18009      return parseHumanName(xpp);
18010    else if (type.equals("ContactPoint"))
18011      return parseContactPoint(xpp);
18012    else if (type.equals("UsageContext"))
18013      return parseUsageContext(xpp);
18014    else if (type.equals("Timing"))
18015      return parseTiming(xpp);
18016    else if (type.equals("ElementDefinition"))
18017      return parseElementDefinition(xpp);
18018    else if (type.equals("ParameterDefinition"))
18019      return parseParameterDefinition(xpp);
18020    throw new FHIRFormatError("Unknown type "+type);
18021  }
18022
18023  public Base parseFragment(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
18024    if (type.equals("Extension"))
18025      return parseExtension(xpp);
18026    else if (type.equals("Narrative"))
18027      return parseNarrative(xpp);
18028    else if (type.equals("Reference"))
18029      return parseReference(xpp);
18030    else if (type.equals("Quantity"))
18031      return parseQuantity(xpp);
18032    else if (type.equals("Period"))
18033      return parsePeriod(xpp);
18034    else if (type.equals("Attachment"))
18035      return parseAttachment(xpp);
18036    else if (type.equals("Duration"))
18037      return parseDuration(xpp);
18038    else if (type.equals("Count"))
18039      return parseCount(xpp);
18040    else if (type.equals("Range"))
18041      return parseRange(xpp);
18042    else if (type.equals("Annotation"))
18043      return parseAnnotation(xpp);
18044    else if (type.equals("Money"))
18045      return parseMoney(xpp);
18046    else if (type.equals("Identifier"))
18047      return parseIdentifier(xpp);
18048    else if (type.equals("Coding"))
18049      return parseCoding(xpp);
18050    else if (type.equals("Signature"))
18051      return parseSignature(xpp);
18052    else if (type.equals("SampledData"))
18053      return parseSampledData(xpp);
18054    else if (type.equals("Ratio"))
18055      return parseRatio(xpp);
18056    else if (type.equals("Distance"))
18057      return parseDistance(xpp);
18058    else if (type.equals("Age"))
18059      return parseAge(xpp);
18060    else if (type.equals("CodeableConcept"))
18061      return parseCodeableConcept(xpp);
18062    else if (type.equals("SimpleQuantity"))
18063      return parseSimpleQuantity(xpp);
18064    else if (type.equals("Meta"))
18065      return parseMeta(xpp);
18066    else if (type.equals("Address"))
18067      return parseAddress(xpp);
18068    else if (type.equals("TriggerDefinition"))
18069      return parseTriggerDefinition(xpp);
18070    else if (type.equals("Contributor"))
18071      return parseContributor(xpp);
18072    else if (type.equals("DataRequirement"))
18073      return parseDataRequirement(xpp);
18074    else if (type.equals("Dosage"))
18075      return parseDosage(xpp);
18076    else if (type.equals("RelatedArtifact"))
18077      return parseRelatedArtifact(xpp);
18078    else if (type.equals("ContactDetail"))
18079      return parseContactDetail(xpp);
18080    else if (type.equals("HumanName"))
18081      return parseHumanName(xpp);
18082    else if (type.equals("ContactPoint"))
18083      return parseContactPoint(xpp);
18084    else if (type.equals("UsageContext"))
18085      return parseUsageContext(xpp);
18086    else if (type.equals("Timing"))
18087      return parseTiming(xpp);
18088    else if (type.equals("ElementDefinition"))
18089      return parseElementDefinition(xpp);
18090    else if (type.equals("ParameterDefinition"))
18091      return parseParameterDefinition(xpp);
18092    else if (type.equals("Parameters"))
18093      return parseParameters(xpp);
18094    else if (type.equals("Account"))
18095      return parseAccount(xpp);
18096    else if (type.equals("ActivityDefinition"))
18097      return parseActivityDefinition(xpp);
18098    else if (type.equals("AdverseEvent"))
18099      return parseAdverseEvent(xpp);
18100    else if (type.equals("AllergyIntolerance"))
18101      return parseAllergyIntolerance(xpp);
18102    else if (type.equals("Appointment"))
18103      return parseAppointment(xpp);
18104    else if (type.equals("AppointmentResponse"))
18105      return parseAppointmentResponse(xpp);
18106    else if (type.equals("AuditEvent"))
18107      return parseAuditEvent(xpp);
18108    else if (type.equals("Basic"))
18109      return parseBasic(xpp);
18110    else if (type.equals("Binary"))
18111      return parseBinary(xpp);
18112    else if (type.equals("BodySite"))
18113      return parseBodySite(xpp);
18114    else if (type.equals("Bundle"))
18115      return parseBundle(xpp);
18116    else if (type.equals("CapabilityStatement"))
18117      return parseCapabilityStatement(xpp);
18118    else if (type.equals("CarePlan"))
18119      return parseCarePlan(xpp);
18120    else if (type.equals("CareTeam"))
18121      return parseCareTeam(xpp);
18122    else if (type.equals("ChargeItem"))
18123      return parseChargeItem(xpp);
18124    else if (type.equals("Claim"))
18125      return parseClaim(xpp);
18126    else if (type.equals("ClaimResponse"))
18127      return parseClaimResponse(xpp);
18128    else if (type.equals("ClinicalImpression"))
18129      return parseClinicalImpression(xpp);
18130    else if (type.equals("CodeSystem"))
18131      return parseCodeSystem(xpp);
18132    else if (type.equals("Communication"))
18133      return parseCommunication(xpp);
18134    else if (type.equals("CommunicationRequest"))
18135      return parseCommunicationRequest(xpp);
18136    else if (type.equals("CompartmentDefinition"))
18137      return parseCompartmentDefinition(xpp);
18138    else if (type.equals("Composition"))
18139      return parseComposition(xpp);
18140    else if (type.equals("ConceptMap"))
18141      return parseConceptMap(xpp);
18142    else if (type.equals("Condition"))
18143      return parseCondition(xpp);
18144    else if (type.equals("Consent"))
18145      return parseConsent(xpp);
18146    else if (type.equals("Contract"))
18147      return parseContract(xpp);
18148    else if (type.equals("Coverage"))
18149      return parseCoverage(xpp);
18150    else if (type.equals("DataElement"))
18151      return parseDataElement(xpp);
18152    else if (type.equals("DetectedIssue"))
18153      return parseDetectedIssue(xpp);
18154    else if (type.equals("Device"))
18155      return parseDevice(xpp);
18156    else if (type.equals("DeviceComponent"))
18157      return parseDeviceComponent(xpp);
18158    else if (type.equals("DeviceMetric"))
18159      return parseDeviceMetric(xpp);
18160    else if (type.equals("DeviceRequest"))
18161      return parseDeviceRequest(xpp);
18162    else if (type.equals("DeviceUseStatement"))
18163      return parseDeviceUseStatement(xpp);
18164    else if (type.equals("DiagnosticReport"))
18165      return parseDiagnosticReport(xpp);
18166    else if (type.equals("DocumentManifest"))
18167      return parseDocumentManifest(xpp);
18168    else if (type.equals("DocumentReference"))
18169      return parseDocumentReference(xpp);
18170    else if (type.equals("EligibilityRequest"))
18171      return parseEligibilityRequest(xpp);
18172    else if (type.equals("EligibilityResponse"))
18173      return parseEligibilityResponse(xpp);
18174    else if (type.equals("Encounter"))
18175      return parseEncounter(xpp);
18176    else if (type.equals("Endpoint"))
18177      return parseEndpoint(xpp);
18178    else if (type.equals("EnrollmentRequest"))
18179      return parseEnrollmentRequest(xpp);
18180    else if (type.equals("EnrollmentResponse"))
18181      return parseEnrollmentResponse(xpp);
18182    else if (type.equals("EpisodeOfCare"))
18183      return parseEpisodeOfCare(xpp);
18184    else if (type.equals("ExpansionProfile"))
18185      return parseExpansionProfile(xpp);
18186    else if (type.equals("ExplanationOfBenefit"))
18187      return parseExplanationOfBenefit(xpp);
18188    else if (type.equals("FamilyMemberHistory"))
18189      return parseFamilyMemberHistory(xpp);
18190    else if (type.equals("Flag"))
18191      return parseFlag(xpp);
18192    else if (type.equals("Goal"))
18193      return parseGoal(xpp);
18194    else if (type.equals("GraphDefinition"))
18195      return parseGraphDefinition(xpp);
18196    else if (type.equals("Group"))
18197      return parseGroup(xpp);
18198    else if (type.equals("GuidanceResponse"))
18199      return parseGuidanceResponse(xpp);
18200    else if (type.equals("HealthcareService"))
18201      return parseHealthcareService(xpp);
18202    else if (type.equals("ImagingManifest"))
18203      return parseImagingManifest(xpp);
18204    else if (type.equals("ImagingStudy"))
18205      return parseImagingStudy(xpp);
18206    else if (type.equals("Immunization"))
18207      return parseImmunization(xpp);
18208    else if (type.equals("ImmunizationRecommendation"))
18209      return parseImmunizationRecommendation(xpp);
18210    else if (type.equals("ImplementationGuide"))
18211      return parseImplementationGuide(xpp);
18212    else if (type.equals("Library"))
18213      return parseLibrary(xpp);
18214    else if (type.equals("Linkage"))
18215      return parseLinkage(xpp);
18216    else if (type.equals("List"))
18217      return parseListResource(xpp);
18218    else if (type.equals("Location"))
18219      return parseLocation(xpp);
18220    else if (type.equals("Measure"))
18221      return parseMeasure(xpp);
18222    else if (type.equals("MeasureReport"))
18223      return parseMeasureReport(xpp);
18224    else if (type.equals("Media"))
18225      return parseMedia(xpp);
18226    else if (type.equals("Medication"))
18227      return parseMedication(xpp);
18228    else if (type.equals("MedicationAdministration"))
18229      return parseMedicationAdministration(xpp);
18230    else if (type.equals("MedicationDispense"))
18231      return parseMedicationDispense(xpp);
18232    else if (type.equals("MedicationRequest"))
18233      return parseMedicationRequest(xpp);
18234    else if (type.equals("MedicationStatement"))
18235      return parseMedicationStatement(xpp);
18236    else if (type.equals("MessageDefinition"))
18237      return parseMessageDefinition(xpp);
18238    else if (type.equals("MessageHeader"))
18239      return parseMessageHeader(xpp);
18240    else if (type.equals("NamingSystem"))
18241      return parseNamingSystem(xpp);
18242    else if (type.equals("NutritionOrder"))
18243      return parseNutritionOrder(xpp);
18244    else if (type.equals("Observation"))
18245      return parseObservation(xpp);
18246    else if (type.equals("OperationDefinition"))
18247      return parseOperationDefinition(xpp);
18248    else if (type.equals("OperationOutcome"))
18249      return parseOperationOutcome(xpp);
18250    else if (type.equals("Organization"))
18251      return parseOrganization(xpp);
18252    else if (type.equals("Patient"))
18253      return parsePatient(xpp);
18254    else if (type.equals("PaymentNotice"))
18255      return parsePaymentNotice(xpp);
18256    else if (type.equals("PaymentReconciliation"))
18257      return parsePaymentReconciliation(xpp);
18258    else if (type.equals("Person"))
18259      return parsePerson(xpp);
18260    else if (type.equals("PlanDefinition"))
18261      return parsePlanDefinition(xpp);
18262    else if (type.equals("Practitioner"))
18263      return parsePractitioner(xpp);
18264    else if (type.equals("PractitionerRole"))
18265      return parsePractitionerRole(xpp);
18266    else if (type.equals("Procedure"))
18267      return parseProcedure(xpp);
18268    else if (type.equals("ProcedureRequest"))
18269      return parseProcedureRequest(xpp);
18270    else if (type.equals("ProcessRequest"))
18271      return parseProcessRequest(xpp);
18272    else if (type.equals("ProcessResponse"))
18273      return parseProcessResponse(xpp);
18274    else if (type.equals("Provenance"))
18275      return parseProvenance(xpp);
18276    else if (type.equals("Questionnaire"))
18277      return parseQuestionnaire(xpp);
18278    else if (type.equals("QuestionnaireResponse"))
18279      return parseQuestionnaireResponse(xpp);
18280    else if (type.equals("ReferralRequest"))
18281      return parseReferralRequest(xpp);
18282    else if (type.equals("RelatedPerson"))
18283      return parseRelatedPerson(xpp);
18284    else if (type.equals("RequestGroup"))
18285      return parseRequestGroup(xpp);
18286    else if (type.equals("ResearchStudy"))
18287      return parseResearchStudy(xpp);
18288    else if (type.equals("ResearchSubject"))
18289      return parseResearchSubject(xpp);
18290    else if (type.equals("RiskAssessment"))
18291      return parseRiskAssessment(xpp);
18292    else if (type.equals("Schedule"))
18293      return parseSchedule(xpp);
18294    else if (type.equals("SearchParameter"))
18295      return parseSearchParameter(xpp);
18296    else if (type.equals("Sequence"))
18297      return parseSequence(xpp);
18298    else if (type.equals("ServiceDefinition"))
18299      return parseServiceDefinition(xpp);
18300    else if (type.equals("Slot"))
18301      return parseSlot(xpp);
18302    else if (type.equals("Specimen"))
18303      return parseSpecimen(xpp);
18304    else if (type.equals("StructureDefinition"))
18305      return parseStructureDefinition(xpp);
18306    else if (type.equals("StructureMap"))
18307      return parseStructureMap(xpp);
18308    else if (type.equals("Subscription"))
18309      return parseSubscription(xpp);
18310    else if (type.equals("Substance"))
18311      return parseSubstance(xpp);
18312    else if (type.equals("SupplyDelivery"))
18313      return parseSupplyDelivery(xpp);
18314    else if (type.equals("SupplyRequest"))
18315      return parseSupplyRequest(xpp);
18316    else if (type.equals("Task"))
18317      return parseTask(xpp);
18318    else if (type.equals("TestReport"))
18319      return parseTestReport(xpp);
18320    else if (type.equals("TestScript"))
18321      return parseTestScript(xpp);
18322    else if (type.equals("ValueSet"))
18323      return parseValueSet(xpp);
18324    else if (type.equals("VisionPrescription"))
18325      return parseVisionPrescription(xpp);
18326    else if (type.equals("date"))
18327      return parseDate(xpp);
18328    else if (type.equals("dateTime"))
18329      return parseDateTime(xpp);
18330    else if (type.equals("code"))
18331      return parseCode(xpp);
18332    else if (type.equals("string"))
18333      return parseString(xpp);
18334    else if (type.equals("integer"))
18335      return parseInteger(xpp);
18336    else if (type.equals("oid"))
18337      return parseOid(xpp);
18338    else if (type.equals("uri"))
18339      return parseUri(xpp);
18340    else if (type.equals("uuid"))
18341      return parseUuid(xpp);
18342    else if (type.equals("instant"))
18343      return parseInstant(xpp);
18344    else if (type.equals("boolean"))
18345      return parseBoolean(xpp);
18346    else if (type.equals("base64Binary"))
18347      return parseBase64Binary(xpp);
18348    else if (type.equals("unsignedInt"))
18349      return parseUnsignedInt(xpp);
18350    else if (type.equals("markdown"))
18351      return parseMarkdown(xpp);
18352    else if (type.equals("time"))
18353      return parseTime(xpp);
18354    else if (type.equals("id"))
18355      return parseId(xpp);
18356    else if (type.equals("positiveInt"))
18357      return parsePositiveInt(xpp);
18358    else if (type.equals("decimal"))
18359      return parseDecimal(xpp);
18360    throw new FHIRFormatError("Unknown type "+type);
18361  }
18362
18363  private boolean nameIsTypeName(XmlPullParser xpp, String prefix) {
18364        if (xpp.getName().equals(prefix+"Reference"))
18365      return true;
18366    if (xpp.getName().equals(prefix+"Quantity"))
18367      return true;
18368    if (xpp.getName().equals(prefix+"Period"))
18369      return true;
18370    if (xpp.getName().equals(prefix+"Attachment"))
18371      return true;
18372    if (xpp.getName().equals(prefix+"Duration"))
18373      return true;
18374    if (xpp.getName().equals(prefix+"Count"))
18375      return true;
18376    if (xpp.getName().equals(prefix+"Range"))
18377      return true;
18378    if (xpp.getName().equals(prefix+"Annotation"))
18379      return true;
18380    if (xpp.getName().equals(prefix+"Money"))
18381      return true;
18382    if (xpp.getName().equals(prefix+"Identifier"))
18383      return true;
18384    if (xpp.getName().equals(prefix+"Coding"))
18385      return true;
18386    if (xpp.getName().equals(prefix+"Signature"))
18387      return true;
18388    if (xpp.getName().equals(prefix+"SampledData"))
18389      return true;
18390    if (xpp.getName().equals(prefix+"Ratio"))
18391      return true;
18392    if (xpp.getName().equals(prefix+"Distance"))
18393      return true;
18394    if (xpp.getName().equals(prefix+"Age"))
18395      return true;
18396    if (xpp.getName().equals(prefix+"CodeableConcept"))
18397      return true;
18398    if (xpp.getName().equals(prefix+"SimpleQuantity"))
18399      return true;
18400    if (xpp.getName().equals(prefix+"Meta"))
18401      return true;
18402    if (xpp.getName().equals(prefix+"Address"))
18403      return true;
18404    if (xpp.getName().equals(prefix+"TriggerDefinition"))
18405      return true;
18406    if (xpp.getName().equals(prefix+"Contributor"))
18407      return true;
18408    if (xpp.getName().equals(prefix+"DataRequirement"))
18409      return true;
18410    if (xpp.getName().equals(prefix+"Dosage"))
18411      return true;
18412    if (xpp.getName().equals(prefix+"RelatedArtifact"))
18413      return true;
18414    if (xpp.getName().equals(prefix+"ContactDetail"))
18415      return true;
18416    if (xpp.getName().equals(prefix+"HumanName"))
18417      return true;
18418    if (xpp.getName().equals(prefix+"ContactPoint"))
18419      return true;
18420    if (xpp.getName().equals(prefix+"UsageContext"))
18421      return true;
18422    if (xpp.getName().equals(prefix+"Timing"))
18423      return true;
18424    if (xpp.getName().equals(prefix+"ElementDefinition"))
18425      return true;
18426    if (xpp.getName().equals(prefix+"ParameterDefinition"))
18427      return true;
18428    if (xpp.getName().equals(prefix+"Parameters"))
18429      return true;
18430    if (xpp.getName().equals(prefix+"Account"))
18431      return true;
18432    if (xpp.getName().equals(prefix+"ActivityDefinition"))
18433      return true;
18434    if (xpp.getName().equals(prefix+"AdverseEvent"))
18435      return true;
18436    if (xpp.getName().equals(prefix+"AllergyIntolerance"))
18437      return true;
18438    if (xpp.getName().equals(prefix+"Appointment"))
18439      return true;
18440    if (xpp.getName().equals(prefix+"AppointmentResponse"))
18441      return true;
18442    if (xpp.getName().equals(prefix+"AuditEvent"))
18443      return true;
18444    if (xpp.getName().equals(prefix+"Basic"))
18445      return true;
18446    if (xpp.getName().equals(prefix+"Binary"))
18447      return true;
18448    if (xpp.getName().equals(prefix+"BodySite"))
18449      return true;
18450    if (xpp.getName().equals(prefix+"Bundle"))
18451      return true;
18452    if (xpp.getName().equals(prefix+"CapabilityStatement"))
18453      return true;
18454    if (xpp.getName().equals(prefix+"CarePlan"))
18455      return true;
18456    if (xpp.getName().equals(prefix+"CareTeam"))
18457      return true;
18458    if (xpp.getName().equals(prefix+"ChargeItem"))
18459      return true;
18460    if (xpp.getName().equals(prefix+"Claim"))
18461      return true;
18462    if (xpp.getName().equals(prefix+"ClaimResponse"))
18463      return true;
18464    if (xpp.getName().equals(prefix+"ClinicalImpression"))
18465      return true;
18466    if (xpp.getName().equals(prefix+"CodeSystem"))
18467      return true;
18468    if (xpp.getName().equals(prefix+"Communication"))
18469      return true;
18470    if (xpp.getName().equals(prefix+"CommunicationRequest"))
18471      return true;
18472    if (xpp.getName().equals(prefix+"CompartmentDefinition"))
18473      return true;
18474    if (xpp.getName().equals(prefix+"Composition"))
18475      return true;
18476    if (xpp.getName().equals(prefix+"ConceptMap"))
18477      return true;
18478    if (xpp.getName().equals(prefix+"Condition"))
18479      return true;
18480    if (xpp.getName().equals(prefix+"Consent"))
18481      return true;
18482    if (xpp.getName().equals(prefix+"Contract"))
18483      return true;
18484    if (xpp.getName().equals(prefix+"Coverage"))
18485      return true;
18486    if (xpp.getName().equals(prefix+"DataElement"))
18487      return true;
18488    if (xpp.getName().equals(prefix+"DetectedIssue"))
18489      return true;
18490    if (xpp.getName().equals(prefix+"Device"))
18491      return true;
18492    if (xpp.getName().equals(prefix+"DeviceComponent"))
18493      return true;
18494    if (xpp.getName().equals(prefix+"DeviceMetric"))
18495      return true;
18496    if (xpp.getName().equals(prefix+"DeviceRequest"))
18497      return true;
18498    if (xpp.getName().equals(prefix+"DeviceUseStatement"))
18499      return true;
18500    if (xpp.getName().equals(prefix+"DiagnosticReport"))
18501      return true;
18502    if (xpp.getName().equals(prefix+"DocumentManifest"))
18503      return true;
18504    if (xpp.getName().equals(prefix+"DocumentReference"))
18505      return true;
18506    if (xpp.getName().equals(prefix+"EligibilityRequest"))
18507      return true;
18508    if (xpp.getName().equals(prefix+"EligibilityResponse"))
18509      return true;
18510    if (xpp.getName().equals(prefix+"Encounter"))
18511      return true;
18512    if (xpp.getName().equals(prefix+"Endpoint"))
18513      return true;
18514    if (xpp.getName().equals(prefix+"EnrollmentRequest"))
18515      return true;
18516    if (xpp.getName().equals(prefix+"EnrollmentResponse"))
18517      return true;
18518    if (xpp.getName().equals(prefix+"EpisodeOfCare"))
18519      return true;
18520    if (xpp.getName().equals(prefix+"ExpansionProfile"))
18521      return true;
18522    if (xpp.getName().equals(prefix+"ExplanationOfBenefit"))
18523      return true;
18524    if (xpp.getName().equals(prefix+"FamilyMemberHistory"))
18525      return true;
18526    if (xpp.getName().equals(prefix+"Flag"))
18527      return true;
18528    if (xpp.getName().equals(prefix+"Goal"))
18529      return true;
18530    if (xpp.getName().equals(prefix+"GraphDefinition"))
18531      return true;
18532    if (xpp.getName().equals(prefix+"Group"))
18533      return true;
18534    if (xpp.getName().equals(prefix+"GuidanceResponse"))
18535      return true;
18536    if (xpp.getName().equals(prefix+"HealthcareService"))
18537      return true;
18538    if (xpp.getName().equals(prefix+"ImagingManifest"))
18539      return true;
18540    if (xpp.getName().equals(prefix+"ImagingStudy"))
18541      return true;
18542    if (xpp.getName().equals(prefix+"Immunization"))
18543      return true;
18544    if (xpp.getName().equals(prefix+"ImmunizationRecommendation"))
18545      return true;
18546    if (xpp.getName().equals(prefix+"ImplementationGuide"))
18547      return true;
18548    if (xpp.getName().equals(prefix+"Library"))
18549      return true;
18550    if (xpp.getName().equals(prefix+"Linkage"))
18551      return true;
18552    if (xpp.getName().equals(prefix+"List"))
18553      return true;
18554    if (xpp.getName().equals(prefix+"Location"))
18555      return true;
18556    if (xpp.getName().equals(prefix+"Measure"))
18557      return true;
18558    if (xpp.getName().equals(prefix+"MeasureReport"))
18559      return true;
18560    if (xpp.getName().equals(prefix+"Media"))
18561      return true;
18562    if (xpp.getName().equals(prefix+"Medication"))
18563      return true;
18564    if (xpp.getName().equals(prefix+"MedicationAdministration"))
18565      return true;
18566    if (xpp.getName().equals(prefix+"MedicationDispense"))
18567      return true;
18568    if (xpp.getName().equals(prefix+"MedicationRequest"))
18569      return true;
18570    if (xpp.getName().equals(prefix+"MedicationStatement"))
18571      return true;
18572    if (xpp.getName().equals(prefix+"MessageDefinition"))
18573      return true;
18574    if (xpp.getName().equals(prefix+"MessageHeader"))
18575      return true;
18576    if (xpp.getName().equals(prefix+"NamingSystem"))
18577      return true;
18578    if (xpp.getName().equals(prefix+"NutritionOrder"))
18579      return true;
18580    if (xpp.getName().equals(prefix+"Observation"))
18581      return true;
18582    if (xpp.getName().equals(prefix+"OperationDefinition"))
18583      return true;
18584    if (xpp.getName().equals(prefix+"OperationOutcome"))
18585      return true;
18586    if (xpp.getName().equals(prefix+"Organization"))
18587      return true;
18588    if (xpp.getName().equals(prefix+"Patient"))
18589      return true;
18590    if (xpp.getName().equals(prefix+"PaymentNotice"))
18591      return true;
18592    if (xpp.getName().equals(prefix+"PaymentReconciliation"))
18593      return true;
18594    if (xpp.getName().equals(prefix+"Person"))
18595      return true;
18596    if (xpp.getName().equals(prefix+"PlanDefinition"))
18597      return true;
18598    if (xpp.getName().equals(prefix+"Practitioner"))
18599      return true;
18600    if (xpp.getName().equals(prefix+"PractitionerRole"))
18601      return true;
18602    if (xpp.getName().equals(prefix+"Procedure"))
18603      return true;
18604    if (xpp.getName().equals(prefix+"ProcedureRequest"))
18605      return true;
18606    if (xpp.getName().equals(prefix+"ProcessRequest"))
18607      return true;
18608    if (xpp.getName().equals(prefix+"ProcessResponse"))
18609      return true;
18610    if (xpp.getName().equals(prefix+"Provenance"))
18611      return true;
18612    if (xpp.getName().equals(prefix+"Questionnaire"))
18613      return true;
18614    if (xpp.getName().equals(prefix+"QuestionnaireResponse"))
18615      return true;
18616    if (xpp.getName().equals(prefix+"ReferralRequest"))
18617      return true;
18618    if (xpp.getName().equals(prefix+"RelatedPerson"))
18619      return true;
18620    if (xpp.getName().equals(prefix+"RequestGroup"))
18621      return true;
18622    if (xpp.getName().equals(prefix+"ResearchStudy"))
18623      return true;
18624    if (xpp.getName().equals(prefix+"ResearchSubject"))
18625      return true;
18626    if (xpp.getName().equals(prefix+"RiskAssessment"))
18627      return true;
18628    if (xpp.getName().equals(prefix+"Schedule"))
18629      return true;
18630    if (xpp.getName().equals(prefix+"SearchParameter"))
18631      return true;
18632    if (xpp.getName().equals(prefix+"Sequence"))
18633      return true;
18634    if (xpp.getName().equals(prefix+"ServiceDefinition"))
18635      return true;
18636    if (xpp.getName().equals(prefix+"Slot"))
18637      return true;
18638    if (xpp.getName().equals(prefix+"Specimen"))
18639      return true;
18640    if (xpp.getName().equals(prefix+"StructureDefinition"))
18641      return true;
18642    if (xpp.getName().equals(prefix+"StructureMap"))
18643      return true;
18644    if (xpp.getName().equals(prefix+"Subscription"))
18645      return true;
18646    if (xpp.getName().equals(prefix+"Substance"))
18647      return true;
18648    if (xpp.getName().equals(prefix+"SupplyDelivery"))
18649      return true;
18650    if (xpp.getName().equals(prefix+"SupplyRequest"))
18651      return true;
18652    if (xpp.getName().equals(prefix+"Task"))
18653      return true;
18654    if (xpp.getName().equals(prefix+"TestReport"))
18655      return true;
18656    if (xpp.getName().equals(prefix+"TestScript"))
18657      return true;
18658    if (xpp.getName().equals(prefix+"ValueSet"))
18659      return true;
18660    if (xpp.getName().equals(prefix+"VisionPrescription"))
18661      return true;
18662    if (xpp.getName().equals(prefix+"Date"))
18663      return true;
18664    if (xpp.getName().equals(prefix+"DateTime"))
18665      return true;
18666    if (xpp.getName().equals(prefix+"Code"))
18667      return true;
18668    if (xpp.getName().equals(prefix+"String"))
18669      return true;
18670    if (xpp.getName().equals(prefix+"Integer"))
18671      return true;
18672    if (xpp.getName().equals(prefix+"Oid"))
18673      return true;
18674    if (xpp.getName().equals(prefix+"Uri"))
18675      return true;
18676    if (xpp.getName().equals(prefix+"Uuid"))
18677      return true;
18678    if (xpp.getName().equals(prefix+"Instant"))
18679      return true;
18680    if (xpp.getName().equals(prefix+"Boolean"))
18681      return true;
18682    if (xpp.getName().equals(prefix+"Base64Binary"))
18683      return true;
18684    if (xpp.getName().equals(prefix+"UnsignedInt"))
18685      return true;
18686    if (xpp.getName().equals(prefix+"Markdown"))
18687      return true;
18688    if (xpp.getName().equals(prefix+"Time"))
18689      return true;
18690    if (xpp.getName().equals(prefix+"Id"))
18691      return true;
18692    if (xpp.getName().equals(prefix+"PositiveInt"))
18693      return true;
18694    if (xpp.getName().equals(prefix+"Decimal"))
18695      return true;
18696    return false;
18697  }
18698  protected void composeElementElements(Element element) throws IOException {
18699    for (Extension e : element.getExtension()) {
18700      composeExtension("extension", e);
18701    }
18702  }
18703
18704  protected void composeBackboneElements(BackboneElement element) throws IOException {
18705    composeElementElements(element);
18706    for (Extension e : element.getModifierExtension()) {
18707      composeExtension("modifierExtension", e);
18708    }
18709  }
18710
18711  protected <E extends Enum<E>> void composeEnumeration(String name, Enumeration<E> value, EnumFactory e) throws IOException {
18712    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {
18713      composeElementAttributes(value);
18714      if (value.getValue() != null) 
18715        xml.attribute("value", e.toCode(value.getValue()));
18716        
18717      xml.enter(FHIR_NS, name);
18718      composeElementElements(value);
18719      composeElementClose(value);
18720      xml.exit(FHIR_NS, name);
18721    }    
18722  }    
18723
18724  protected void composeDate(String name, DateType value) throws IOException  {
18725    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// date
18726      composeElementAttributes(value);
18727      if (value.asStringValue() != null) 
18728        xml.attribute("value", value.asStringValue());
18729        
18730      xml.enter(FHIR_NS, name);
18731      composeElementElements(value);
18732      composeElementClose(value);
18733      xml.exit(FHIR_NS, name);
18734    }    
18735  }    
18736
18737  protected void composeDateTime(String name, DateTimeType value) throws IOException  {
18738    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// dateTime
18739      composeElementAttributes(value);
18740      if (value.asStringValue() != null) 
18741        xml.attribute("value", value.asStringValue());
18742        
18743      xml.enter(FHIR_NS, name);
18744      composeElementElements(value);
18745      composeElementClose(value);
18746      xml.exit(FHIR_NS, name);
18747    }    
18748  }    
18749
18750  protected void composeCode(String name, CodeType value) throws IOException  {
18751    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// code
18752      composeElementAttributes(value);
18753      if (value.asStringValue() != null) 
18754        xml.attribute("value", value.asStringValue());
18755        
18756      xml.enter(FHIR_NS, name);
18757      composeElementElements(value);
18758      composeElementClose(value);
18759      xml.exit(FHIR_NS, name);
18760    }    
18761  }    
18762
18763  protected void composeString(String name, StringType value) throws IOException  {
18764    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// string
18765      composeElementAttributes(value);
18766      if (value.asStringValue() != null) 
18767        xml.attribute("value", value.asStringValue());
18768        
18769      xml.enter(FHIR_NS, name);
18770      composeElementElements(value);
18771      composeElementClose(value);
18772      xml.exit(FHIR_NS, name);
18773    }    
18774  }    
18775
18776  protected void composeInteger(String name, IntegerType value) throws IOException  {
18777    if (value != null) { // integer
18778      composeElementAttributes(value);
18779      if (value.asStringValue() != null) 
18780        xml.attribute("value", value.asStringValue());
18781        
18782      xml.enter(FHIR_NS, name);
18783      composeElementElements(value);
18784      composeElementClose(value);
18785      xml.exit(FHIR_NS, name);
18786    }    
18787  }    
18788
18789  protected void composeOid(String name, OidType value) throws IOException  {
18790    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// oid
18791      composeElementAttributes(value);
18792      if (value.asStringValue() != null) 
18793        xml.attribute("value", value.asStringValue());
18794        
18795      xml.enter(FHIR_NS, name);
18796      composeElementElements(value);
18797      composeElementClose(value);
18798      xml.exit(FHIR_NS, name);
18799    }    
18800  }    
18801
18802  protected void composeUri(String name, UriType value) throws IOException  {
18803    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// uri
18804      composeElementAttributes(value);
18805      if (value.asStringValue() != null) 
18806        xml.attribute("value", value.asStringValue());
18807        
18808      xml.enter(FHIR_NS, name);
18809      composeElementElements(value);
18810      composeElementClose(value);
18811      xml.exit(FHIR_NS, name);
18812    }    
18813  }    
18814
18815  protected void composeUuid(String name, UuidType value) throws IOException  {
18816    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// uuid
18817      composeElementAttributes(value);
18818      if (value.asStringValue() != null) 
18819        xml.attribute("value", value.asStringValue());
18820        
18821      xml.enter(FHIR_NS, name);
18822      composeElementElements(value);
18823      composeElementClose(value);
18824      xml.exit(FHIR_NS, name);
18825    }    
18826  }    
18827
18828  protected void composeInstant(String name, InstantType value) throws IOException  {
18829    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// instant
18830      composeElementAttributes(value);
18831      if (value.asStringValue() != null) 
18832        xml.attribute("value", value.asStringValue());
18833        
18834      xml.enter(FHIR_NS, name);
18835      composeElementElements(value);
18836      composeElementClose(value);
18837      xml.exit(FHIR_NS, name);
18838    }    
18839  }    
18840
18841  protected void composeBoolean(String name, BooleanType value) throws IOException  {
18842    if (value != null) { // boolean
18843      composeElementAttributes(value);
18844      if (value.asStringValue() != null) 
18845        xml.attribute("value", value.asStringValue());
18846        
18847      xml.enter(FHIR_NS, name);
18848      composeElementElements(value);
18849      composeElementClose(value);
18850      xml.exit(FHIR_NS, name);
18851    }    
18852  }    
18853
18854  protected void composeBase64Binary(String name, Base64BinaryType value) throws IOException  {
18855    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// base64Binary
18856      composeElementAttributes(value);
18857      if (value.asStringValue() != null) 
18858        xml.attribute("value", value.asStringValue());
18859        
18860      xml.enter(FHIR_NS, name);
18861      composeElementElements(value);
18862      composeElementClose(value);
18863      xml.exit(FHIR_NS, name);
18864    }    
18865  }    
18866
18867  protected void composeUnsignedInt(String name, UnsignedIntType value) throws IOException  {
18868    if (value != null) { // unsignedInt
18869      composeElementAttributes(value);
18870      if (value.asStringValue() != null) 
18871        xml.attribute("value", value.asStringValue());
18872        
18873      xml.enter(FHIR_NS, name);
18874      composeElementElements(value);
18875      composeElementClose(value);
18876      xml.exit(FHIR_NS, name);
18877    }    
18878  }    
18879
18880  protected void composeMarkdown(String name, MarkdownType value) throws IOException  {
18881    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// markdown
18882      composeElementAttributes(value);
18883      if (value.asStringValue() != null) 
18884        xml.attribute("value", value.asStringValue());
18885        
18886      xml.enter(FHIR_NS, name);
18887      composeElementElements(value);
18888      composeElementClose(value);
18889      xml.exit(FHIR_NS, name);
18890    }    
18891  }    
18892
18893  protected void composeTime(String name, TimeType value) throws IOException  {
18894    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// time
18895      composeElementAttributes(value);
18896      if (value.asStringValue() != null) 
18897        xml.attribute("value", value.asStringValue());
18898        
18899      xml.enter(FHIR_NS, name);
18900      composeElementElements(value);
18901      composeElementClose(value);
18902      xml.exit(FHIR_NS, name);
18903    }    
18904  }    
18905
18906  protected void composeId(String name, IdType value) throws IOException  {
18907    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// id
18908      composeElementAttributes(value);
18909      if (value.asStringValue() != null) 
18910        xml.attribute("value", value.asStringValue());
18911        
18912      xml.enter(FHIR_NS, name);
18913      composeElementElements(value);
18914      composeElementClose(value);
18915      xml.exit(FHIR_NS, name);
18916    }    
18917  }    
18918
18919  protected void composePositiveInt(String name, PositiveIntType value) throws IOException  {
18920    if (value != null) { // positiveInt
18921      composeElementAttributes(value);
18922      if (value.asStringValue() != null) 
18923        xml.attribute("value", value.asStringValue());
18924        
18925      xml.enter(FHIR_NS, name);
18926      composeElementElements(value);
18927      composeElementClose(value);
18928      xml.exit(FHIR_NS, name);
18929    }    
18930  }    
18931
18932  protected void composeDecimal(String name, DecimalType value) throws IOException  {
18933    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// decimal
18934      composeElementAttributes(value);
18935      if (value.asStringValue() != null) 
18936        xml.attribute("value", value.asStringValue());
18937        
18938      xml.enter(FHIR_NS, name);
18939      composeElementElements(value);
18940      composeElementClose(value);
18941      xml.exit(FHIR_NS, name);
18942    }    
18943  }    
18944
18945  protected void composeExtension(String name, Extension element) throws IOException {
18946    if (element != null) {
18947      composeElementAttributes(element);
18948      if (element.hasUrlElement())
18949        xml.attribute("url", element.getUrlElement().getValue());
18950      xml.enter(FHIR_NS, name);
18951      composeExtensionElements(element);
18952      composeElementClose(element);
18953      xml.exit(FHIR_NS, name);
18954    }
18955  }
18956
18957  protected void composeExtensionElements(Extension element) throws IOException {
18958      composeElementElements(element);
18959      if (element.hasValue()) {
18960        composeType("value", element.getValue());
18961      }  }
18962
18963  protected void composeNarrative(String name, Narrative element) throws IOException {
18964    if (element != null) {
18965      composeElementAttributes(element);
18966      xml.enter(FHIR_NS, name);
18967      composeNarrativeElements(element);
18968      composeElementClose(element);
18969      xml.exit(FHIR_NS, name);
18970    }
18971  }
18972
18973  protected void composeNarrativeElements(Narrative element) throws IOException {
18974      composeElementElements(element);
18975      if (element.hasStatusElement())
18976        composeEnumeration("status", element.getStatusElement(), new Narrative.NarrativeStatusEnumFactory());
18977      if (element.hasDiv()) {
18978        composeXhtml("div", element.getDiv());
18979      }
18980  }
18981
18982  protected void composeDuration(String name, Duration element) throws IOException {
18983    if (element != null) {
18984      composeTypeAttributes(element);
18985      xml.enter(FHIR_NS, name);
18986      composeDurationElements(element);
18987      composeElementClose(element);
18988      xml.exit(FHIR_NS, name);
18989    }
18990  }
18991
18992  protected void composeDurationElements(Duration element) throws IOException {
18993      composeQuantityElements(element);
18994  }
18995
18996  protected void composeCount(String name, Count element) throws IOException {
18997    if (element != null) {
18998      composeTypeAttributes(element);
18999      xml.enter(FHIR_NS, name);
19000      composeCountElements(element);
19001      composeElementClose(element);
19002      xml.exit(FHIR_NS, name);
19003    }
19004  }
19005
19006  protected void composeCountElements(Count element) throws IOException {
19007      composeQuantityElements(element);
19008  }
19009
19010  protected void composeMoney(String name, Money element) throws IOException {
19011    if (element != null) {
19012      composeTypeAttributes(element);
19013      xml.enter(FHIR_NS, name);
19014      composeMoneyElements(element);
19015      composeElementClose(element);
19016      xml.exit(FHIR_NS, name);
19017    }
19018  }
19019
19020  protected void composeMoneyElements(Money element) throws IOException {
19021      composeQuantityElements(element);
19022  }
19023
19024  protected void composeDistance(String name, Distance element) throws IOException {
19025    if (element != null) {
19026      composeTypeAttributes(element);
19027      xml.enter(FHIR_NS, name);
19028      composeDistanceElements(element);
19029      composeElementClose(element);
19030      xml.exit(FHIR_NS, name);
19031    }
19032  }
19033
19034  protected void composeDistanceElements(Distance element) throws IOException {
19035      composeQuantityElements(element);
19036  }
19037
19038  protected void composeAge(String name, Age element) throws IOException {
19039    if (element != null) {
19040      composeTypeAttributes(element);
19041      xml.enter(FHIR_NS, name);
19042      composeAgeElements(element);
19043      composeElementClose(element);
19044      xml.exit(FHIR_NS, name);
19045    }
19046  }
19047
19048  protected void composeAgeElements(Age element) throws IOException {
19049      composeQuantityElements(element);
19050  }
19051
19052  protected void composeReference(String name, Reference element) throws IOException {
19053    if (element != null) {
19054      composeTypeAttributes(element);
19055      xml.enter(FHIR_NS, name);
19056      composeReferenceElements(element);
19057      composeElementClose(element);
19058      xml.exit(FHIR_NS, name);
19059    }
19060  }
19061
19062  protected void composeReferenceElements(Reference element) throws IOException {
19063      composeElementElements(element);
19064      if (element.hasReferenceElement()) {
19065        composeString("reference", element.getReferenceElement());
19066      }
19067      if (element.hasIdentifier()) {
19068        composeIdentifier("identifier", element.getIdentifier());
19069      }
19070      if (element.hasDisplayElement()) {
19071        composeString("display", element.getDisplayElement());
19072      }
19073  }
19074
19075  protected void composeQuantity(String name, Quantity element) throws IOException {
19076    if (element != null) {
19077      composeTypeAttributes(element);
19078      xml.enter(FHIR_NS, name);
19079      composeQuantityElements(element);
19080      composeElementClose(element);
19081      xml.exit(FHIR_NS, name);
19082    }
19083  }
19084
19085  protected void composeQuantityElements(Quantity element) throws IOException {
19086      composeElementElements(element);
19087      if (element.hasValueElement()) {
19088        composeDecimal("value", element.getValueElement());
19089      }
19090      if (element.hasComparatorElement())
19091        composeEnumeration("comparator", element.getComparatorElement(), new Quantity.QuantityComparatorEnumFactory());
19092      if (element.hasUnitElement()) {
19093        composeString("unit", element.getUnitElement());
19094      }
19095      if (element.hasSystemElement()) {
19096        composeUri("system", element.getSystemElement());
19097      }
19098      if (element.hasCodeElement()) {
19099        composeCode("code", element.getCodeElement());
19100      }
19101  }
19102
19103  protected void composePeriod(String name, Period element) throws IOException {
19104    if (element != null) {
19105      composeTypeAttributes(element);
19106      xml.enter(FHIR_NS, name);
19107      composePeriodElements(element);
19108      composeElementClose(element);
19109      xml.exit(FHIR_NS, name);
19110    }
19111  }
19112
19113  protected void composePeriodElements(Period element) throws IOException {
19114      composeElementElements(element);
19115      if (element.hasStartElement()) {
19116        composeDateTime("start", element.getStartElement());
19117      }
19118      if (element.hasEndElement()) {
19119        composeDateTime("end", element.getEndElement());
19120      }
19121  }
19122
19123  protected void composeAttachment(String name, Attachment element) throws IOException {
19124    if (element != null) {
19125      composeTypeAttributes(element);
19126      xml.enter(FHIR_NS, name);
19127      composeAttachmentElements(element);
19128      composeElementClose(element);
19129      xml.exit(FHIR_NS, name);
19130    }
19131  }
19132
19133  protected void composeAttachmentElements(Attachment element) throws IOException {
19134      composeElementElements(element);
19135      if (element.hasContentTypeElement()) {
19136        composeCode("contentType", element.getContentTypeElement());
19137      }
19138      if (element.hasLanguageElement()) {
19139        composeCode("language", element.getLanguageElement());
19140      }
19141      if (element.hasDataElement()) {
19142        composeBase64Binary("data", element.getDataElement());
19143      }
19144      if (element.hasUrlElement()) {
19145        composeUri("url", element.getUrlElement());
19146      }
19147      if (element.hasSizeElement()) {
19148        composeUnsignedInt("size", element.getSizeElement());
19149      }
19150      if (element.hasHashElement()) {
19151        composeBase64Binary("hash", element.getHashElement());
19152      }
19153      if (element.hasTitleElement()) {
19154        composeString("title", element.getTitleElement());
19155      }
19156      if (element.hasCreationElement()) {
19157        composeDateTime("creation", element.getCreationElement());
19158      }
19159  }
19160
19161  protected void composeRange(String name, Range element) throws IOException {
19162    if (element != null) {
19163      composeTypeAttributes(element);
19164      xml.enter(FHIR_NS, name);
19165      composeRangeElements(element);
19166      composeElementClose(element);
19167      xml.exit(FHIR_NS, name);
19168    }
19169  }
19170
19171  protected void composeRangeElements(Range element) throws IOException {
19172      composeElementElements(element);
19173      if (element.hasLow()) {
19174        composeSimpleQuantity("low", element.getLow());
19175      }
19176      if (element.hasHigh()) {
19177        composeSimpleQuantity("high", element.getHigh());
19178      }
19179  }
19180
19181  protected void composeAnnotation(String name, Annotation element) throws IOException {
19182    if (element != null) {
19183      composeTypeAttributes(element);
19184      xml.enter(FHIR_NS, name);
19185      composeAnnotationElements(element);
19186      composeElementClose(element);
19187      xml.exit(FHIR_NS, name);
19188    }
19189  }
19190
19191  protected void composeAnnotationElements(Annotation element) throws IOException {
19192      composeElementElements(element);
19193      if (element.hasAuthor()) {
19194        composeType("author", element.getAuthor());
19195      }      if (element.hasTimeElement()) {
19196        composeDateTime("time", element.getTimeElement());
19197      }
19198      if (element.hasTextElement()) {
19199        composeString("text", element.getTextElement());
19200      }
19201  }
19202
19203  protected void composeIdentifier(String name, Identifier element) throws IOException {
19204    if (element != null) {
19205      composeTypeAttributes(element);
19206      xml.enter(FHIR_NS, name);
19207      composeIdentifierElements(element);
19208      composeElementClose(element);
19209      xml.exit(FHIR_NS, name);
19210    }
19211  }
19212
19213  protected void composeIdentifierElements(Identifier element) throws IOException {
19214      composeElementElements(element);
19215      if (element.hasUseElement())
19216        composeEnumeration("use", element.getUseElement(), new Identifier.IdentifierUseEnumFactory());
19217      if (element.hasType()) {
19218        composeCodeableConcept("type", element.getType());
19219      }
19220      if (element.hasSystemElement()) {
19221        composeUri("system", element.getSystemElement());
19222      }
19223      if (element.hasValueElement()) {
19224        composeString("value", element.getValueElement());
19225      }
19226      if (element.hasPeriod()) {
19227        composePeriod("period", element.getPeriod());
19228      }
19229      if (element.hasAssigner()) {
19230        composeReference("assigner", element.getAssigner());
19231      }
19232  }
19233
19234  protected void composeCoding(String name, Coding element) throws IOException {
19235    if (element != null) {
19236      composeTypeAttributes(element);
19237      xml.enter(FHIR_NS, name);
19238      composeCodingElements(element);
19239      composeElementClose(element);
19240      xml.exit(FHIR_NS, name);
19241    }
19242  }
19243
19244  protected void composeCodingElements(Coding element) throws IOException {
19245      composeElementElements(element);
19246      if (element.hasSystemElement()) {
19247        composeUri("system", element.getSystemElement());
19248      }
19249      if (element.hasVersionElement()) {
19250        composeString("version", element.getVersionElement());
19251      }
19252      if (element.hasCodeElement()) {
19253        composeCode("code", element.getCodeElement());
19254      }
19255      if (element.hasDisplayElement()) {
19256        composeString("display", element.getDisplayElement());
19257      }
19258      if (element.hasUserSelectedElement()) {
19259        composeBoolean("userSelected", element.getUserSelectedElement());
19260      }
19261  }
19262
19263  protected void composeSignature(String name, Signature element) throws IOException {
19264    if (element != null) {
19265      composeTypeAttributes(element);
19266      xml.enter(FHIR_NS, name);
19267      composeSignatureElements(element);
19268      composeElementClose(element);
19269      xml.exit(FHIR_NS, name);
19270    }
19271  }
19272
19273  protected void composeSignatureElements(Signature element) throws IOException {
19274      composeElementElements(element);
19275      if (element.hasType()) { 
19276        for (Coding e : element.getType()) 
19277          composeCoding("type", e);
19278      }
19279      if (element.hasWhenElement()) {
19280        composeInstant("when", element.getWhenElement());
19281      }
19282      if (element.hasWho()) {
19283        composeType("who", element.getWho());
19284      }      if (element.hasOnBehalfOf()) {
19285        composeType("onBehalfOf", element.getOnBehalfOf());
19286      }      if (element.hasContentTypeElement()) {
19287        composeCode("contentType", element.getContentTypeElement());
19288      }
19289      if (element.hasBlobElement()) {
19290        composeBase64Binary("blob", element.getBlobElement());
19291      }
19292  }
19293
19294  protected void composeSampledData(String name, SampledData element) throws IOException {
19295    if (element != null) {
19296      composeTypeAttributes(element);
19297      xml.enter(FHIR_NS, name);
19298      composeSampledDataElements(element);
19299      composeElementClose(element);
19300      xml.exit(FHIR_NS, name);
19301    }
19302  }
19303
19304  protected void composeSampledDataElements(SampledData element) throws IOException {
19305      composeElementElements(element);
19306      if (element.hasOrigin()) {
19307        composeSimpleQuantity("origin", element.getOrigin());
19308      }
19309      if (element.hasPeriodElement()) {
19310        composeDecimal("period", element.getPeriodElement());
19311      }
19312      if (element.hasFactorElement()) {
19313        composeDecimal("factor", element.getFactorElement());
19314      }
19315      if (element.hasLowerLimitElement()) {
19316        composeDecimal("lowerLimit", element.getLowerLimitElement());
19317      }
19318      if (element.hasUpperLimitElement()) {
19319        composeDecimal("upperLimit", element.getUpperLimitElement());
19320      }
19321      if (element.hasDimensionsElement()) {
19322        composePositiveInt("dimensions", element.getDimensionsElement());
19323      }
19324      if (element.hasDataElement()) {
19325        composeString("data", element.getDataElement());
19326      }
19327  }
19328
19329  protected void composeRatio(String name, Ratio element) throws IOException {
19330    if (element != null) {
19331      composeTypeAttributes(element);
19332      xml.enter(FHIR_NS, name);
19333      composeRatioElements(element);
19334      composeElementClose(element);
19335      xml.exit(FHIR_NS, name);
19336    }
19337  }
19338
19339  protected void composeRatioElements(Ratio element) throws IOException {
19340      composeElementElements(element);
19341      if (element.hasNumerator()) {
19342        composeQuantity("numerator", element.getNumerator());
19343      }
19344      if (element.hasDenominator()) {
19345        composeQuantity("denominator", element.getDenominator());
19346      }
19347  }
19348
19349  protected void composeCodeableConcept(String name, CodeableConcept element) throws IOException {
19350    if (element != null) {
19351      composeTypeAttributes(element);
19352      xml.enter(FHIR_NS, name);
19353      composeCodeableConceptElements(element);
19354      composeElementClose(element);
19355      xml.exit(FHIR_NS, name);
19356    }
19357  }
19358
19359  protected void composeCodeableConceptElements(CodeableConcept element) throws IOException {
19360      composeElementElements(element);
19361      if (element.hasCoding()) { 
19362        for (Coding e : element.getCoding()) 
19363          composeCoding("coding", e);
19364      }
19365      if (element.hasTextElement()) {
19366        composeString("text", element.getTextElement());
19367      }
19368  }
19369
19370  protected void composeSimpleQuantity(String name, SimpleQuantity element) throws IOException {
19371    if (element != null) {
19372      composeTypeAttributes(element);
19373      xml.enter(FHIR_NS, name);
19374      composeSimpleQuantityElements(element);
19375      composeElementClose(element);
19376      xml.exit(FHIR_NS, name);
19377    }
19378  }
19379
19380  protected void composeSimpleQuantityElements(SimpleQuantity element) throws IOException {
19381      composeElementElements(element);
19382      if (element.hasValueElement()) {
19383        composeDecimal("value", element.getValueElement());
19384      }
19385      if (element.hasComparatorElement())
19386        composeEnumeration("comparator", element.getComparatorElement(), new SimpleQuantity.QuantityComparatorEnumFactory());
19387      if (element.hasUnitElement()) {
19388        composeString("unit", element.getUnitElement());
19389      }
19390      if (element.hasSystemElement()) {
19391        composeUri("system", element.getSystemElement());
19392      }
19393      if (element.hasCodeElement()) {
19394        composeCode("code", element.getCodeElement());
19395      }
19396  }
19397
19398  protected void composeMeta(String name, Meta element) throws IOException {
19399    if (element != null) {
19400      composeElementAttributes(element);
19401      xml.enter(FHIR_NS, name);
19402      composeMetaElements(element);
19403      composeElementClose(element);
19404      xml.exit(FHIR_NS, name);
19405    }
19406  }
19407
19408  protected void composeMetaElements(Meta element) throws IOException {
19409      composeElementElements(element);
19410      if (element.hasVersionIdElement()) {
19411        composeId("versionId", element.getVersionIdElement());
19412      }
19413      if (element.hasLastUpdatedElement()) {
19414        composeInstant("lastUpdated", element.getLastUpdatedElement());
19415      }
19416      if (element.hasProfile()) { 
19417        for (UriType e : element.getProfile()) 
19418          composeUri("profile", e);
19419      }
19420      if (element.hasSecurity()) { 
19421        for (Coding e : element.getSecurity()) 
19422          composeCoding("security", e);
19423      }
19424      if (element.hasTag()) { 
19425        for (Coding e : element.getTag()) 
19426          composeCoding("tag", e);
19427      }
19428  }
19429
19430  protected void composeAddress(String name, Address element) throws IOException {
19431    if (element != null) {
19432      composeElementAttributes(element);
19433      xml.enter(FHIR_NS, name);
19434      composeAddressElements(element);
19435      composeElementClose(element);
19436      xml.exit(FHIR_NS, name);
19437    }
19438  }
19439
19440  protected void composeAddressElements(Address element) throws IOException {
19441      composeElementElements(element);
19442      if (element.hasUseElement())
19443        composeEnumeration("use", element.getUseElement(), new Address.AddressUseEnumFactory());
19444      if (element.hasTypeElement())
19445        composeEnumeration("type", element.getTypeElement(), new Address.AddressTypeEnumFactory());
19446      if (element.hasTextElement()) {
19447        composeString("text", element.getTextElement());
19448      }
19449      if (element.hasLine()) { 
19450        for (StringType e : element.getLine()) 
19451          composeString("line", e);
19452      }
19453      if (element.hasCityElement()) {
19454        composeString("city", element.getCityElement());
19455      }
19456      if (element.hasDistrictElement()) {
19457        composeString("district", element.getDistrictElement());
19458      }
19459      if (element.hasStateElement()) {
19460        composeString("state", element.getStateElement());
19461      }
19462      if (element.hasPostalCodeElement()) {
19463        composeString("postalCode", element.getPostalCodeElement());
19464      }
19465      if (element.hasCountryElement()) {
19466        composeString("country", element.getCountryElement());
19467      }
19468      if (element.hasPeriod()) {
19469        composePeriod("period", element.getPeriod());
19470      }
19471  }
19472
19473  protected void composeTriggerDefinition(String name, TriggerDefinition element) throws IOException {
19474    if (element != null) {
19475      composeElementAttributes(element);
19476      xml.enter(FHIR_NS, name);
19477      composeTriggerDefinitionElements(element);
19478      composeElementClose(element);
19479      xml.exit(FHIR_NS, name);
19480    }
19481  }
19482
19483  protected void composeTriggerDefinitionElements(TriggerDefinition element) throws IOException {
19484      composeElementElements(element);
19485      if (element.hasTypeElement())
19486        composeEnumeration("type", element.getTypeElement(), new TriggerDefinition.TriggerTypeEnumFactory());
19487      if (element.hasEventNameElement()) {
19488        composeString("eventName", element.getEventNameElement());
19489      }
19490      if (element.hasEventTiming()) {
19491        composeType("eventTiming", element.getEventTiming());
19492      }      if (element.hasEventData()) {
19493        composeDataRequirement("eventData", element.getEventData());
19494      }
19495  }
19496
19497  protected void composeContributor(String name, Contributor element) throws IOException {
19498    if (element != null) {
19499      composeElementAttributes(element);
19500      xml.enter(FHIR_NS, name);
19501      composeContributorElements(element);
19502      composeElementClose(element);
19503      xml.exit(FHIR_NS, name);
19504    }
19505  }
19506
19507  protected void composeContributorElements(Contributor element) throws IOException {
19508      composeElementElements(element);
19509      if (element.hasTypeElement())
19510        composeEnumeration("type", element.getTypeElement(), new Contributor.ContributorTypeEnumFactory());
19511      if (element.hasNameElement()) {
19512        composeString("name", element.getNameElement());
19513      }
19514      if (element.hasContact()) { 
19515        for (ContactDetail e : element.getContact()) 
19516          composeContactDetail("contact", e);
19517      }
19518  }
19519
19520  protected void composeDataRequirement(String name, DataRequirement element) throws IOException {
19521    if (element != null) {
19522      composeElementAttributes(element);
19523      xml.enter(FHIR_NS, name);
19524      composeDataRequirementElements(element);
19525      composeElementClose(element);
19526      xml.exit(FHIR_NS, name);
19527    }
19528  }
19529
19530  protected void composeDataRequirementElements(DataRequirement element) throws IOException {
19531      composeElementElements(element);
19532      if (element.hasTypeElement()) {
19533        composeCode("type", element.getTypeElement());
19534      }
19535      if (element.hasProfile()) { 
19536        for (UriType e : element.getProfile()) 
19537          composeUri("profile", e);
19538      }
19539      if (element.hasMustSupport()) { 
19540        for (StringType e : element.getMustSupport()) 
19541          composeString("mustSupport", e);
19542      }
19543      if (element.hasCodeFilter()) { 
19544        for (DataRequirement.DataRequirementCodeFilterComponent e : element.getCodeFilter()) 
19545          composeDataRequirementDataRequirementCodeFilterComponent("codeFilter", e);
19546      }
19547      if (element.hasDateFilter()) { 
19548        for (DataRequirement.DataRequirementDateFilterComponent e : element.getDateFilter()) 
19549          composeDataRequirementDataRequirementDateFilterComponent("dateFilter", e);
19550      }
19551  }
19552
19553  protected void composeDataRequirementDataRequirementCodeFilterComponent(String name, DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
19554    if (element != null) {
19555      composeElementAttributes(element);
19556      xml.enter(FHIR_NS, name);
19557      composeDataRequirementDataRequirementCodeFilterComponentElements(element);
19558      composeElementClose(element);
19559      xml.exit(FHIR_NS, name);
19560    }
19561  }
19562
19563  protected void composeDataRequirementDataRequirementCodeFilterComponentElements(DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
19564      composeElementElements(element);
19565      if (element.hasPathElement()) {
19566        composeString("path", element.getPathElement());
19567      }
19568      if (element.hasValueSet()) {
19569        composeType("valueSet", element.getValueSet());
19570      }      if (element.hasValueCode()) { 
19571        for (CodeType e : element.getValueCode()) 
19572          composeCode("valueCode", e);
19573      }
19574      if (element.hasValueCoding()) { 
19575        for (Coding e : element.getValueCoding()) 
19576          composeCoding("valueCoding", e);
19577      }
19578      if (element.hasValueCodeableConcept()) { 
19579        for (CodeableConcept e : element.getValueCodeableConcept()) 
19580          composeCodeableConcept("valueCodeableConcept", e);
19581      }
19582  }
19583
19584  protected void composeDataRequirementDataRequirementDateFilterComponent(String name, DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
19585    if (element != null) {
19586      composeElementAttributes(element);
19587      xml.enter(FHIR_NS, name);
19588      composeDataRequirementDataRequirementDateFilterComponentElements(element);
19589      composeElementClose(element);
19590      xml.exit(FHIR_NS, name);
19591    }
19592  }
19593
19594  protected void composeDataRequirementDataRequirementDateFilterComponentElements(DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
19595      composeElementElements(element);
19596      if (element.hasPathElement()) {
19597        composeString("path", element.getPathElement());
19598      }
19599      if (element.hasValue()) {
19600        composeType("value", element.getValue());
19601      }  }
19602
19603  protected void composeDosage(String name, Dosage element) throws IOException {
19604    if (element != null) {
19605      composeElementAttributes(element);
19606      xml.enter(FHIR_NS, name);
19607      composeDosageElements(element);
19608      composeElementClose(element);
19609      xml.exit(FHIR_NS, name);
19610    }
19611  }
19612
19613  protected void composeDosageElements(Dosage element) throws IOException {
19614      composeElementElements(element);
19615      if (element.hasSequenceElement()) {
19616        composeInteger("sequence", element.getSequenceElement());
19617      }
19618      if (element.hasTextElement()) {
19619        composeString("text", element.getTextElement());
19620      }
19621      if (element.hasAdditionalInstruction()) { 
19622        for (CodeableConcept e : element.getAdditionalInstruction()) 
19623          composeCodeableConcept("additionalInstruction", e);
19624      }
19625      if (element.hasPatientInstructionElement()) {
19626        composeString("patientInstruction", element.getPatientInstructionElement());
19627      }
19628      if (element.hasTiming()) {
19629        composeTiming("timing", element.getTiming());
19630      }
19631      if (element.hasAsNeeded()) {
19632        composeType("asNeeded", element.getAsNeeded());
19633      }      if (element.hasSite()) {
19634        composeCodeableConcept("site", element.getSite());
19635      }
19636      if (element.hasRoute()) {
19637        composeCodeableConcept("route", element.getRoute());
19638      }
19639      if (element.hasMethod()) {
19640        composeCodeableConcept("method", element.getMethod());
19641      }
19642      if (element.hasDose()) {
19643        composeType("dose", element.getDose());
19644      }      if (element.hasMaxDosePerPeriod()) {
19645        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
19646      }
19647      if (element.hasMaxDosePerAdministration()) {
19648        composeSimpleQuantity("maxDosePerAdministration", element.getMaxDosePerAdministration());
19649      }
19650      if (element.hasMaxDosePerLifetime()) {
19651        composeSimpleQuantity("maxDosePerLifetime", element.getMaxDosePerLifetime());
19652      }
19653      if (element.hasRate()) {
19654        composeType("rate", element.getRate());
19655      }  }
19656
19657  protected void composeRelatedArtifact(String name, RelatedArtifact element) throws IOException {
19658    if (element != null) {
19659      composeElementAttributes(element);
19660      xml.enter(FHIR_NS, name);
19661      composeRelatedArtifactElements(element);
19662      composeElementClose(element);
19663      xml.exit(FHIR_NS, name);
19664    }
19665  }
19666
19667  protected void composeRelatedArtifactElements(RelatedArtifact element) throws IOException {
19668      composeElementElements(element);
19669      if (element.hasTypeElement())
19670        composeEnumeration("type", element.getTypeElement(), new RelatedArtifact.RelatedArtifactTypeEnumFactory());
19671      if (element.hasDisplayElement()) {
19672        composeString("display", element.getDisplayElement());
19673      }
19674      if (element.hasCitationElement()) {
19675        composeString("citation", element.getCitationElement());
19676      }
19677      if (element.hasUrlElement()) {
19678        composeUri("url", element.getUrlElement());
19679      }
19680      if (element.hasDocument()) {
19681        composeAttachment("document", element.getDocument());
19682      }
19683      if (element.hasResource()) {
19684        composeReference("resource", element.getResource());
19685      }
19686  }
19687
19688  protected void composeContactDetail(String name, ContactDetail element) throws IOException {
19689    if (element != null) {
19690      composeElementAttributes(element);
19691      xml.enter(FHIR_NS, name);
19692      composeContactDetailElements(element);
19693      composeElementClose(element);
19694      xml.exit(FHIR_NS, name);
19695    }
19696  }
19697
19698  protected void composeContactDetailElements(ContactDetail element) throws IOException {
19699      composeElementElements(element);
19700      if (element.hasNameElement()) {
19701        composeString("name", element.getNameElement());
19702      }
19703      if (element.hasTelecom()) { 
19704        for (ContactPoint e : element.getTelecom()) 
19705          composeContactPoint("telecom", e);
19706      }
19707  }
19708
19709  protected void composeHumanName(String name, HumanName element) throws IOException {
19710    if (element != null) {
19711      composeElementAttributes(element);
19712      xml.enter(FHIR_NS, name);
19713      composeHumanNameElements(element);
19714      composeElementClose(element);
19715      xml.exit(FHIR_NS, name);
19716    }
19717  }
19718
19719  protected void composeHumanNameElements(HumanName element) throws IOException {
19720      composeElementElements(element);
19721      if (element.hasUseElement())
19722        composeEnumeration("use", element.getUseElement(), new HumanName.NameUseEnumFactory());
19723      if (element.hasTextElement()) {
19724        composeString("text", element.getTextElement());
19725      }
19726      if (element.hasFamilyElement()) {
19727        composeString("family", element.getFamilyElement());
19728      }
19729      if (element.hasGiven()) { 
19730        for (StringType e : element.getGiven()) 
19731          composeString("given", e);
19732      }
19733      if (element.hasPrefix()) { 
19734        for (StringType e : element.getPrefix()) 
19735          composeString("prefix", e);
19736      }
19737      if (element.hasSuffix()) { 
19738        for (StringType e : element.getSuffix()) 
19739          composeString("suffix", e);
19740      }
19741      if (element.hasPeriod()) {
19742        composePeriod("period", element.getPeriod());
19743      }
19744  }
19745
19746  protected void composeContactPoint(String name, ContactPoint element) throws IOException {
19747    if (element != null) {
19748      composeElementAttributes(element);
19749      xml.enter(FHIR_NS, name);
19750      composeContactPointElements(element);
19751      composeElementClose(element);
19752      xml.exit(FHIR_NS, name);
19753    }
19754  }
19755
19756  protected void composeContactPointElements(ContactPoint element) throws IOException {
19757      composeElementElements(element);
19758      if (element.hasSystemElement())
19759        composeEnumeration("system", element.getSystemElement(), new ContactPoint.ContactPointSystemEnumFactory());
19760      if (element.hasValueElement()) {
19761        composeString("value", element.getValueElement());
19762      }
19763      if (element.hasUseElement())
19764        composeEnumeration("use", element.getUseElement(), new ContactPoint.ContactPointUseEnumFactory());
19765      if (element.hasRankElement()) {
19766        composePositiveInt("rank", element.getRankElement());
19767      }
19768      if (element.hasPeriod()) {
19769        composePeriod("period", element.getPeriod());
19770      }
19771  }
19772
19773  protected void composeUsageContext(String name, UsageContext element) throws IOException {
19774    if (element != null) {
19775      composeElementAttributes(element);
19776      xml.enter(FHIR_NS, name);
19777      composeUsageContextElements(element);
19778      composeElementClose(element);
19779      xml.exit(FHIR_NS, name);
19780    }
19781  }
19782
19783  protected void composeUsageContextElements(UsageContext element) throws IOException {
19784      composeElementElements(element);
19785      if (element.hasCode()) {
19786        composeCoding("code", element.getCode());
19787      }
19788      if (element.hasValue()) {
19789        composeType("value", element.getValue());
19790      }  }
19791
19792  protected void composeTiming(String name, Timing element) throws IOException {
19793    if (element != null) {
19794      composeElementAttributes(element);
19795      xml.enter(FHIR_NS, name);
19796      composeTimingElements(element);
19797      composeElementClose(element);
19798      xml.exit(FHIR_NS, name);
19799    }
19800  }
19801
19802  protected void composeTimingElements(Timing element) throws IOException {
19803      composeElementElements(element);
19804      if (element.hasEvent()) { 
19805        for (DateTimeType e : element.getEvent()) 
19806          composeDateTime("event", e);
19807      }
19808      if (element.hasRepeat()) {
19809        composeTimingTimingRepeatComponent("repeat", element.getRepeat());
19810      }
19811      if (element.hasCode()) {
19812        composeCodeableConcept("code", element.getCode());
19813      }
19814  }
19815
19816  protected void composeTimingTimingRepeatComponent(String name, Timing.TimingRepeatComponent element) throws IOException {
19817    if (element != null) {
19818      composeElementAttributes(element);
19819      xml.enter(FHIR_NS, name);
19820      composeTimingTimingRepeatComponentElements(element);
19821      composeElementClose(element);
19822      xml.exit(FHIR_NS, name);
19823    }
19824  }
19825
19826  protected void composeTimingTimingRepeatComponentElements(Timing.TimingRepeatComponent element) throws IOException {
19827      composeElementElements(element);
19828      if (element.hasBounds()) {
19829        composeType("bounds", element.getBounds());
19830      }      if (element.hasCountElement()) {
19831        composeInteger("count", element.getCountElement());
19832      }
19833      if (element.hasCountMaxElement()) {
19834        composeInteger("countMax", element.getCountMaxElement());
19835      }
19836      if (element.hasDurationElement()) {
19837        composeDecimal("duration", element.getDurationElement());
19838      }
19839      if (element.hasDurationMaxElement()) {
19840        composeDecimal("durationMax", element.getDurationMaxElement());
19841      }
19842      if (element.hasDurationUnitElement())
19843        composeEnumeration("durationUnit", element.getDurationUnitElement(), new Timing.UnitsOfTimeEnumFactory());
19844      if (element.hasFrequencyElement()) {
19845        composeInteger("frequency", element.getFrequencyElement());
19846      }
19847      if (element.hasFrequencyMaxElement()) {
19848        composeInteger("frequencyMax", element.getFrequencyMaxElement());
19849      }
19850      if (element.hasPeriodElement()) {
19851        composeDecimal("period", element.getPeriodElement());
19852      }
19853      if (element.hasPeriodMaxElement()) {
19854        composeDecimal("periodMax", element.getPeriodMaxElement());
19855      }
19856      if (element.hasPeriodUnitElement())
19857        composeEnumeration("periodUnit", element.getPeriodUnitElement(), new Timing.UnitsOfTimeEnumFactory());
19858        if (element.hasDayOfWeek()) 
19859          for (Enumeration<Timing.DayOfWeek> e : element.getDayOfWeek()) 
19860            composeEnumeration("dayOfWeek", e, new Timing.DayOfWeekEnumFactory());
19861      if (element.hasTimeOfDay()) { 
19862        for (TimeType e : element.getTimeOfDay()) 
19863          composeTime("timeOfDay", e);
19864      }
19865        if (element.hasWhen()) 
19866          for (Enumeration<Timing.EventTiming> e : element.getWhen()) 
19867            composeEnumeration("when", e, new Timing.EventTimingEnumFactory());
19868      if (element.hasOffsetElement()) {
19869        composeUnsignedInt("offset", element.getOffsetElement());
19870      }
19871  }
19872
19873  protected void composeElementDefinition(String name, ElementDefinition element) throws IOException {
19874    if (element != null) {
19875      composeElementAttributes(element);
19876      xml.enter(FHIR_NS, name);
19877      composeElementDefinitionElements(element);
19878      composeElementClose(element);
19879      xml.exit(FHIR_NS, name);
19880    }
19881  }
19882
19883  protected void composeElementDefinitionElements(ElementDefinition element) throws IOException {
19884      composeElementElements(element);
19885      if (element.hasPathElement()) {
19886        composeString("path", element.getPathElement());
19887      }
19888        if (element.hasRepresentation()) 
19889          for (Enumeration<ElementDefinition.PropertyRepresentation> e : element.getRepresentation()) 
19890            composeEnumeration("representation", e, new ElementDefinition.PropertyRepresentationEnumFactory());
19891      if (element.hasSliceNameElement()) {
19892        composeString("sliceName", element.getSliceNameElement());
19893      }
19894      if (element.hasLabelElement()) {
19895        composeString("label", element.getLabelElement());
19896      }
19897      if (element.hasCode()) { 
19898        for (Coding e : element.getCode()) 
19899          composeCoding("code", e);
19900      }
19901      if (element.hasSlicing()) {
19902        composeElementDefinitionElementDefinitionSlicingComponent("slicing", element.getSlicing());
19903      }
19904      if (element.hasShortElement()) {
19905        composeString("short", element.getShortElement());
19906      }
19907      if (element.hasDefinitionElement()) {
19908        composeMarkdown("definition", element.getDefinitionElement());
19909      }
19910      if (element.hasCommentElement()) {
19911        composeMarkdown("comment", element.getCommentElement());
19912      }
19913      if (element.hasRequirementsElement()) {
19914        composeMarkdown("requirements", element.getRequirementsElement());
19915      }
19916      if (element.hasAlias()) { 
19917        for (StringType e : element.getAlias()) 
19918          composeString("alias", e);
19919      }
19920      if (element.hasMinElement()) {
19921        composeUnsignedInt("min", element.getMinElement());
19922      }
19923      if (element.hasMaxElement()) {
19924        composeString("max", element.getMaxElement());
19925      }
19926      if (element.hasBase()) {
19927        composeElementDefinitionElementDefinitionBaseComponent("base", element.getBase());
19928      }
19929      if (element.hasContentReferenceElement()) {
19930        composeUri("contentReference", element.getContentReferenceElement());
19931      }
19932      if (element.hasType()) { 
19933        for (ElementDefinition.TypeRefComponent e : element.getType()) 
19934          composeElementDefinitionTypeRefComponent("type", e);
19935      }
19936      if (element.hasDefaultValue()) {
19937        composeType("defaultValue", element.getDefaultValue());
19938      }      if (element.hasMeaningWhenMissingElement()) {
19939        composeMarkdown("meaningWhenMissing", element.getMeaningWhenMissingElement());
19940      }
19941      if (element.hasOrderMeaningElement()) {
19942        composeString("orderMeaning", element.getOrderMeaningElement());
19943      }
19944      if (element.hasFixed()) {
19945        composeType("fixed", element.getFixed());
19946      }      if (element.hasPattern()) {
19947        composeType("pattern", element.getPattern());
19948      }      if (element.hasExample()) { 
19949        for (ElementDefinition.ElementDefinitionExampleComponent e : element.getExample()) 
19950          composeElementDefinitionElementDefinitionExampleComponent("example", e);
19951      }
19952      if (element.hasMinValue()) {
19953        composeType("minValue", element.getMinValue());
19954      }      if (element.hasMaxValue()) {
19955        composeType("maxValue", element.getMaxValue());
19956      }      if (element.hasMaxLengthElement()) {
19957        composeInteger("maxLength", element.getMaxLengthElement());
19958      }
19959      if (element.hasCondition()) { 
19960        for (IdType e : element.getCondition()) 
19961          composeId("condition", e);
19962      }
19963      if (element.hasConstraint()) { 
19964        for (ElementDefinition.ElementDefinitionConstraintComponent e : element.getConstraint()) 
19965          composeElementDefinitionElementDefinitionConstraintComponent("constraint", e);
19966      }
19967      if (element.hasMustSupportElement()) {
19968        composeBoolean("mustSupport", element.getMustSupportElement());
19969      }
19970      if (element.hasIsModifierElement()) {
19971        composeBoolean("isModifier", element.getIsModifierElement());
19972      }
19973      if (element.hasIsSummaryElement()) {
19974        composeBoolean("isSummary", element.getIsSummaryElement());
19975      }
19976      if (element.hasBinding()) {
19977        composeElementDefinitionElementDefinitionBindingComponent("binding", element.getBinding());
19978      }
19979      if (element.hasMapping()) { 
19980        for (ElementDefinition.ElementDefinitionMappingComponent e : element.getMapping()) 
19981          composeElementDefinitionElementDefinitionMappingComponent("mapping", e);
19982      }
19983  }
19984
19985  protected void composeElementDefinitionElementDefinitionSlicingComponent(String name, ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
19986    if (element != null) {
19987      composeElementAttributes(element);
19988      xml.enter(FHIR_NS, name);
19989      composeElementDefinitionElementDefinitionSlicingComponentElements(element);
19990      composeElementClose(element);
19991      xml.exit(FHIR_NS, name);
19992    }
19993  }
19994
19995  protected void composeElementDefinitionElementDefinitionSlicingComponentElements(ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
19996      composeElementElements(element);
19997      if (element.hasDiscriminator()) { 
19998        for (ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent e : element.getDiscriminator()) 
19999          composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent("discriminator", e);
20000      }
20001      if (element.hasDescriptionElement()) {
20002        composeString("description", element.getDescriptionElement());
20003      }
20004      if (element.hasOrderedElement()) {
20005        composeBoolean("ordered", element.getOrderedElement());
20006      }
20007      if (element.hasRulesElement())
20008        composeEnumeration("rules", element.getRulesElement(), new ElementDefinition.SlicingRulesEnumFactory());
20009  }
20010
20011  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent(String name, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
20012    if (element != null) {
20013      composeElementAttributes(element);
20014      xml.enter(FHIR_NS, name);
20015      composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(element);
20016      composeElementClose(element);
20017      xml.exit(FHIR_NS, name);
20018    }
20019  }
20020
20021  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
20022      composeElementElements(element);
20023      if (element.hasTypeElement())
20024        composeEnumeration("type", element.getTypeElement(), new ElementDefinition.DiscriminatorTypeEnumFactory());
20025      if (element.hasPathElement()) {
20026        composeString("path", element.getPathElement());
20027      }
20028  }
20029
20030  protected void composeElementDefinitionElementDefinitionBaseComponent(String name, ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
20031    if (element != null) {
20032      composeElementAttributes(element);
20033      xml.enter(FHIR_NS, name);
20034      composeElementDefinitionElementDefinitionBaseComponentElements(element);
20035      composeElementClose(element);
20036      xml.exit(FHIR_NS, name);
20037    }
20038  }
20039
20040  protected void composeElementDefinitionElementDefinitionBaseComponentElements(ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
20041      composeElementElements(element);
20042      if (element.hasPathElement()) {
20043        composeString("path", element.getPathElement());
20044      }
20045      if (element.hasMinElement()) {
20046        composeUnsignedInt("min", element.getMinElement());
20047      }
20048      if (element.hasMaxElement()) {
20049        composeString("max", element.getMaxElement());
20050      }
20051  }
20052
20053  protected void composeElementDefinitionTypeRefComponent(String name, ElementDefinition.TypeRefComponent element) throws IOException {
20054    if (element != null) {
20055      composeElementAttributes(element);
20056      xml.enter(FHIR_NS, name);
20057      composeElementDefinitionTypeRefComponentElements(element);
20058      composeElementClose(element);
20059      xml.exit(FHIR_NS, name);
20060    }
20061  }
20062
20063  protected void composeElementDefinitionTypeRefComponentElements(ElementDefinition.TypeRefComponent element) throws IOException {
20064      composeElementElements(element);
20065      if (element.hasCodeElement()) {
20066        composeUri("code", element.getCodeElement());
20067      }
20068      if (element.hasProfileElement()) {
20069        composeUri("profile", element.getProfileElement());
20070      }
20071      if (element.hasTargetProfileElement()) {
20072        composeUri("targetProfile", element.getTargetProfileElement());
20073      }
20074        if (element.hasAggregation()) 
20075          for (Enumeration<ElementDefinition.AggregationMode> e : element.getAggregation()) 
20076            composeEnumeration("aggregation", e, new ElementDefinition.AggregationModeEnumFactory());
20077      if (element.hasVersioningElement())
20078        composeEnumeration("versioning", element.getVersioningElement(), new ElementDefinition.ReferenceVersionRulesEnumFactory());
20079  }
20080
20081  protected void composeElementDefinitionElementDefinitionExampleComponent(String name, ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
20082    if (element != null) {
20083      composeElementAttributes(element);
20084      xml.enter(FHIR_NS, name);
20085      composeElementDefinitionElementDefinitionExampleComponentElements(element);
20086      composeElementClose(element);
20087      xml.exit(FHIR_NS, name);
20088    }
20089  }
20090
20091  protected void composeElementDefinitionElementDefinitionExampleComponentElements(ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
20092      composeElementElements(element);
20093      if (element.hasLabelElement()) {
20094        composeString("label", element.getLabelElement());
20095      }
20096      if (element.hasValue()) {
20097        composeType("value", element.getValue());
20098      }  }
20099
20100  protected void composeElementDefinitionElementDefinitionConstraintComponent(String name, ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
20101    if (element != null) {
20102      composeElementAttributes(element);
20103      xml.enter(FHIR_NS, name);
20104      composeElementDefinitionElementDefinitionConstraintComponentElements(element);
20105      composeElementClose(element);
20106      xml.exit(FHIR_NS, name);
20107    }
20108  }
20109
20110  protected void composeElementDefinitionElementDefinitionConstraintComponentElements(ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
20111      composeElementElements(element);
20112      if (element.hasKeyElement()) {
20113        composeId("key", element.getKeyElement());
20114      }
20115      if (element.hasRequirementsElement()) {
20116        composeString("requirements", element.getRequirementsElement());
20117      }
20118      if (element.hasSeverityElement())
20119        composeEnumeration("severity", element.getSeverityElement(), new ElementDefinition.ConstraintSeverityEnumFactory());
20120      if (element.hasHumanElement()) {
20121        composeString("human", element.getHumanElement());
20122      }
20123      if (element.hasExpressionElement()) {
20124        composeString("expression", element.getExpressionElement());
20125      }
20126      if (element.hasXpathElement()) {
20127        composeString("xpath", element.getXpathElement());
20128      }
20129      if (element.hasSourceElement()) {
20130        composeUri("source", element.getSourceElement());
20131      }
20132  }
20133
20134  protected void composeElementDefinitionElementDefinitionBindingComponent(String name, ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
20135    if (element != null) {
20136      composeElementAttributes(element);
20137      xml.enter(FHIR_NS, name);
20138      composeElementDefinitionElementDefinitionBindingComponentElements(element);
20139      composeElementClose(element);
20140      xml.exit(FHIR_NS, name);
20141    }
20142  }
20143
20144  protected void composeElementDefinitionElementDefinitionBindingComponentElements(ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
20145      composeElementElements(element);
20146      if (element.hasStrengthElement())
20147        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
20148      if (element.hasDescriptionElement()) {
20149        composeString("description", element.getDescriptionElement());
20150      }
20151      if (element.hasValueSet()) {
20152        composeType("valueSet", element.getValueSet());
20153      }  }
20154
20155  protected void composeElementDefinitionElementDefinitionMappingComponent(String name, ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
20156    if (element != null) {
20157      composeElementAttributes(element);
20158      xml.enter(FHIR_NS, name);
20159      composeElementDefinitionElementDefinitionMappingComponentElements(element);
20160      composeElementClose(element);
20161      xml.exit(FHIR_NS, name);
20162    }
20163  }
20164
20165  protected void composeElementDefinitionElementDefinitionMappingComponentElements(ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
20166      composeElementElements(element);
20167      if (element.hasIdentityElement()) {
20168        composeId("identity", element.getIdentityElement());
20169      }
20170      if (element.hasLanguageElement()) {
20171        composeCode("language", element.getLanguageElement());
20172      }
20173      if (element.hasMapElement()) {
20174        composeString("map", element.getMapElement());
20175      }
20176      if (element.hasCommentElement()) {
20177        composeString("comment", element.getCommentElement());
20178      }
20179  }
20180
20181  protected void composeParameterDefinition(String name, ParameterDefinition element) throws IOException {
20182    if (element != null) {
20183      composeElementAttributes(element);
20184      xml.enter(FHIR_NS, name);
20185      composeParameterDefinitionElements(element);
20186      composeElementClose(element);
20187      xml.exit(FHIR_NS, name);
20188    }
20189  }
20190
20191  protected void composeParameterDefinitionElements(ParameterDefinition element) throws IOException {
20192      composeElementElements(element);
20193      if (element.hasNameElement()) {
20194        composeCode("name", element.getNameElement());
20195      }
20196      if (element.hasUseElement())
20197        composeEnumeration("use", element.getUseElement(), new ParameterDefinition.ParameterUseEnumFactory());
20198      if (element.hasMinElement()) {
20199        composeInteger("min", element.getMinElement());
20200      }
20201      if (element.hasMaxElement()) {
20202        composeString("max", element.getMaxElement());
20203      }
20204      if (element.hasDocumentationElement()) {
20205        composeString("documentation", element.getDocumentationElement());
20206      }
20207      if (element.hasTypeElement()) {
20208        composeCode("type", element.getTypeElement());
20209      }
20210      if (element.hasProfile()) {
20211        composeReference("profile", element.getProfile());
20212      }
20213  }
20214
20215  protected void composeDomainResourceAttributes(DomainResource element) throws IOException {
20216    composeResourceAttributes(element);
20217  }
20218
20219  protected void composeDomainResourceElements(DomainResource element) throws IOException {
20220    composeResourceElements(element);
20221      if (element.hasText()) {
20222        composeNarrative("text", element.getText());
20223      }
20224      if (element.hasContained()) { 
20225        for (Resource e : element.getContained()) 
20226        {
20227          xml.enter(FHIR_NS, "contained");
20228          composeResource(e);
20229          xml.exit(FHIR_NS, "contained");
20230        }
20231      }
20232      if (element.hasExtension()) 
20233        for (Extension e : element.getExtension()) 
20234          composeExtension("extension", e);
20235      if (element.hasModifierExtension()) { 
20236        for (Extension e : element.getModifierExtension()) 
20237          composeExtension("modifierExtension", e);
20238      }
20239  }
20240
20241  protected void composeParameters(String name, Parameters element) throws IOException {
20242    if (element != null) {
20243      composeResourceAttributes(element);
20244      xml.enter(FHIR_NS, name);
20245      composeParametersElements(element);
20246      composeElementClose(element);
20247      xml.exit(FHIR_NS, name);
20248    }
20249  }
20250
20251  protected void composeParametersElements(Parameters element) throws IOException {
20252      composeResourceElements(element);
20253      if (element.hasParameter()) { 
20254        for (Parameters.ParametersParameterComponent e : element.getParameter()) 
20255          composeParametersParametersParameterComponent("parameter", e);
20256      }
20257  }
20258
20259  protected void composeParametersParametersParameterComponent(String name, Parameters.ParametersParameterComponent element) throws IOException {
20260    if (element != null) {
20261      composeElementAttributes(element);
20262      xml.enter(FHIR_NS, name);
20263      composeParametersParametersParameterComponentElements(element);
20264      composeElementClose(element);
20265      xml.exit(FHIR_NS, name);
20266    }
20267  }
20268
20269  protected void composeParametersParametersParameterComponentElements(Parameters.ParametersParameterComponent element) throws IOException {
20270      composeBackboneElements(element);
20271      if (element.hasNameElement()) {
20272        composeString("name", element.getNameElement());
20273      }
20274      if (element.hasValue()) {
20275        composeType("value", element.getValue());
20276      }      if (element.hasResource()) {
20277        xml.enter(FHIR_NS, "resource");
20278        composeResource(element.getResource());
20279        xml.exit(FHIR_NS, "resource");
20280      }
20281      if (element.hasPart()) { 
20282        for (Parameters.ParametersParameterComponent e : element.getPart()) 
20283          composeParametersParametersParameterComponent("part", e);
20284      }
20285  }
20286
20287  protected void composeResourceAttributes(Resource element) throws IOException {
20288    if (style != OutputStyle.CANONICAL)
20289      for (String comment : element.getFormatCommentsPre())
20290        xml.comment(comment, getOutputStyle() == OutputStyle.PRETTY);
20291  }
20292
20293  protected void composeResourceElements(Resource element) throws IOException {
20294      if (element.hasIdElement()) {
20295        composeId("id", element.getIdElement());
20296      }
20297      if (element.hasMeta()) {
20298        composeMeta("meta", element.getMeta());
20299      }
20300      if (element.hasImplicitRulesElement()) {
20301        composeUri("implicitRules", element.getImplicitRulesElement());
20302      }
20303      if (element.hasLanguageElement()) {
20304        composeCode("language", element.getLanguageElement());
20305      }
20306  }
20307
20308  protected void composeAccount(String name, Account element) throws IOException {
20309    if (element != null) {
20310      composeDomainResourceAttributes(element);
20311      xml.enter(FHIR_NS, name);
20312      composeAccountElements(element);
20313      composeElementClose(element);
20314      xml.exit(FHIR_NS, name);
20315    }
20316  }
20317
20318  protected void composeAccountElements(Account element) throws IOException {
20319      composeDomainResourceElements(element);
20320      if (element.hasIdentifier()) { 
20321        for (Identifier e : element.getIdentifier()) 
20322          composeIdentifier("identifier", e);
20323      }
20324      if (element.hasStatusElement())
20325        composeEnumeration("status", element.getStatusElement(), new Account.AccountStatusEnumFactory());
20326      if (element.hasType()) {
20327        composeCodeableConcept("type", element.getType());
20328      }
20329      if (element.hasNameElement()) {
20330        composeString("name", element.getNameElement());
20331      }
20332      if (element.hasSubject()) {
20333        composeReference("subject", element.getSubject());
20334      }
20335      if (element.hasPeriod()) {
20336        composePeriod("period", element.getPeriod());
20337      }
20338      if (element.hasActive()) {
20339        composePeriod("active", element.getActive());
20340      }
20341      if (element.hasBalance()) {
20342        composeMoney("balance", element.getBalance());
20343      }
20344      if (element.hasCoverage()) { 
20345        for (Account.CoverageComponent e : element.getCoverage()) 
20346          composeAccountCoverageComponent("coverage", e);
20347      }
20348      if (element.hasOwner()) {
20349        composeReference("owner", element.getOwner());
20350      }
20351      if (element.hasDescriptionElement()) {
20352        composeString("description", element.getDescriptionElement());
20353      }
20354      if (element.hasGuarantor()) { 
20355        for (Account.GuarantorComponent e : element.getGuarantor()) 
20356          composeAccountGuarantorComponent("guarantor", e);
20357      }
20358  }
20359
20360  protected void composeAccountCoverageComponent(String name, Account.CoverageComponent element) throws IOException {
20361    if (element != null) {
20362      composeElementAttributes(element);
20363      xml.enter(FHIR_NS, name);
20364      composeAccountCoverageComponentElements(element);
20365      composeElementClose(element);
20366      xml.exit(FHIR_NS, name);
20367    }
20368  }
20369
20370  protected void composeAccountCoverageComponentElements(Account.CoverageComponent element) throws IOException {
20371      composeBackboneElements(element);
20372      if (element.hasCoverage()) {
20373        composeReference("coverage", element.getCoverage());
20374      }
20375      if (element.hasPriorityElement()) {
20376        composePositiveInt("priority", element.getPriorityElement());
20377      }
20378  }
20379
20380  protected void composeAccountGuarantorComponent(String name, Account.GuarantorComponent element) throws IOException {
20381    if (element != null) {
20382      composeElementAttributes(element);
20383      xml.enter(FHIR_NS, name);
20384      composeAccountGuarantorComponentElements(element);
20385      composeElementClose(element);
20386      xml.exit(FHIR_NS, name);
20387    }
20388  }
20389
20390  protected void composeAccountGuarantorComponentElements(Account.GuarantorComponent element) throws IOException {
20391      composeBackboneElements(element);
20392      if (element.hasParty()) {
20393        composeReference("party", element.getParty());
20394      }
20395      if (element.hasOnHoldElement()) {
20396        composeBoolean("onHold", element.getOnHoldElement());
20397      }
20398      if (element.hasPeriod()) {
20399        composePeriod("period", element.getPeriod());
20400      }
20401  }
20402
20403  protected void composeActivityDefinition(String name, ActivityDefinition element) throws IOException {
20404    if (element != null) {
20405      composeDomainResourceAttributes(element);
20406      xml.enter(FHIR_NS, name);
20407      composeActivityDefinitionElements(element);
20408      composeElementClose(element);
20409      xml.exit(FHIR_NS, name);
20410    }
20411  }
20412
20413  protected void composeActivityDefinitionElements(ActivityDefinition element) throws IOException {
20414      composeDomainResourceElements(element);
20415      if (element.hasUrlElement()) {
20416        composeUri("url", element.getUrlElement());
20417      }
20418      if (element.hasIdentifier()) { 
20419        for (Identifier e : element.getIdentifier()) 
20420          composeIdentifier("identifier", e);
20421      }
20422      if (element.hasVersionElement()) {
20423        composeString("version", element.getVersionElement());
20424      }
20425      if (element.hasNameElement()) {
20426        composeString("name", element.getNameElement());
20427      }
20428      if (element.hasTitleElement()) {
20429        composeString("title", element.getTitleElement());
20430      }
20431      if (element.hasStatusElement())
20432        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
20433      if (element.hasExperimentalElement()) {
20434        composeBoolean("experimental", element.getExperimentalElement());
20435      }
20436      if (element.hasDateElement()) {
20437        composeDateTime("date", element.getDateElement());
20438      }
20439      if (element.hasPublisherElement()) {
20440        composeString("publisher", element.getPublisherElement());
20441      }
20442      if (element.hasDescriptionElement()) {
20443        composeMarkdown("description", element.getDescriptionElement());
20444      }
20445      if (element.hasPurposeElement()) {
20446        composeMarkdown("purpose", element.getPurposeElement());
20447      }
20448      if (element.hasUsageElement()) {
20449        composeString("usage", element.getUsageElement());
20450      }
20451      if (element.hasApprovalDateElement()) {
20452        composeDate("approvalDate", element.getApprovalDateElement());
20453      }
20454      if (element.hasLastReviewDateElement()) {
20455        composeDate("lastReviewDate", element.getLastReviewDateElement());
20456      }
20457      if (element.hasEffectivePeriod()) {
20458        composePeriod("effectivePeriod", element.getEffectivePeriod());
20459      }
20460      if (element.hasUseContext()) { 
20461        for (UsageContext e : element.getUseContext()) 
20462          composeUsageContext("useContext", e);
20463      }
20464      if (element.hasJurisdiction()) { 
20465        for (CodeableConcept e : element.getJurisdiction()) 
20466          composeCodeableConcept("jurisdiction", e);
20467      }
20468      if (element.hasTopic()) { 
20469        for (CodeableConcept e : element.getTopic()) 
20470          composeCodeableConcept("topic", e);
20471      }
20472      if (element.hasContributor()) { 
20473        for (Contributor e : element.getContributor()) 
20474          composeContributor("contributor", e);
20475      }
20476      if (element.hasContact()) { 
20477        for (ContactDetail e : element.getContact()) 
20478          composeContactDetail("contact", e);
20479      }
20480      if (element.hasCopyrightElement()) {
20481        composeMarkdown("copyright", element.getCopyrightElement());
20482      }
20483      if (element.hasRelatedArtifact()) { 
20484        for (RelatedArtifact e : element.getRelatedArtifact()) 
20485          composeRelatedArtifact("relatedArtifact", e);
20486      }
20487      if (element.hasLibrary()) { 
20488        for (Reference e : element.getLibrary()) 
20489          composeReference("library", e);
20490      }
20491      if (element.hasKindElement())
20492        composeEnumeration("kind", element.getKindElement(), new ActivityDefinition.ActivityDefinitionKindEnumFactory());
20493      if (element.hasCode()) {
20494        composeCodeableConcept("code", element.getCode());
20495      }
20496      if (element.hasTiming()) {
20497        composeType("timing", element.getTiming());
20498      }      if (element.hasLocation()) {
20499        composeReference("location", element.getLocation());
20500      }
20501      if (element.hasParticipant()) { 
20502        for (ActivityDefinition.ActivityDefinitionParticipantComponent e : element.getParticipant()) 
20503          composeActivityDefinitionActivityDefinitionParticipantComponent("participant", e);
20504      }
20505      if (element.hasProduct()) {
20506        composeType("product", element.getProduct());
20507      }      if (element.hasQuantity()) {
20508        composeSimpleQuantity("quantity", element.getQuantity());
20509      }
20510      if (element.hasDosage()) { 
20511        for (Dosage e : element.getDosage()) 
20512          composeDosage("dosage", e);
20513      }
20514      if (element.hasBodySite()) { 
20515        for (CodeableConcept e : element.getBodySite()) 
20516          composeCodeableConcept("bodySite", e);
20517      }
20518      if (element.hasTransform()) {
20519        composeReference("transform", element.getTransform());
20520      }
20521      if (element.hasDynamicValue()) { 
20522        for (ActivityDefinition.ActivityDefinitionDynamicValueComponent e : element.getDynamicValue()) 
20523          composeActivityDefinitionActivityDefinitionDynamicValueComponent("dynamicValue", e);
20524      }
20525  }
20526
20527  protected void composeActivityDefinitionActivityDefinitionParticipantComponent(String name, ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
20528    if (element != null) {
20529      composeElementAttributes(element);
20530      xml.enter(FHIR_NS, name);
20531      composeActivityDefinitionActivityDefinitionParticipantComponentElements(element);
20532      composeElementClose(element);
20533      xml.exit(FHIR_NS, name);
20534    }
20535  }
20536
20537  protected void composeActivityDefinitionActivityDefinitionParticipantComponentElements(ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
20538      composeBackboneElements(element);
20539      if (element.hasTypeElement())
20540        composeEnumeration("type", element.getTypeElement(), new ActivityDefinition.ActivityParticipantTypeEnumFactory());
20541      if (element.hasRole()) {
20542        composeCodeableConcept("role", element.getRole());
20543      }
20544  }
20545
20546  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponent(String name, ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
20547    if (element != null) {
20548      composeElementAttributes(element);
20549      xml.enter(FHIR_NS, name);
20550      composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(element);
20551      composeElementClose(element);
20552      xml.exit(FHIR_NS, name);
20553    }
20554  }
20555
20556  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
20557      composeBackboneElements(element);
20558      if (element.hasDescriptionElement()) {
20559        composeString("description", element.getDescriptionElement());
20560      }
20561      if (element.hasPathElement()) {
20562        composeString("path", element.getPathElement());
20563      }
20564      if (element.hasLanguageElement()) {
20565        composeString("language", element.getLanguageElement());
20566      }
20567      if (element.hasExpressionElement()) {
20568        composeString("expression", element.getExpressionElement());
20569      }
20570  }
20571
20572  protected void composeAdverseEvent(String name, AdverseEvent element) throws IOException {
20573    if (element != null) {
20574      composeDomainResourceAttributes(element);
20575      xml.enter(FHIR_NS, name);
20576      composeAdverseEventElements(element);
20577      composeElementClose(element);
20578      xml.exit(FHIR_NS, name);
20579    }
20580  }
20581
20582  protected void composeAdverseEventElements(AdverseEvent element) throws IOException {
20583      composeDomainResourceElements(element);
20584      if (element.hasIdentifier()) {
20585        composeIdentifier("identifier", element.getIdentifier());
20586      }
20587      if (element.hasCategoryElement())
20588        composeEnumeration("category", element.getCategoryElement(), new AdverseEvent.AdverseEventCategoryEnumFactory());
20589      if (element.hasType()) {
20590        composeCodeableConcept("type", element.getType());
20591      }
20592      if (element.hasSubject()) {
20593        composeReference("subject", element.getSubject());
20594      }
20595      if (element.hasDateElement()) {
20596        composeDateTime("date", element.getDateElement());
20597      }
20598      if (element.hasReaction()) { 
20599        for (Reference e : element.getReaction()) 
20600          composeReference("reaction", e);
20601      }
20602      if (element.hasLocation()) {
20603        composeReference("location", element.getLocation());
20604      }
20605      if (element.hasSeriousness()) {
20606        composeCodeableConcept("seriousness", element.getSeriousness());
20607      }
20608      if (element.hasOutcome()) {
20609        composeCodeableConcept("outcome", element.getOutcome());
20610      }
20611      if (element.hasRecorder()) {
20612        composeReference("recorder", element.getRecorder());
20613      }
20614      if (element.hasEventParticipant()) {
20615        composeReference("eventParticipant", element.getEventParticipant());
20616      }
20617      if (element.hasDescriptionElement()) {
20618        composeString("description", element.getDescriptionElement());
20619      }
20620      if (element.hasSuspectEntity()) { 
20621        for (AdverseEvent.AdverseEventSuspectEntityComponent e : element.getSuspectEntity()) 
20622          composeAdverseEventAdverseEventSuspectEntityComponent("suspectEntity", e);
20623      }
20624      if (element.hasSubjectMedicalHistory()) { 
20625        for (Reference e : element.getSubjectMedicalHistory()) 
20626          composeReference("subjectMedicalHistory", e);
20627      }
20628      if (element.hasReferenceDocument()) { 
20629        for (Reference e : element.getReferenceDocument()) 
20630          composeReference("referenceDocument", e);
20631      }
20632      if (element.hasStudy()) { 
20633        for (Reference e : element.getStudy()) 
20634          composeReference("study", e);
20635      }
20636  }
20637
20638  protected void composeAdverseEventAdverseEventSuspectEntityComponent(String name, AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
20639    if (element != null) {
20640      composeElementAttributes(element);
20641      xml.enter(FHIR_NS, name);
20642      composeAdverseEventAdverseEventSuspectEntityComponentElements(element);
20643      composeElementClose(element);
20644      xml.exit(FHIR_NS, name);
20645    }
20646  }
20647
20648  protected void composeAdverseEventAdverseEventSuspectEntityComponentElements(AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
20649      composeBackboneElements(element);
20650      if (element.hasInstance()) {
20651        composeReference("instance", element.getInstance());
20652      }
20653      if (element.hasCausalityElement())
20654        composeEnumeration("causality", element.getCausalityElement(), new AdverseEvent.AdverseEventCausalityEnumFactory());
20655      if (element.hasCausalityAssessment()) {
20656        composeCodeableConcept("causalityAssessment", element.getCausalityAssessment());
20657      }
20658      if (element.hasCausalityProductRelatednessElement()) {
20659        composeString("causalityProductRelatedness", element.getCausalityProductRelatednessElement());
20660      }
20661      if (element.hasCausalityMethod()) {
20662        composeCodeableConcept("causalityMethod", element.getCausalityMethod());
20663      }
20664      if (element.hasCausalityAuthor()) {
20665        composeReference("causalityAuthor", element.getCausalityAuthor());
20666      }
20667      if (element.hasCausalityResult()) {
20668        composeCodeableConcept("causalityResult", element.getCausalityResult());
20669      }
20670  }
20671
20672  protected void composeAllergyIntolerance(String name, AllergyIntolerance element) throws IOException {
20673    if (element != null) {
20674      composeDomainResourceAttributes(element);
20675      xml.enter(FHIR_NS, name);
20676      composeAllergyIntoleranceElements(element);
20677      composeElementClose(element);
20678      xml.exit(FHIR_NS, name);
20679    }
20680  }
20681
20682  protected void composeAllergyIntoleranceElements(AllergyIntolerance element) throws IOException {
20683      composeDomainResourceElements(element);
20684      if (element.hasIdentifier()) { 
20685        for (Identifier e : element.getIdentifier()) 
20686          composeIdentifier("identifier", e);
20687      }
20688      if (element.hasClinicalStatusElement())
20689        composeEnumeration("clinicalStatus", element.getClinicalStatusElement(), new AllergyIntolerance.AllergyIntoleranceClinicalStatusEnumFactory());
20690      if (element.hasVerificationStatusElement())
20691        composeEnumeration("verificationStatus", element.getVerificationStatusElement(), new AllergyIntolerance.AllergyIntoleranceVerificationStatusEnumFactory());
20692      if (element.hasTypeElement())
20693        composeEnumeration("type", element.getTypeElement(), new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory());
20694        if (element.hasCategory()) 
20695          for (Enumeration<AllergyIntolerance.AllergyIntoleranceCategory> e : element.getCategory()) 
20696            composeEnumeration("category", e, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory());
20697      if (element.hasCriticalityElement())
20698        composeEnumeration("criticality", element.getCriticalityElement(), new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory());
20699      if (element.hasCode()) {
20700        composeCodeableConcept("code", element.getCode());
20701      }
20702      if (element.hasPatient()) {
20703        composeReference("patient", element.getPatient());
20704      }
20705      if (element.hasOnset()) {
20706        composeType("onset", element.getOnset());
20707      }      if (element.hasAssertedDateElement()) {
20708        composeDateTime("assertedDate", element.getAssertedDateElement());
20709      }
20710      if (element.hasRecorder()) {
20711        composeReference("recorder", element.getRecorder());
20712      }
20713      if (element.hasAsserter()) {
20714        composeReference("asserter", element.getAsserter());
20715      }
20716      if (element.hasLastOccurrenceElement()) {
20717        composeDateTime("lastOccurrence", element.getLastOccurrenceElement());
20718      }
20719      if (element.hasNote()) { 
20720        for (Annotation e : element.getNote()) 
20721          composeAnnotation("note", e);
20722      }
20723      if (element.hasReaction()) { 
20724        for (AllergyIntolerance.AllergyIntoleranceReactionComponent e : element.getReaction()) 
20725          composeAllergyIntoleranceAllergyIntoleranceReactionComponent("reaction", e);
20726      }
20727  }
20728
20729  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponent(String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
20730    if (element != null) {
20731      composeElementAttributes(element);
20732      xml.enter(FHIR_NS, name);
20733      composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(element);
20734      composeElementClose(element);
20735      xml.exit(FHIR_NS, name);
20736    }
20737  }
20738
20739  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
20740      composeBackboneElements(element);
20741      if (element.hasSubstance()) {
20742        composeCodeableConcept("substance", element.getSubstance());
20743      }
20744      if (element.hasManifestation()) { 
20745        for (CodeableConcept e : element.getManifestation()) 
20746          composeCodeableConcept("manifestation", e);
20747      }
20748      if (element.hasDescriptionElement()) {
20749        composeString("description", element.getDescriptionElement());
20750      }
20751      if (element.hasOnsetElement()) {
20752        composeDateTime("onset", element.getOnsetElement());
20753      }
20754      if (element.hasSeverityElement())
20755        composeEnumeration("severity", element.getSeverityElement(), new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory());
20756      if (element.hasExposureRoute()) {
20757        composeCodeableConcept("exposureRoute", element.getExposureRoute());
20758      }
20759      if (element.hasNote()) { 
20760        for (Annotation e : element.getNote()) 
20761          composeAnnotation("note", e);
20762      }
20763  }
20764
20765  protected void composeAppointment(String name, Appointment element) throws IOException {
20766    if (element != null) {
20767      composeDomainResourceAttributes(element);
20768      xml.enter(FHIR_NS, name);
20769      composeAppointmentElements(element);
20770      composeElementClose(element);
20771      xml.exit(FHIR_NS, name);
20772    }
20773  }
20774
20775  protected void composeAppointmentElements(Appointment element) throws IOException {
20776      composeDomainResourceElements(element);
20777      if (element.hasIdentifier()) { 
20778        for (Identifier e : element.getIdentifier()) 
20779          composeIdentifier("identifier", e);
20780      }
20781      if (element.hasStatusElement())
20782        composeEnumeration("status", element.getStatusElement(), new Appointment.AppointmentStatusEnumFactory());
20783      if (element.hasServiceCategory()) {
20784        composeCodeableConcept("serviceCategory", element.getServiceCategory());
20785      }
20786      if (element.hasServiceType()) { 
20787        for (CodeableConcept e : element.getServiceType()) 
20788          composeCodeableConcept("serviceType", e);
20789      }
20790      if (element.hasSpecialty()) { 
20791        for (CodeableConcept e : element.getSpecialty()) 
20792          composeCodeableConcept("specialty", e);
20793      }
20794      if (element.hasAppointmentType()) {
20795        composeCodeableConcept("appointmentType", element.getAppointmentType());
20796      }
20797      if (element.hasReason()) { 
20798        for (CodeableConcept e : element.getReason()) 
20799          composeCodeableConcept("reason", e);
20800      }
20801      if (element.hasIndication()) { 
20802        for (Reference e : element.getIndication()) 
20803          composeReference("indication", e);
20804      }
20805      if (element.hasPriorityElement()) {
20806        composeUnsignedInt("priority", element.getPriorityElement());
20807      }
20808      if (element.hasDescriptionElement()) {
20809        composeString("description", element.getDescriptionElement());
20810      }
20811      if (element.hasSupportingInformation()) { 
20812        for (Reference e : element.getSupportingInformation()) 
20813          composeReference("supportingInformation", e);
20814      }
20815      if (element.hasStartElement()) {
20816        composeInstant("start", element.getStartElement());
20817      }
20818      if (element.hasEndElement()) {
20819        composeInstant("end", element.getEndElement());
20820      }
20821      if (element.hasMinutesDurationElement()) {
20822        composePositiveInt("minutesDuration", element.getMinutesDurationElement());
20823      }
20824      if (element.hasSlot()) { 
20825        for (Reference e : element.getSlot()) 
20826          composeReference("slot", e);
20827      }
20828      if (element.hasCreatedElement()) {
20829        composeDateTime("created", element.getCreatedElement());
20830      }
20831      if (element.hasCommentElement()) {
20832        composeString("comment", element.getCommentElement());
20833      }
20834      if (element.hasIncomingReferral()) { 
20835        for (Reference e : element.getIncomingReferral()) 
20836          composeReference("incomingReferral", e);
20837      }
20838      if (element.hasParticipant()) { 
20839        for (Appointment.AppointmentParticipantComponent e : element.getParticipant()) 
20840          composeAppointmentAppointmentParticipantComponent("participant", e);
20841      }
20842      if (element.hasRequestedPeriod()) { 
20843        for (Period e : element.getRequestedPeriod()) 
20844          composePeriod("requestedPeriod", e);
20845      }
20846  }
20847
20848  protected void composeAppointmentAppointmentParticipantComponent(String name, Appointment.AppointmentParticipantComponent element) throws IOException {
20849    if (element != null) {
20850      composeElementAttributes(element);
20851      xml.enter(FHIR_NS, name);
20852      composeAppointmentAppointmentParticipantComponentElements(element);
20853      composeElementClose(element);
20854      xml.exit(FHIR_NS, name);
20855    }
20856  }
20857
20858  protected void composeAppointmentAppointmentParticipantComponentElements(Appointment.AppointmentParticipantComponent element) throws IOException {
20859      composeBackboneElements(element);
20860      if (element.hasType()) { 
20861        for (CodeableConcept e : element.getType()) 
20862          composeCodeableConcept("type", e);
20863      }
20864      if (element.hasActor()) {
20865        composeReference("actor", element.getActor());
20866      }
20867      if (element.hasRequiredElement())
20868        composeEnumeration("required", element.getRequiredElement(), new Appointment.ParticipantRequiredEnumFactory());
20869      if (element.hasStatusElement())
20870        composeEnumeration("status", element.getStatusElement(), new Appointment.ParticipationStatusEnumFactory());
20871  }
20872
20873  protected void composeAppointmentResponse(String name, AppointmentResponse element) throws IOException {
20874    if (element != null) {
20875      composeDomainResourceAttributes(element);
20876      xml.enter(FHIR_NS, name);
20877      composeAppointmentResponseElements(element);
20878      composeElementClose(element);
20879      xml.exit(FHIR_NS, name);
20880    }
20881  }
20882
20883  protected void composeAppointmentResponseElements(AppointmentResponse element) throws IOException {
20884      composeDomainResourceElements(element);
20885      if (element.hasIdentifier()) { 
20886        for (Identifier e : element.getIdentifier()) 
20887          composeIdentifier("identifier", e);
20888      }
20889      if (element.hasAppointment()) {
20890        composeReference("appointment", element.getAppointment());
20891      }
20892      if (element.hasStartElement()) {
20893        composeInstant("start", element.getStartElement());
20894      }
20895      if (element.hasEndElement()) {
20896        composeInstant("end", element.getEndElement());
20897      }
20898      if (element.hasParticipantType()) { 
20899        for (CodeableConcept e : element.getParticipantType()) 
20900          composeCodeableConcept("participantType", e);
20901      }
20902      if (element.hasActor()) {
20903        composeReference("actor", element.getActor());
20904      }
20905      if (element.hasParticipantStatusElement())
20906        composeEnumeration("participantStatus", element.getParticipantStatusElement(), new AppointmentResponse.ParticipantStatusEnumFactory());
20907      if (element.hasCommentElement()) {
20908        composeString("comment", element.getCommentElement());
20909      }
20910  }
20911
20912  protected void composeAuditEvent(String name, AuditEvent element) throws IOException {
20913    if (element != null) {
20914      composeDomainResourceAttributes(element);
20915      xml.enter(FHIR_NS, name);
20916      composeAuditEventElements(element);
20917      composeElementClose(element);
20918      xml.exit(FHIR_NS, name);
20919    }
20920  }
20921
20922  protected void composeAuditEventElements(AuditEvent element) throws IOException {
20923      composeDomainResourceElements(element);
20924      if (element.hasType()) {
20925        composeCoding("type", element.getType());
20926      }
20927      if (element.hasSubtype()) { 
20928        for (Coding e : element.getSubtype()) 
20929          composeCoding("subtype", e);
20930      }
20931      if (element.hasActionElement())
20932        composeEnumeration("action", element.getActionElement(), new AuditEvent.AuditEventActionEnumFactory());
20933      if (element.hasRecordedElement()) {
20934        composeInstant("recorded", element.getRecordedElement());
20935      }
20936      if (element.hasOutcomeElement())
20937        composeEnumeration("outcome", element.getOutcomeElement(), new AuditEvent.AuditEventOutcomeEnumFactory());
20938      if (element.hasOutcomeDescElement()) {
20939        composeString("outcomeDesc", element.getOutcomeDescElement());
20940      }
20941      if (element.hasPurposeOfEvent()) { 
20942        for (CodeableConcept e : element.getPurposeOfEvent()) 
20943          composeCodeableConcept("purposeOfEvent", e);
20944      }
20945      if (element.hasAgent()) { 
20946        for (AuditEvent.AuditEventAgentComponent e : element.getAgent()) 
20947          composeAuditEventAuditEventAgentComponent("agent", e);
20948      }
20949      if (element.hasSource()) {
20950        composeAuditEventAuditEventSourceComponent("source", element.getSource());
20951      }
20952      if (element.hasEntity()) { 
20953        for (AuditEvent.AuditEventEntityComponent e : element.getEntity()) 
20954          composeAuditEventAuditEventEntityComponent("entity", e);
20955      }
20956  }
20957
20958  protected void composeAuditEventAuditEventAgentComponent(String name, AuditEvent.AuditEventAgentComponent element) throws IOException {
20959    if (element != null) {
20960      composeElementAttributes(element);
20961      xml.enter(FHIR_NS, name);
20962      composeAuditEventAuditEventAgentComponentElements(element);
20963      composeElementClose(element);
20964      xml.exit(FHIR_NS, name);
20965    }
20966  }
20967
20968  protected void composeAuditEventAuditEventAgentComponentElements(AuditEvent.AuditEventAgentComponent element) throws IOException {
20969      composeBackboneElements(element);
20970      if (element.hasRole()) { 
20971        for (CodeableConcept e : element.getRole()) 
20972          composeCodeableConcept("role", e);
20973      }
20974      if (element.hasReference()) {
20975        composeReference("reference", element.getReference());
20976      }
20977      if (element.hasUserId()) {
20978        composeIdentifier("userId", element.getUserId());
20979      }
20980      if (element.hasAltIdElement()) {
20981        composeString("altId", element.getAltIdElement());
20982      }
20983      if (element.hasNameElement()) {
20984        composeString("name", element.getNameElement());
20985      }
20986      if (element.hasRequestorElement()) {
20987        composeBoolean("requestor", element.getRequestorElement());
20988      }
20989      if (element.hasLocation()) {
20990        composeReference("location", element.getLocation());
20991      }
20992      if (element.hasPolicy()) { 
20993        for (UriType e : element.getPolicy()) 
20994          composeUri("policy", e);
20995      }
20996      if (element.hasMedia()) {
20997        composeCoding("media", element.getMedia());
20998      }
20999      if (element.hasNetwork()) {
21000        composeAuditEventAuditEventAgentNetworkComponent("network", element.getNetwork());
21001      }
21002      if (element.hasPurposeOfUse()) { 
21003        for (CodeableConcept e : element.getPurposeOfUse()) 
21004          composeCodeableConcept("purposeOfUse", e);
21005      }
21006  }
21007
21008  protected void composeAuditEventAuditEventAgentNetworkComponent(String name, AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
21009    if (element != null) {
21010      composeElementAttributes(element);
21011      xml.enter(FHIR_NS, name);
21012      composeAuditEventAuditEventAgentNetworkComponentElements(element);
21013      composeElementClose(element);
21014      xml.exit(FHIR_NS, name);
21015    }
21016  }
21017
21018  protected void composeAuditEventAuditEventAgentNetworkComponentElements(AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
21019      composeBackboneElements(element);
21020      if (element.hasAddressElement()) {
21021        composeString("address", element.getAddressElement());
21022      }
21023      if (element.hasTypeElement())
21024        composeEnumeration("type", element.getTypeElement(), new AuditEvent.AuditEventAgentNetworkTypeEnumFactory());
21025  }
21026
21027  protected void composeAuditEventAuditEventSourceComponent(String name, AuditEvent.AuditEventSourceComponent element) throws IOException {
21028    if (element != null) {
21029      composeElementAttributes(element);
21030      xml.enter(FHIR_NS, name);
21031      composeAuditEventAuditEventSourceComponentElements(element);
21032      composeElementClose(element);
21033      xml.exit(FHIR_NS, name);
21034    }
21035  }
21036
21037  protected void composeAuditEventAuditEventSourceComponentElements(AuditEvent.AuditEventSourceComponent element) throws IOException {
21038      composeBackboneElements(element);
21039      if (element.hasSiteElement()) {
21040        composeString("site", element.getSiteElement());
21041      }
21042      if (element.hasIdentifier()) {
21043        composeIdentifier("identifier", element.getIdentifier());
21044      }
21045      if (element.hasType()) { 
21046        for (Coding e : element.getType()) 
21047          composeCoding("type", e);
21048      }
21049  }
21050
21051  protected void composeAuditEventAuditEventEntityComponent(String name, AuditEvent.AuditEventEntityComponent element) throws IOException {
21052    if (element != null) {
21053      composeElementAttributes(element);
21054      xml.enter(FHIR_NS, name);
21055      composeAuditEventAuditEventEntityComponentElements(element);
21056      composeElementClose(element);
21057      xml.exit(FHIR_NS, name);
21058    }
21059  }
21060
21061  protected void composeAuditEventAuditEventEntityComponentElements(AuditEvent.AuditEventEntityComponent element) throws IOException {
21062      composeBackboneElements(element);
21063      if (element.hasIdentifier()) {
21064        composeIdentifier("identifier", element.getIdentifier());
21065      }
21066      if (element.hasReference()) {
21067        composeReference("reference", element.getReference());
21068      }
21069      if (element.hasType()) {
21070        composeCoding("type", element.getType());
21071      }
21072      if (element.hasRole()) {
21073        composeCoding("role", element.getRole());
21074      }
21075      if (element.hasLifecycle()) {
21076        composeCoding("lifecycle", element.getLifecycle());
21077      }
21078      if (element.hasSecurityLabel()) { 
21079        for (Coding e : element.getSecurityLabel()) 
21080          composeCoding("securityLabel", e);
21081      }
21082      if (element.hasNameElement()) {
21083        composeString("name", element.getNameElement());
21084      }
21085      if (element.hasDescriptionElement()) {
21086        composeString("description", element.getDescriptionElement());
21087      }
21088      if (element.hasQueryElement()) {
21089        composeBase64Binary("query", element.getQueryElement());
21090      }
21091      if (element.hasDetail()) { 
21092        for (AuditEvent.AuditEventEntityDetailComponent e : element.getDetail()) 
21093          composeAuditEventAuditEventEntityDetailComponent("detail", e);
21094      }
21095  }
21096
21097  protected void composeAuditEventAuditEventEntityDetailComponent(String name, AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
21098    if (element != null) {
21099      composeElementAttributes(element);
21100      xml.enter(FHIR_NS, name);
21101      composeAuditEventAuditEventEntityDetailComponentElements(element);
21102      composeElementClose(element);
21103      xml.exit(FHIR_NS, name);
21104    }
21105  }
21106
21107  protected void composeAuditEventAuditEventEntityDetailComponentElements(AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
21108      composeBackboneElements(element);
21109      if (element.hasTypeElement()) {
21110        composeString("type", element.getTypeElement());
21111      }
21112      if (element.hasValueElement()) {
21113        composeBase64Binary("value", element.getValueElement());
21114      }
21115  }
21116
21117  protected void composeBasic(String name, Basic element) throws IOException {
21118    if (element != null) {
21119      composeDomainResourceAttributes(element);
21120      xml.enter(FHIR_NS, name);
21121      composeBasicElements(element);
21122      composeElementClose(element);
21123      xml.exit(FHIR_NS, name);
21124    }
21125  }
21126
21127  protected void composeBasicElements(Basic element) throws IOException {
21128      composeDomainResourceElements(element);
21129      if (element.hasIdentifier()) { 
21130        for (Identifier e : element.getIdentifier()) 
21131          composeIdentifier("identifier", e);
21132      }
21133      if (element.hasCode()) {
21134        composeCodeableConcept("code", element.getCode());
21135      }
21136      if (element.hasSubject()) {
21137        composeReference("subject", element.getSubject());
21138      }
21139      if (element.hasCreatedElement()) {
21140        composeDate("created", element.getCreatedElement());
21141      }
21142      if (element.hasAuthor()) {
21143        composeReference("author", element.getAuthor());
21144      }
21145  }
21146
21147  protected void composeBinary(String name, Binary element) throws IOException {
21148    if (element != null) {
21149      composeResourceAttributes(element);
21150      xml.enter(FHIR_NS, name);
21151      composeBinaryElements(element);
21152      composeElementClose(element);
21153      xml.exit(FHIR_NS, name);
21154    }
21155  }
21156
21157  protected void composeBinaryElements(Binary element) throws IOException {
21158      composeResourceElements(element);
21159      if (element.hasContentTypeElement()) {
21160        composeCode("contentType", element.getContentTypeElement());
21161      }
21162      if (element.hasSecurityContext()) {
21163        composeReference("securityContext", element.getSecurityContext());
21164      }
21165      if (element.hasContentElement()) {
21166        composeBase64Binary("content", element.getContentElement());
21167      }
21168  }
21169
21170  protected void composeBodySite(String name, BodySite element) throws IOException {
21171    if (element != null) {
21172      composeDomainResourceAttributes(element);
21173      xml.enter(FHIR_NS, name);
21174      composeBodySiteElements(element);
21175      composeElementClose(element);
21176      xml.exit(FHIR_NS, name);
21177    }
21178  }
21179
21180  protected void composeBodySiteElements(BodySite element) throws IOException {
21181      composeDomainResourceElements(element);
21182      if (element.hasIdentifier()) { 
21183        for (Identifier e : element.getIdentifier()) 
21184          composeIdentifier("identifier", e);
21185      }
21186      if (element.hasActiveElement()) {
21187        composeBoolean("active", element.getActiveElement());
21188      }
21189      if (element.hasCode()) {
21190        composeCodeableConcept("code", element.getCode());
21191      }
21192      if (element.hasQualifier()) { 
21193        for (CodeableConcept e : element.getQualifier()) 
21194          composeCodeableConcept("qualifier", e);
21195      }
21196      if (element.hasDescriptionElement()) {
21197        composeString("description", element.getDescriptionElement());
21198      }
21199      if (element.hasImage()) { 
21200        for (Attachment e : element.getImage()) 
21201          composeAttachment("image", e);
21202      }
21203      if (element.hasPatient()) {
21204        composeReference("patient", element.getPatient());
21205      }
21206  }
21207
21208  protected void composeBundle(String name, Bundle element) throws IOException {
21209    if (element != null) {
21210      composeResourceAttributes(element);
21211      xml.enter(FHIR_NS, name);
21212      composeBundleElements(element);
21213      composeElementClose(element);
21214      xml.exit(FHIR_NS, name);
21215    }
21216  }
21217
21218  protected void composeBundleElements(Bundle element) throws IOException {
21219      composeResourceElements(element);
21220      if (element.hasIdentifier()) {
21221        composeIdentifier("identifier", element.getIdentifier());
21222      }
21223      if (element.hasTypeElement())
21224        composeEnumeration("type", element.getTypeElement(), new Bundle.BundleTypeEnumFactory());
21225      if (element.hasTotalElement()) {
21226        composeUnsignedInt("total", element.getTotalElement());
21227      }
21228      if (element.hasLink()) { 
21229        for (Bundle.BundleLinkComponent e : element.getLink()) 
21230          composeBundleBundleLinkComponent("link", e);
21231      }
21232      if (element.hasEntry()) { 
21233        for (Bundle.BundleEntryComponent e : element.getEntry()) 
21234          composeBundleBundleEntryComponent("entry", e);
21235      }
21236      if (element.hasSignature()) {
21237        composeSignature("signature", element.getSignature());
21238      }
21239  }
21240
21241  protected void composeBundleBundleLinkComponent(String name, Bundle.BundleLinkComponent element) throws IOException {
21242    if (element != null) {
21243      composeElementAttributes(element);
21244      xml.enter(FHIR_NS, name);
21245      composeBundleBundleLinkComponentElements(element);
21246      composeElementClose(element);
21247      xml.exit(FHIR_NS, name);
21248    }
21249  }
21250
21251  protected void composeBundleBundleLinkComponentElements(Bundle.BundleLinkComponent element) throws IOException {
21252      composeBackboneElements(element);
21253      if (element.hasRelationElement()) {
21254        composeString("relation", element.getRelationElement());
21255      }
21256      if (element.hasUrlElement()) {
21257        composeUri("url", element.getUrlElement());
21258      }
21259  }
21260
21261  protected void composeBundleBundleEntryComponent(String name, Bundle.BundleEntryComponent element) throws IOException {
21262    if (element != null) {
21263      composeElementAttributes(element);
21264      xml.enter(FHIR_NS, name);
21265      composeBundleBundleEntryComponentElements(element);
21266      composeElementClose(element);
21267      xml.exit(FHIR_NS, name);
21268    }
21269  }
21270
21271  protected void composeBundleBundleEntryComponentElements(Bundle.BundleEntryComponent element) throws IOException {
21272      composeBackboneElements(element);
21273      if (element.hasLink()) { 
21274        for (Bundle.BundleLinkComponent e : element.getLink()) 
21275          composeBundleBundleLinkComponent("link", e);
21276      }
21277      if (element.hasFullUrlElement()) {
21278        composeUri("fullUrl", element.getFullUrlElement());
21279      }
21280      if (element.hasResource()) {
21281        xml.enter(FHIR_NS, "resource");
21282        composeResource(element.getResource());
21283        xml.exit(FHIR_NS, "resource");
21284      }
21285      if (element.hasSearch()) {
21286        composeBundleBundleEntrySearchComponent("search", element.getSearch());
21287      }
21288      if (element.hasRequest()) {
21289        composeBundleBundleEntryRequestComponent("request", element.getRequest());
21290      }
21291      if (element.hasResponse()) {
21292        composeBundleBundleEntryResponseComponent("response", element.getResponse());
21293      }
21294  }
21295
21296  protected void composeBundleBundleEntrySearchComponent(String name, Bundle.BundleEntrySearchComponent element) throws IOException {
21297    if (element != null) {
21298      composeElementAttributes(element);
21299      xml.enter(FHIR_NS, name);
21300      composeBundleBundleEntrySearchComponentElements(element);
21301      composeElementClose(element);
21302      xml.exit(FHIR_NS, name);
21303    }
21304  }
21305
21306  protected void composeBundleBundleEntrySearchComponentElements(Bundle.BundleEntrySearchComponent element) throws IOException {
21307      composeBackboneElements(element);
21308      if (element.hasModeElement())
21309        composeEnumeration("mode", element.getModeElement(), new Bundle.SearchEntryModeEnumFactory());
21310      if (element.hasScoreElement()) {
21311        composeDecimal("score", element.getScoreElement());
21312      }
21313  }
21314
21315  protected void composeBundleBundleEntryRequestComponent(String name, Bundle.BundleEntryRequestComponent element) throws IOException {
21316    if (element != null) {
21317      composeElementAttributes(element);
21318      xml.enter(FHIR_NS, name);
21319      composeBundleBundleEntryRequestComponentElements(element);
21320      composeElementClose(element);
21321      xml.exit(FHIR_NS, name);
21322    }
21323  }
21324
21325  protected void composeBundleBundleEntryRequestComponentElements(Bundle.BundleEntryRequestComponent element) throws IOException {
21326      composeBackboneElements(element);
21327      if (element.hasMethodElement())
21328        composeEnumeration("method", element.getMethodElement(), new Bundle.HTTPVerbEnumFactory());
21329      if (element.hasUrlElement()) {
21330        composeUri("url", element.getUrlElement());
21331      }
21332      if (element.hasIfNoneMatchElement()) {
21333        composeString("ifNoneMatch", element.getIfNoneMatchElement());
21334      }
21335      if (element.hasIfModifiedSinceElement()) {
21336        composeInstant("ifModifiedSince", element.getIfModifiedSinceElement());
21337      }
21338      if (element.hasIfMatchElement()) {
21339        composeString("ifMatch", element.getIfMatchElement());
21340      }
21341      if (element.hasIfNoneExistElement()) {
21342        composeString("ifNoneExist", element.getIfNoneExistElement());
21343      }
21344  }
21345
21346  protected void composeBundleBundleEntryResponseComponent(String name, Bundle.BundleEntryResponseComponent element) throws IOException {
21347    if (element != null) {
21348      composeElementAttributes(element);
21349      xml.enter(FHIR_NS, name);
21350      composeBundleBundleEntryResponseComponentElements(element);
21351      composeElementClose(element);
21352      xml.exit(FHIR_NS, name);
21353    }
21354  }
21355
21356  protected void composeBundleBundleEntryResponseComponentElements(Bundle.BundleEntryResponseComponent element) throws IOException {
21357      composeBackboneElements(element);
21358      if (element.hasStatusElement()) {
21359        composeString("status", element.getStatusElement());
21360      }
21361      if (element.hasLocationElement()) {
21362        composeUri("location", element.getLocationElement());
21363      }
21364      if (element.hasEtagElement()) {
21365        composeString("etag", element.getEtagElement());
21366      }
21367      if (element.hasLastModifiedElement()) {
21368        composeInstant("lastModified", element.getLastModifiedElement());
21369      }
21370      if (element.hasOutcome()) {
21371        xml.enter(FHIR_NS, "outcome");
21372        composeResource(element.getOutcome());
21373        xml.exit(FHIR_NS, "outcome");
21374      }
21375  }
21376
21377  protected void composeCapabilityStatement(String name, CapabilityStatement element) throws IOException {
21378    if (element != null) {
21379      composeDomainResourceAttributes(element);
21380      xml.enter(FHIR_NS, name);
21381      composeCapabilityStatementElements(element);
21382      composeElementClose(element);
21383      xml.exit(FHIR_NS, name);
21384    }
21385  }
21386
21387  protected void composeCapabilityStatementElements(CapabilityStatement element) throws IOException {
21388      composeDomainResourceElements(element);
21389      if (element.hasUrlElement()) {
21390        composeUri("url", element.getUrlElement());
21391      }
21392      if (element.hasVersionElement()) {
21393        composeString("version", element.getVersionElement());
21394      }
21395      if (element.hasNameElement()) {
21396        composeString("name", element.getNameElement());
21397      }
21398      if (element.hasTitleElement()) {
21399        composeString("title", element.getTitleElement());
21400      }
21401      if (element.hasStatusElement())
21402        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
21403      if (element.hasExperimentalElement()) {
21404        composeBoolean("experimental", element.getExperimentalElement());
21405      }
21406      if (element.hasDateElement()) {
21407        composeDateTime("date", element.getDateElement());
21408      }
21409      if (element.hasPublisherElement()) {
21410        composeString("publisher", element.getPublisherElement());
21411      }
21412      if (element.hasContact()) { 
21413        for (ContactDetail e : element.getContact()) 
21414          composeContactDetail("contact", e);
21415      }
21416      if (element.hasDescriptionElement()) {
21417        composeMarkdown("description", element.getDescriptionElement());
21418      }
21419      if (element.hasUseContext()) { 
21420        for (UsageContext e : element.getUseContext()) 
21421          composeUsageContext("useContext", e);
21422      }
21423      if (element.hasJurisdiction()) { 
21424        for (CodeableConcept e : element.getJurisdiction()) 
21425          composeCodeableConcept("jurisdiction", e);
21426      }
21427      if (element.hasPurposeElement()) {
21428        composeMarkdown("purpose", element.getPurposeElement());
21429      }
21430      if (element.hasCopyrightElement()) {
21431        composeMarkdown("copyright", element.getCopyrightElement());
21432      }
21433      if (element.hasKindElement())
21434        composeEnumeration("kind", element.getKindElement(), new CapabilityStatement.CapabilityStatementKindEnumFactory());
21435      if (element.hasInstantiates()) { 
21436        for (UriType e : element.getInstantiates()) 
21437          composeUri("instantiates", e);
21438      }
21439      if (element.hasSoftware()) {
21440        composeCapabilityStatementCapabilityStatementSoftwareComponent("software", element.getSoftware());
21441      }
21442      if (element.hasImplementation()) {
21443        composeCapabilityStatementCapabilityStatementImplementationComponent("implementation", element.getImplementation());
21444      }
21445      if (element.hasFhirVersionElement()) {
21446        composeId("fhirVersion", element.getFhirVersionElement());
21447      }
21448      if (element.hasAcceptUnknownElement())
21449        composeEnumeration("acceptUnknown", element.getAcceptUnknownElement(), new CapabilityStatement.UnknownContentCodeEnumFactory());
21450      if (element.hasFormat()) { 
21451        for (CodeType e : element.getFormat()) 
21452          composeCode("format", e);
21453      }
21454      if (element.hasPatchFormat()) { 
21455        for (CodeType e : element.getPatchFormat()) 
21456          composeCode("patchFormat", e);
21457      }
21458      if (element.hasImplementationGuide()) { 
21459        for (UriType e : element.getImplementationGuide()) 
21460          composeUri("implementationGuide", e);
21461      }
21462      if (element.hasProfile()) { 
21463        for (Reference e : element.getProfile()) 
21464          composeReference("profile", e);
21465      }
21466      if (element.hasRest()) { 
21467        for (CapabilityStatement.CapabilityStatementRestComponent e : element.getRest()) 
21468          composeCapabilityStatementCapabilityStatementRestComponent("rest", e);
21469      }
21470      if (element.hasMessaging()) { 
21471        for (CapabilityStatement.CapabilityStatementMessagingComponent e : element.getMessaging()) 
21472          composeCapabilityStatementCapabilityStatementMessagingComponent("messaging", e);
21473      }
21474      if (element.hasDocument()) { 
21475        for (CapabilityStatement.CapabilityStatementDocumentComponent e : element.getDocument()) 
21476          composeCapabilityStatementCapabilityStatementDocumentComponent("document", e);
21477      }
21478  }
21479
21480  protected void composeCapabilityStatementCapabilityStatementSoftwareComponent(String name, CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
21481    if (element != null) {
21482      composeElementAttributes(element);
21483      xml.enter(FHIR_NS, name);
21484      composeCapabilityStatementCapabilityStatementSoftwareComponentElements(element);
21485      composeElementClose(element);
21486      xml.exit(FHIR_NS, name);
21487    }
21488  }
21489
21490  protected void composeCapabilityStatementCapabilityStatementSoftwareComponentElements(CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
21491      composeBackboneElements(element);
21492      if (element.hasNameElement()) {
21493        composeString("name", element.getNameElement());
21494      }
21495      if (element.hasVersionElement()) {
21496        composeString("version", element.getVersionElement());
21497      }
21498      if (element.hasReleaseDateElement()) {
21499        composeDateTime("releaseDate", element.getReleaseDateElement());
21500      }
21501  }
21502
21503  protected void composeCapabilityStatementCapabilityStatementImplementationComponent(String name, CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
21504    if (element != null) {
21505      composeElementAttributes(element);
21506      xml.enter(FHIR_NS, name);
21507      composeCapabilityStatementCapabilityStatementImplementationComponentElements(element);
21508      composeElementClose(element);
21509      xml.exit(FHIR_NS, name);
21510    }
21511  }
21512
21513  protected void composeCapabilityStatementCapabilityStatementImplementationComponentElements(CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
21514      composeBackboneElements(element);
21515      if (element.hasDescriptionElement()) {
21516        composeString("description", element.getDescriptionElement());
21517      }
21518      if (element.hasUrlElement()) {
21519        composeUri("url", element.getUrlElement());
21520      }
21521  }
21522
21523  protected void composeCapabilityStatementCapabilityStatementRestComponent(String name, CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
21524    if (element != null) {
21525      composeElementAttributes(element);
21526      xml.enter(FHIR_NS, name);
21527      composeCapabilityStatementCapabilityStatementRestComponentElements(element);
21528      composeElementClose(element);
21529      xml.exit(FHIR_NS, name);
21530    }
21531  }
21532
21533  protected void composeCapabilityStatementCapabilityStatementRestComponentElements(CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
21534      composeBackboneElements(element);
21535      if (element.hasModeElement())
21536        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.RestfulCapabilityModeEnumFactory());
21537      if (element.hasDocumentationElement()) {
21538        composeString("documentation", element.getDocumentationElement());
21539      }
21540      if (element.hasSecurity()) {
21541        composeCapabilityStatementCapabilityStatementRestSecurityComponent("security", element.getSecurity());
21542      }
21543      if (element.hasResource()) { 
21544        for (CapabilityStatement.CapabilityStatementRestResourceComponent e : element.getResource()) 
21545          composeCapabilityStatementCapabilityStatementRestResourceComponent("resource", e);
21546      }
21547      if (element.hasInteraction()) { 
21548        for (CapabilityStatement.SystemInteractionComponent e : element.getInteraction()) 
21549          composeCapabilityStatementSystemInteractionComponent("interaction", e);
21550      }
21551      if (element.hasSearchParam()) { 
21552        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
21553          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
21554      }
21555      if (element.hasOperation()) { 
21556        for (CapabilityStatement.CapabilityStatementRestOperationComponent e : element.getOperation()) 
21557          composeCapabilityStatementCapabilityStatementRestOperationComponent("operation", e);
21558      }
21559      if (element.hasCompartment()) { 
21560        for (UriType e : element.getCompartment()) 
21561          composeUri("compartment", e);
21562      }
21563  }
21564
21565  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponent(String name, CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
21566    if (element != null) {
21567      composeElementAttributes(element);
21568      xml.enter(FHIR_NS, name);
21569      composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(element);
21570      composeElementClose(element);
21571      xml.exit(FHIR_NS, name);
21572    }
21573  }
21574
21575  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
21576      composeBackboneElements(element);
21577      if (element.hasCorsElement()) {
21578        composeBoolean("cors", element.getCorsElement());
21579      }
21580      if (element.hasService()) { 
21581        for (CodeableConcept e : element.getService()) 
21582          composeCodeableConcept("service", e);
21583      }
21584      if (element.hasDescriptionElement()) {
21585        composeString("description", element.getDescriptionElement());
21586      }
21587      if (element.hasCertificate()) { 
21588        for (CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent e : element.getCertificate()) 
21589          composeCapabilityStatementCapabilityStatementRestSecurityCertificateComponent("certificate", e);
21590      }
21591  }
21592
21593  protected void composeCapabilityStatementCapabilityStatementRestSecurityCertificateComponent(String name, CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent element) throws IOException {
21594    if (element != null) {
21595      composeElementAttributes(element);
21596      xml.enter(FHIR_NS, name);
21597      composeCapabilityStatementCapabilityStatementRestSecurityCertificateComponentElements(element);
21598      composeElementClose(element);
21599      xml.exit(FHIR_NS, name);
21600    }
21601  }
21602
21603  protected void composeCapabilityStatementCapabilityStatementRestSecurityCertificateComponentElements(CapabilityStatement.CapabilityStatementRestSecurityCertificateComponent element) throws IOException {
21604      composeBackboneElements(element);
21605      if (element.hasTypeElement()) {
21606        composeCode("type", element.getTypeElement());
21607      }
21608      if (element.hasBlobElement()) {
21609        composeBase64Binary("blob", element.getBlobElement());
21610      }
21611  }
21612
21613  protected void composeCapabilityStatementCapabilityStatementRestResourceComponent(String name, CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
21614    if (element != null) {
21615      composeElementAttributes(element);
21616      xml.enter(FHIR_NS, name);
21617      composeCapabilityStatementCapabilityStatementRestResourceComponentElements(element);
21618      composeElementClose(element);
21619      xml.exit(FHIR_NS, name);
21620    }
21621  }
21622
21623  protected void composeCapabilityStatementCapabilityStatementRestResourceComponentElements(CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
21624      composeBackboneElements(element);
21625      if (element.hasTypeElement()) {
21626        composeCode("type", element.getTypeElement());
21627      }
21628      if (element.hasProfile()) {
21629        composeReference("profile", element.getProfile());
21630      }
21631      if (element.hasDocumentationElement()) {
21632        composeMarkdown("documentation", element.getDocumentationElement());
21633      }
21634      if (element.hasInteraction()) { 
21635        for (CapabilityStatement.ResourceInteractionComponent e : element.getInteraction()) 
21636          composeCapabilityStatementResourceInteractionComponent("interaction", e);
21637      }
21638      if (element.hasVersioningElement())
21639        composeEnumeration("versioning", element.getVersioningElement(), new CapabilityStatement.ResourceVersionPolicyEnumFactory());
21640      if (element.hasReadHistoryElement()) {
21641        composeBoolean("readHistory", element.getReadHistoryElement());
21642      }
21643      if (element.hasUpdateCreateElement()) {
21644        composeBoolean("updateCreate", element.getUpdateCreateElement());
21645      }
21646      if (element.hasConditionalCreateElement()) {
21647        composeBoolean("conditionalCreate", element.getConditionalCreateElement());
21648      }
21649      if (element.hasConditionalReadElement())
21650        composeEnumeration("conditionalRead", element.getConditionalReadElement(), new CapabilityStatement.ConditionalReadStatusEnumFactory());
21651      if (element.hasConditionalUpdateElement()) {
21652        composeBoolean("conditionalUpdate", element.getConditionalUpdateElement());
21653      }
21654      if (element.hasConditionalDeleteElement())
21655        composeEnumeration("conditionalDelete", element.getConditionalDeleteElement(), new CapabilityStatement.ConditionalDeleteStatusEnumFactory());
21656        if (element.hasReferencePolicy()) 
21657          for (Enumeration<CapabilityStatement.ReferenceHandlingPolicy> e : element.getReferencePolicy()) 
21658            composeEnumeration("referencePolicy", e, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory());
21659      if (element.hasSearchInclude()) { 
21660        for (StringType e : element.getSearchInclude()) 
21661          composeString("searchInclude", e);
21662      }
21663      if (element.hasSearchRevInclude()) { 
21664        for (StringType e : element.getSearchRevInclude()) 
21665          composeString("searchRevInclude", e);
21666      }
21667      if (element.hasSearchParam()) { 
21668        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
21669          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
21670      }
21671  }
21672
21673  protected void composeCapabilityStatementResourceInteractionComponent(String name, CapabilityStatement.ResourceInteractionComponent element) throws IOException {
21674    if (element != null) {
21675      composeElementAttributes(element);
21676      xml.enter(FHIR_NS, name);
21677      composeCapabilityStatementResourceInteractionComponentElements(element);
21678      composeElementClose(element);
21679      xml.exit(FHIR_NS, name);
21680    }
21681  }
21682
21683  protected void composeCapabilityStatementResourceInteractionComponentElements(CapabilityStatement.ResourceInteractionComponent element) throws IOException {
21684      composeBackboneElements(element);
21685      if (element.hasCodeElement())
21686        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.TypeRestfulInteractionEnumFactory());
21687      if (element.hasDocumentationElement()) {
21688        composeString("documentation", element.getDocumentationElement());
21689      }
21690  }
21691
21692  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(String name, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
21693    if (element != null) {
21694      composeElementAttributes(element);
21695      xml.enter(FHIR_NS, name);
21696      composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(element);
21697      composeElementClose(element);
21698      xml.exit(FHIR_NS, name);
21699    }
21700  }
21701
21702  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
21703      composeBackboneElements(element);
21704      if (element.hasNameElement()) {
21705        composeString("name", element.getNameElement());
21706      }
21707      if (element.hasDefinitionElement()) {
21708        composeUri("definition", element.getDefinitionElement());
21709      }
21710      if (element.hasTypeElement())
21711        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
21712      if (element.hasDocumentationElement()) {
21713        composeString("documentation", element.getDocumentationElement());
21714      }
21715  }
21716
21717  protected void composeCapabilityStatementSystemInteractionComponent(String name, CapabilityStatement.SystemInteractionComponent element) throws IOException {
21718    if (element != null) {
21719      composeElementAttributes(element);
21720      xml.enter(FHIR_NS, name);
21721      composeCapabilityStatementSystemInteractionComponentElements(element);
21722      composeElementClose(element);
21723      xml.exit(FHIR_NS, name);
21724    }
21725  }
21726
21727  protected void composeCapabilityStatementSystemInteractionComponentElements(CapabilityStatement.SystemInteractionComponent element) throws IOException {
21728      composeBackboneElements(element);
21729      if (element.hasCodeElement())
21730        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.SystemRestfulInteractionEnumFactory());
21731      if (element.hasDocumentationElement()) {
21732        composeString("documentation", element.getDocumentationElement());
21733      }
21734  }
21735
21736  protected void composeCapabilityStatementCapabilityStatementRestOperationComponent(String name, CapabilityStatement.CapabilityStatementRestOperationComponent element) throws IOException {
21737    if (element != null) {
21738      composeElementAttributes(element);
21739      xml.enter(FHIR_NS, name);
21740      composeCapabilityStatementCapabilityStatementRestOperationComponentElements(element);
21741      composeElementClose(element);
21742      xml.exit(FHIR_NS, name);
21743    }
21744  }
21745
21746  protected void composeCapabilityStatementCapabilityStatementRestOperationComponentElements(CapabilityStatement.CapabilityStatementRestOperationComponent element) throws IOException {
21747      composeBackboneElements(element);
21748      if (element.hasNameElement()) {
21749        composeString("name", element.getNameElement());
21750      }
21751      if (element.hasDefinition()) {
21752        composeReference("definition", element.getDefinition());
21753      }
21754  }
21755
21756  protected void composeCapabilityStatementCapabilityStatementMessagingComponent(String name, CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
21757    if (element != null) {
21758      composeElementAttributes(element);
21759      xml.enter(FHIR_NS, name);
21760      composeCapabilityStatementCapabilityStatementMessagingComponentElements(element);
21761      composeElementClose(element);
21762      xml.exit(FHIR_NS, name);
21763    }
21764  }
21765
21766  protected void composeCapabilityStatementCapabilityStatementMessagingComponentElements(CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
21767      composeBackboneElements(element);
21768      if (element.hasEndpoint()) { 
21769        for (CapabilityStatement.CapabilityStatementMessagingEndpointComponent e : element.getEndpoint()) 
21770          composeCapabilityStatementCapabilityStatementMessagingEndpointComponent("endpoint", e);
21771      }
21772      if (element.hasReliableCacheElement()) {
21773        composeUnsignedInt("reliableCache", element.getReliableCacheElement());
21774      }
21775      if (element.hasDocumentationElement()) {
21776        composeString("documentation", element.getDocumentationElement());
21777      }
21778      if (element.hasSupportedMessage()) { 
21779        for (CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent e : element.getSupportedMessage()) 
21780          composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent("supportedMessage", e);
21781      }
21782      if (element.hasEvent()) { 
21783        for (CapabilityStatement.CapabilityStatementMessagingEventComponent e : element.getEvent()) 
21784          composeCapabilityStatementCapabilityStatementMessagingEventComponent("event", e);
21785      }
21786  }
21787
21788  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponent(String name, CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
21789    if (element != null) {
21790      composeElementAttributes(element);
21791      xml.enter(FHIR_NS, name);
21792      composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(element);
21793      composeElementClose(element);
21794      xml.exit(FHIR_NS, name);
21795    }
21796  }
21797
21798  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
21799      composeBackboneElements(element);
21800      if (element.hasProtocol()) {
21801        composeCoding("protocol", element.getProtocol());
21802      }
21803      if (element.hasAddressElement()) {
21804        composeUri("address", element.getAddressElement());
21805      }
21806  }
21807
21808  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(String name, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
21809    if (element != null) {
21810      composeElementAttributes(element);
21811      xml.enter(FHIR_NS, name);
21812      composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(element);
21813      composeElementClose(element);
21814      xml.exit(FHIR_NS, name);
21815    }
21816  }
21817
21818  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
21819      composeBackboneElements(element);
21820      if (element.hasModeElement())
21821        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.EventCapabilityModeEnumFactory());
21822      if (element.hasDefinition()) {
21823        composeReference("definition", element.getDefinition());
21824      }
21825  }
21826
21827  protected void composeCapabilityStatementCapabilityStatementMessagingEventComponent(String name, CapabilityStatement.CapabilityStatementMessagingEventComponent element) throws IOException {
21828    if (element != null) {
21829      composeElementAttributes(element);
21830      xml.enter(FHIR_NS, name);
21831      composeCapabilityStatementCapabilityStatementMessagingEventComponentElements(element);
21832      composeElementClose(element);
21833      xml.exit(FHIR_NS, name);
21834    }
21835  }
21836
21837  protected void composeCapabilityStatementCapabilityStatementMessagingEventComponentElements(CapabilityStatement.CapabilityStatementMessagingEventComponent element) throws IOException {
21838      composeBackboneElements(element);
21839      if (element.hasCode()) {
21840        composeCoding("code", element.getCode());
21841      }
21842      if (element.hasCategoryElement())
21843        composeEnumeration("category", element.getCategoryElement(), new CapabilityStatement.MessageSignificanceCategoryEnumFactory());
21844      if (element.hasModeElement())
21845        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.EventCapabilityModeEnumFactory());
21846      if (element.hasFocusElement()) {
21847        composeCode("focus", element.getFocusElement());
21848      }
21849      if (element.hasRequest()) {
21850        composeReference("request", element.getRequest());
21851      }
21852      if (element.hasResponse()) {
21853        composeReference("response", element.getResponse());
21854      }
21855      if (element.hasDocumentationElement()) {
21856        composeString("documentation", element.getDocumentationElement());
21857      }
21858  }
21859
21860  protected void composeCapabilityStatementCapabilityStatementDocumentComponent(String name, CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
21861    if (element != null) {
21862      composeElementAttributes(element);
21863      xml.enter(FHIR_NS, name);
21864      composeCapabilityStatementCapabilityStatementDocumentComponentElements(element);
21865      composeElementClose(element);
21866      xml.exit(FHIR_NS, name);
21867    }
21868  }
21869
21870  protected void composeCapabilityStatementCapabilityStatementDocumentComponentElements(CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
21871      composeBackboneElements(element);
21872      if (element.hasModeElement())
21873        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.DocumentModeEnumFactory());
21874      if (element.hasDocumentationElement()) {
21875        composeString("documentation", element.getDocumentationElement());
21876      }
21877      if (element.hasProfile()) {
21878        composeReference("profile", element.getProfile());
21879      }
21880  }
21881
21882  protected void composeCarePlan(String name, CarePlan element) throws IOException {
21883    if (element != null) {
21884      composeDomainResourceAttributes(element);
21885      xml.enter(FHIR_NS, name);
21886      composeCarePlanElements(element);
21887      composeElementClose(element);
21888      xml.exit(FHIR_NS, name);
21889    }
21890  }
21891
21892  protected void composeCarePlanElements(CarePlan element) throws IOException {
21893      composeDomainResourceElements(element);
21894      if (element.hasIdentifier()) { 
21895        for (Identifier e : element.getIdentifier()) 
21896          composeIdentifier("identifier", e);
21897      }
21898      if (element.hasDefinition()) { 
21899        for (Reference e : element.getDefinition()) 
21900          composeReference("definition", e);
21901      }
21902      if (element.hasBasedOn()) { 
21903        for (Reference e : element.getBasedOn()) 
21904          composeReference("basedOn", e);
21905      }
21906      if (element.hasReplaces()) { 
21907        for (Reference e : element.getReplaces()) 
21908          composeReference("replaces", e);
21909      }
21910      if (element.hasPartOf()) { 
21911        for (Reference e : element.getPartOf()) 
21912          composeReference("partOf", e);
21913      }
21914      if (element.hasStatusElement())
21915        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanStatusEnumFactory());
21916      if (element.hasIntentElement())
21917        composeEnumeration("intent", element.getIntentElement(), new CarePlan.CarePlanIntentEnumFactory());
21918      if (element.hasCategory()) { 
21919        for (CodeableConcept e : element.getCategory()) 
21920          composeCodeableConcept("category", e);
21921      }
21922      if (element.hasTitleElement()) {
21923        composeString("title", element.getTitleElement());
21924      }
21925      if (element.hasDescriptionElement()) {
21926        composeString("description", element.getDescriptionElement());
21927      }
21928      if (element.hasSubject()) {
21929        composeReference("subject", element.getSubject());
21930      }
21931      if (element.hasContext()) {
21932        composeReference("context", element.getContext());
21933      }
21934      if (element.hasPeriod()) {
21935        composePeriod("period", element.getPeriod());
21936      }
21937      if (element.hasAuthor()) { 
21938        for (Reference e : element.getAuthor()) 
21939          composeReference("author", e);
21940      }
21941      if (element.hasCareTeam()) { 
21942        for (Reference e : element.getCareTeam()) 
21943          composeReference("careTeam", e);
21944      }
21945      if (element.hasAddresses()) { 
21946        for (Reference e : element.getAddresses()) 
21947          composeReference("addresses", e);
21948      }
21949      if (element.hasSupportingInfo()) { 
21950        for (Reference e : element.getSupportingInfo()) 
21951          composeReference("supportingInfo", e);
21952      }
21953      if (element.hasGoal()) { 
21954        for (Reference e : element.getGoal()) 
21955          composeReference("goal", e);
21956      }
21957      if (element.hasActivity()) { 
21958        for (CarePlan.CarePlanActivityComponent e : element.getActivity()) 
21959          composeCarePlanCarePlanActivityComponent("activity", e);
21960      }
21961      if (element.hasNote()) { 
21962        for (Annotation e : element.getNote()) 
21963          composeAnnotation("note", e);
21964      }
21965  }
21966
21967  protected void composeCarePlanCarePlanActivityComponent(String name, CarePlan.CarePlanActivityComponent element) throws IOException {
21968    if (element != null) {
21969      composeElementAttributes(element);
21970      xml.enter(FHIR_NS, name);
21971      composeCarePlanCarePlanActivityComponentElements(element);
21972      composeElementClose(element);
21973      xml.exit(FHIR_NS, name);
21974    }
21975  }
21976
21977  protected void composeCarePlanCarePlanActivityComponentElements(CarePlan.CarePlanActivityComponent element) throws IOException {
21978      composeBackboneElements(element);
21979      if (element.hasOutcomeCodeableConcept()) { 
21980        for (CodeableConcept e : element.getOutcomeCodeableConcept()) 
21981          composeCodeableConcept("outcomeCodeableConcept", e);
21982      }
21983      if (element.hasOutcomeReference()) { 
21984        for (Reference e : element.getOutcomeReference()) 
21985          composeReference("outcomeReference", e);
21986      }
21987      if (element.hasProgress()) { 
21988        for (Annotation e : element.getProgress()) 
21989          composeAnnotation("progress", e);
21990      }
21991      if (element.hasReference()) {
21992        composeReference("reference", element.getReference());
21993      }
21994      if (element.hasDetail()) {
21995        composeCarePlanCarePlanActivityDetailComponent("detail", element.getDetail());
21996      }
21997  }
21998
21999  protected void composeCarePlanCarePlanActivityDetailComponent(String name, CarePlan.CarePlanActivityDetailComponent element) throws IOException {
22000    if (element != null) {
22001      composeElementAttributes(element);
22002      xml.enter(FHIR_NS, name);
22003      composeCarePlanCarePlanActivityDetailComponentElements(element);
22004      composeElementClose(element);
22005      xml.exit(FHIR_NS, name);
22006    }
22007  }
22008
22009  protected void composeCarePlanCarePlanActivityDetailComponentElements(CarePlan.CarePlanActivityDetailComponent element) throws IOException {
22010      composeBackboneElements(element);
22011      if (element.hasCategory()) {
22012        composeCodeableConcept("category", element.getCategory());
22013      }
22014      if (element.hasDefinition()) {
22015        composeReference("definition", element.getDefinition());
22016      }
22017      if (element.hasCode()) {
22018        composeCodeableConcept("code", element.getCode());
22019      }
22020      if (element.hasReasonCode()) { 
22021        for (CodeableConcept e : element.getReasonCode()) 
22022          composeCodeableConcept("reasonCode", e);
22023      }
22024      if (element.hasReasonReference()) { 
22025        for (Reference e : element.getReasonReference()) 
22026          composeReference("reasonReference", e);
22027      }
22028      if (element.hasGoal()) { 
22029        for (Reference e : element.getGoal()) 
22030          composeReference("goal", e);
22031      }
22032      if (element.hasStatusElement())
22033        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanActivityStatusEnumFactory());
22034      if (element.hasStatusReasonElement()) {
22035        composeString("statusReason", element.getStatusReasonElement());
22036      }
22037      if (element.hasProhibitedElement()) {
22038        composeBoolean("prohibited", element.getProhibitedElement());
22039      }
22040      if (element.hasScheduled()) {
22041        composeType("scheduled", element.getScheduled());
22042      }      if (element.hasLocation()) {
22043        composeReference("location", element.getLocation());
22044      }
22045      if (element.hasPerformer()) { 
22046        for (Reference e : element.getPerformer()) 
22047          composeReference("performer", e);
22048      }
22049      if (element.hasProduct()) {
22050        composeType("product", element.getProduct());
22051      }      if (element.hasDailyAmount()) {
22052        composeSimpleQuantity("dailyAmount", element.getDailyAmount());
22053      }
22054      if (element.hasQuantity()) {
22055        composeSimpleQuantity("quantity", element.getQuantity());
22056      }
22057      if (element.hasDescriptionElement()) {
22058        composeString("description", element.getDescriptionElement());
22059      }
22060  }
22061
22062  protected void composeCareTeam(String name, CareTeam element) throws IOException {
22063    if (element != null) {
22064      composeDomainResourceAttributes(element);
22065      xml.enter(FHIR_NS, name);
22066      composeCareTeamElements(element);
22067      composeElementClose(element);
22068      xml.exit(FHIR_NS, name);
22069    }
22070  }
22071
22072  protected void composeCareTeamElements(CareTeam element) throws IOException {
22073      composeDomainResourceElements(element);
22074      if (element.hasIdentifier()) { 
22075        for (Identifier e : element.getIdentifier()) 
22076          composeIdentifier("identifier", e);
22077      }
22078      if (element.hasStatusElement())
22079        composeEnumeration("status", element.getStatusElement(), new CareTeam.CareTeamStatusEnumFactory());
22080      if (element.hasCategory()) { 
22081        for (CodeableConcept e : element.getCategory()) 
22082          composeCodeableConcept("category", e);
22083      }
22084      if (element.hasNameElement()) {
22085        composeString("name", element.getNameElement());
22086      }
22087      if (element.hasSubject()) {
22088        composeReference("subject", element.getSubject());
22089      }
22090      if (element.hasContext()) {
22091        composeReference("context", element.getContext());
22092      }
22093      if (element.hasPeriod()) {
22094        composePeriod("period", element.getPeriod());
22095      }
22096      if (element.hasParticipant()) { 
22097        for (CareTeam.CareTeamParticipantComponent e : element.getParticipant()) 
22098          composeCareTeamCareTeamParticipantComponent("participant", e);
22099      }
22100      if (element.hasReasonCode()) { 
22101        for (CodeableConcept e : element.getReasonCode()) 
22102          composeCodeableConcept("reasonCode", e);
22103      }
22104      if (element.hasReasonReference()) { 
22105        for (Reference e : element.getReasonReference()) 
22106          composeReference("reasonReference", e);
22107      }
22108      if (element.hasManagingOrganization()) { 
22109        for (Reference e : element.getManagingOrganization()) 
22110          composeReference("managingOrganization", e);
22111      }
22112      if (element.hasNote()) { 
22113        for (Annotation e : element.getNote()) 
22114          composeAnnotation("note", e);
22115      }
22116  }
22117
22118  protected void composeCareTeamCareTeamParticipantComponent(String name, CareTeam.CareTeamParticipantComponent element) throws IOException {
22119    if (element != null) {
22120      composeElementAttributes(element);
22121      xml.enter(FHIR_NS, name);
22122      composeCareTeamCareTeamParticipantComponentElements(element);
22123      composeElementClose(element);
22124      xml.exit(FHIR_NS, name);
22125    }
22126  }
22127
22128  protected void composeCareTeamCareTeamParticipantComponentElements(CareTeam.CareTeamParticipantComponent element) throws IOException {
22129      composeBackboneElements(element);
22130      if (element.hasRole()) {
22131        composeCodeableConcept("role", element.getRole());
22132      }
22133      if (element.hasMember()) {
22134        composeReference("member", element.getMember());
22135      }
22136      if (element.hasOnBehalfOf()) {
22137        composeReference("onBehalfOf", element.getOnBehalfOf());
22138      }
22139      if (element.hasPeriod()) {
22140        composePeriod("period", element.getPeriod());
22141      }
22142  }
22143
22144  protected void composeChargeItem(String name, ChargeItem element) throws IOException {
22145    if (element != null) {
22146      composeDomainResourceAttributes(element);
22147      xml.enter(FHIR_NS, name);
22148      composeChargeItemElements(element);
22149      composeElementClose(element);
22150      xml.exit(FHIR_NS, name);
22151    }
22152  }
22153
22154  protected void composeChargeItemElements(ChargeItem element) throws IOException {
22155      composeDomainResourceElements(element);
22156      if (element.hasIdentifier()) {
22157        composeIdentifier("identifier", element.getIdentifier());
22158      }
22159      if (element.hasDefinition()) { 
22160        for (UriType e : element.getDefinition()) 
22161          composeUri("definition", e);
22162      }
22163      if (element.hasStatusElement())
22164        composeEnumeration("status", element.getStatusElement(), new ChargeItem.ChargeItemStatusEnumFactory());
22165      if (element.hasPartOf()) { 
22166        for (Reference e : element.getPartOf()) 
22167          composeReference("partOf", e);
22168      }
22169      if (element.hasCode()) {
22170        composeCodeableConcept("code", element.getCode());
22171      }
22172      if (element.hasSubject()) {
22173        composeReference("subject", element.getSubject());
22174      }
22175      if (element.hasContext()) {
22176        composeReference("context", element.getContext());
22177      }
22178      if (element.hasOccurrence()) {
22179        composeType("occurrence", element.getOccurrence());
22180      }      if (element.hasParticipant()) { 
22181        for (ChargeItem.ChargeItemParticipantComponent e : element.getParticipant()) 
22182          composeChargeItemChargeItemParticipantComponent("participant", e);
22183      }
22184      if (element.hasPerformingOrganization()) {
22185        composeReference("performingOrganization", element.getPerformingOrganization());
22186      }
22187      if (element.hasRequestingOrganization()) {
22188        composeReference("requestingOrganization", element.getRequestingOrganization());
22189      }
22190      if (element.hasQuantity()) {
22191        composeQuantity("quantity", element.getQuantity());
22192      }
22193      if (element.hasBodysite()) { 
22194        for (CodeableConcept e : element.getBodysite()) 
22195          composeCodeableConcept("bodysite", e);
22196      }
22197      if (element.hasFactorOverrideElement()) {
22198        composeDecimal("factorOverride", element.getFactorOverrideElement());
22199      }
22200      if (element.hasPriceOverride()) {
22201        composeMoney("priceOverride", element.getPriceOverride());
22202      }
22203      if (element.hasOverrideReasonElement()) {
22204        composeString("overrideReason", element.getOverrideReasonElement());
22205      }
22206      if (element.hasEnterer()) {
22207        composeReference("enterer", element.getEnterer());
22208      }
22209      if (element.hasEnteredDateElement()) {
22210        composeDateTime("enteredDate", element.getEnteredDateElement());
22211      }
22212      if (element.hasReason()) { 
22213        for (CodeableConcept e : element.getReason()) 
22214          composeCodeableConcept("reason", e);
22215      }
22216      if (element.hasService()) { 
22217        for (Reference e : element.getService()) 
22218          composeReference("service", e);
22219      }
22220      if (element.hasAccount()) { 
22221        for (Reference e : element.getAccount()) 
22222          composeReference("account", e);
22223      }
22224      if (element.hasNote()) { 
22225        for (Annotation e : element.getNote()) 
22226          composeAnnotation("note", e);
22227      }
22228      if (element.hasSupportingInformation()) { 
22229        for (Reference e : element.getSupportingInformation()) 
22230          composeReference("supportingInformation", e);
22231      }
22232  }
22233
22234  protected void composeChargeItemChargeItemParticipantComponent(String name, ChargeItem.ChargeItemParticipantComponent element) throws IOException {
22235    if (element != null) {
22236      composeElementAttributes(element);
22237      xml.enter(FHIR_NS, name);
22238      composeChargeItemChargeItemParticipantComponentElements(element);
22239      composeElementClose(element);
22240      xml.exit(FHIR_NS, name);
22241    }
22242  }
22243
22244  protected void composeChargeItemChargeItemParticipantComponentElements(ChargeItem.ChargeItemParticipantComponent element) throws IOException {
22245      composeBackboneElements(element);
22246      if (element.hasRole()) {
22247        composeCodeableConcept("role", element.getRole());
22248      }
22249      if (element.hasActor()) {
22250        composeReference("actor", element.getActor());
22251      }
22252  }
22253
22254  protected void composeClaim(String name, Claim element) throws IOException {
22255    if (element != null) {
22256      composeDomainResourceAttributes(element);
22257      xml.enter(FHIR_NS, name);
22258      composeClaimElements(element);
22259      composeElementClose(element);
22260      xml.exit(FHIR_NS, name);
22261    }
22262  }
22263
22264  protected void composeClaimElements(Claim element) throws IOException {
22265      composeDomainResourceElements(element);
22266      if (element.hasIdentifier()) { 
22267        for (Identifier e : element.getIdentifier()) 
22268          composeIdentifier("identifier", e);
22269      }
22270      if (element.hasStatusElement())
22271        composeEnumeration("status", element.getStatusElement(), new Claim.ClaimStatusEnumFactory());
22272      if (element.hasType()) {
22273        composeCodeableConcept("type", element.getType());
22274      }
22275      if (element.hasSubType()) { 
22276        for (CodeableConcept e : element.getSubType()) 
22277          composeCodeableConcept("subType", e);
22278      }
22279      if (element.hasUseElement())
22280        composeEnumeration("use", element.getUseElement(), new Claim.UseEnumFactory());
22281      if (element.hasPatient()) {
22282        composeReference("patient", element.getPatient());
22283      }
22284      if (element.hasBillablePeriod()) {
22285        composePeriod("billablePeriod", element.getBillablePeriod());
22286      }
22287      if (element.hasCreatedElement()) {
22288        composeDateTime("created", element.getCreatedElement());
22289      }
22290      if (element.hasEnterer()) {
22291        composeReference("enterer", element.getEnterer());
22292      }
22293      if (element.hasInsurer()) {
22294        composeReference("insurer", element.getInsurer());
22295      }
22296      if (element.hasProvider()) {
22297        composeReference("provider", element.getProvider());
22298      }
22299      if (element.hasOrganization()) {
22300        composeReference("organization", element.getOrganization());
22301      }
22302      if (element.hasPriority()) {
22303        composeCodeableConcept("priority", element.getPriority());
22304      }
22305      if (element.hasFundsReserve()) {
22306        composeCodeableConcept("fundsReserve", element.getFundsReserve());
22307      }
22308      if (element.hasRelated()) { 
22309        for (Claim.RelatedClaimComponent e : element.getRelated()) 
22310          composeClaimRelatedClaimComponent("related", e);
22311      }
22312      if (element.hasPrescription()) {
22313        composeReference("prescription", element.getPrescription());
22314      }
22315      if (element.hasOriginalPrescription()) {
22316        composeReference("originalPrescription", element.getOriginalPrescription());
22317      }
22318      if (element.hasPayee()) {
22319        composeClaimPayeeComponent("payee", element.getPayee());
22320      }
22321      if (element.hasReferral()) {
22322        composeReference("referral", element.getReferral());
22323      }
22324      if (element.hasFacility()) {
22325        composeReference("facility", element.getFacility());
22326      }
22327      if (element.hasCareTeam()) { 
22328        for (Claim.CareTeamComponent e : element.getCareTeam()) 
22329          composeClaimCareTeamComponent("careTeam", e);
22330      }
22331      if (element.hasInformation()) { 
22332        for (Claim.SpecialConditionComponent e : element.getInformation()) 
22333          composeClaimSpecialConditionComponent("information", e);
22334      }
22335      if (element.hasDiagnosis()) { 
22336        for (Claim.DiagnosisComponent e : element.getDiagnosis()) 
22337          composeClaimDiagnosisComponent("diagnosis", e);
22338      }
22339      if (element.hasProcedure()) { 
22340        for (Claim.ProcedureComponent e : element.getProcedure()) 
22341          composeClaimProcedureComponent("procedure", e);
22342      }
22343      if (element.hasInsurance()) { 
22344        for (Claim.InsuranceComponent e : element.getInsurance()) 
22345          composeClaimInsuranceComponent("insurance", e);
22346      }
22347      if (element.hasAccident()) {
22348        composeClaimAccidentComponent("accident", element.getAccident());
22349      }
22350      if (element.hasEmploymentImpacted()) {
22351        composePeriod("employmentImpacted", element.getEmploymentImpacted());
22352      }
22353      if (element.hasHospitalization()) {
22354        composePeriod("hospitalization", element.getHospitalization());
22355      }
22356      if (element.hasItem()) { 
22357        for (Claim.ItemComponent e : element.getItem()) 
22358          composeClaimItemComponent("item", e);
22359      }
22360      if (element.hasTotal()) {
22361        composeMoney("total", element.getTotal());
22362      }
22363  }
22364
22365  protected void composeClaimRelatedClaimComponent(String name, Claim.RelatedClaimComponent element) throws IOException {
22366    if (element != null) {
22367      composeElementAttributes(element);
22368      xml.enter(FHIR_NS, name);
22369      composeClaimRelatedClaimComponentElements(element);
22370      composeElementClose(element);
22371      xml.exit(FHIR_NS, name);
22372    }
22373  }
22374
22375  protected void composeClaimRelatedClaimComponentElements(Claim.RelatedClaimComponent element) throws IOException {
22376      composeBackboneElements(element);
22377      if (element.hasClaim()) {
22378        composeReference("claim", element.getClaim());
22379      }
22380      if (element.hasRelationship()) {
22381        composeCodeableConcept("relationship", element.getRelationship());
22382      }
22383      if (element.hasReference()) {
22384        composeIdentifier("reference", element.getReference());
22385      }
22386  }
22387
22388  protected void composeClaimPayeeComponent(String name, Claim.PayeeComponent element) throws IOException {
22389    if (element != null) {
22390      composeElementAttributes(element);
22391      xml.enter(FHIR_NS, name);
22392      composeClaimPayeeComponentElements(element);
22393      composeElementClose(element);
22394      xml.exit(FHIR_NS, name);
22395    }
22396  }
22397
22398  protected void composeClaimPayeeComponentElements(Claim.PayeeComponent element) throws IOException {
22399      composeBackboneElements(element);
22400      if (element.hasType()) {
22401        composeCodeableConcept("type", element.getType());
22402      }
22403      if (element.hasResourceType()) {
22404        composeCoding("resourceType", element.getResourceType());
22405      }
22406      if (element.hasParty()) {
22407        composeReference("party", element.getParty());
22408      }
22409  }
22410
22411  protected void composeClaimCareTeamComponent(String name, Claim.CareTeamComponent element) throws IOException {
22412    if (element != null) {
22413      composeElementAttributes(element);
22414      xml.enter(FHIR_NS, name);
22415      composeClaimCareTeamComponentElements(element);
22416      composeElementClose(element);
22417      xml.exit(FHIR_NS, name);
22418    }
22419  }
22420
22421  protected void composeClaimCareTeamComponentElements(Claim.CareTeamComponent element) throws IOException {
22422      composeBackboneElements(element);
22423      if (element.hasSequenceElement()) {
22424        composePositiveInt("sequence", element.getSequenceElement());
22425      }
22426      if (element.hasProvider()) {
22427        composeReference("provider", element.getProvider());
22428      }
22429      if (element.hasResponsibleElement()) {
22430        composeBoolean("responsible", element.getResponsibleElement());
22431      }
22432      if (element.hasRole()) {
22433        composeCodeableConcept("role", element.getRole());
22434      }
22435      if (element.hasQualification()) {
22436        composeCodeableConcept("qualification", element.getQualification());
22437      }
22438  }
22439
22440  protected void composeClaimSpecialConditionComponent(String name, Claim.SpecialConditionComponent element) throws IOException {
22441    if (element != null) {
22442      composeElementAttributes(element);
22443      xml.enter(FHIR_NS, name);
22444      composeClaimSpecialConditionComponentElements(element);
22445      composeElementClose(element);
22446      xml.exit(FHIR_NS, name);
22447    }
22448  }
22449
22450  protected void composeClaimSpecialConditionComponentElements(Claim.SpecialConditionComponent element) throws IOException {
22451      composeBackboneElements(element);
22452      if (element.hasSequenceElement()) {
22453        composePositiveInt("sequence", element.getSequenceElement());
22454      }
22455      if (element.hasCategory()) {
22456        composeCodeableConcept("category", element.getCategory());
22457      }
22458      if (element.hasCode()) {
22459        composeCodeableConcept("code", element.getCode());
22460      }
22461      if (element.hasTiming()) {
22462        composeType("timing", element.getTiming());
22463      }      if (element.hasValue()) {
22464        composeType("value", element.getValue());
22465      }      if (element.hasReason()) {
22466        composeCodeableConcept("reason", element.getReason());
22467      }
22468  }
22469
22470  protected void composeClaimDiagnosisComponent(String name, Claim.DiagnosisComponent element) throws IOException {
22471    if (element != null) {
22472      composeElementAttributes(element);
22473      xml.enter(FHIR_NS, name);
22474      composeClaimDiagnosisComponentElements(element);
22475      composeElementClose(element);
22476      xml.exit(FHIR_NS, name);
22477    }
22478  }
22479
22480  protected void composeClaimDiagnosisComponentElements(Claim.DiagnosisComponent element) throws IOException {
22481      composeBackboneElements(element);
22482      if (element.hasSequenceElement()) {
22483        composePositiveInt("sequence", element.getSequenceElement());
22484      }
22485      if (element.hasDiagnosis()) {
22486        composeType("diagnosis", element.getDiagnosis());
22487      }      if (element.hasType()) { 
22488        for (CodeableConcept e : element.getType()) 
22489          composeCodeableConcept("type", e);
22490      }
22491      if (element.hasPackageCode()) {
22492        composeCodeableConcept("packageCode", element.getPackageCode());
22493      }
22494  }
22495
22496  protected void composeClaimProcedureComponent(String name, Claim.ProcedureComponent element) throws IOException {
22497    if (element != null) {
22498      composeElementAttributes(element);
22499      xml.enter(FHIR_NS, name);
22500      composeClaimProcedureComponentElements(element);
22501      composeElementClose(element);
22502      xml.exit(FHIR_NS, name);
22503    }
22504  }
22505
22506  protected void composeClaimProcedureComponentElements(Claim.ProcedureComponent element) throws IOException {
22507      composeBackboneElements(element);
22508      if (element.hasSequenceElement()) {
22509        composePositiveInt("sequence", element.getSequenceElement());
22510      }
22511      if (element.hasDateElement()) {
22512        composeDateTime("date", element.getDateElement());
22513      }
22514      if (element.hasProcedure()) {
22515        composeType("procedure", element.getProcedure());
22516      }  }
22517
22518  protected void composeClaimInsuranceComponent(String name, Claim.InsuranceComponent element) throws IOException {
22519    if (element != null) {
22520      composeElementAttributes(element);
22521      xml.enter(FHIR_NS, name);
22522      composeClaimInsuranceComponentElements(element);
22523      composeElementClose(element);
22524      xml.exit(FHIR_NS, name);
22525    }
22526  }
22527
22528  protected void composeClaimInsuranceComponentElements(Claim.InsuranceComponent element) throws IOException {
22529      composeBackboneElements(element);
22530      if (element.hasSequenceElement()) {
22531        composePositiveInt("sequence", element.getSequenceElement());
22532      }
22533      if (element.hasFocalElement()) {
22534        composeBoolean("focal", element.getFocalElement());
22535      }
22536      if (element.hasCoverage()) {
22537        composeReference("coverage", element.getCoverage());
22538      }
22539      if (element.hasBusinessArrangementElement()) {
22540        composeString("businessArrangement", element.getBusinessArrangementElement());
22541      }
22542      if (element.hasPreAuthRef()) { 
22543        for (StringType e : element.getPreAuthRef()) 
22544          composeString("preAuthRef", e);
22545      }
22546      if (element.hasClaimResponse()) {
22547        composeReference("claimResponse", element.getClaimResponse());
22548      }
22549  }
22550
22551  protected void composeClaimAccidentComponent(String name, Claim.AccidentComponent element) throws IOException {
22552    if (element != null) {
22553      composeElementAttributes(element);
22554      xml.enter(FHIR_NS, name);
22555      composeClaimAccidentComponentElements(element);
22556      composeElementClose(element);
22557      xml.exit(FHIR_NS, name);
22558    }
22559  }
22560
22561  protected void composeClaimAccidentComponentElements(Claim.AccidentComponent element) throws IOException {
22562      composeBackboneElements(element);
22563      if (element.hasDateElement()) {
22564        composeDate("date", element.getDateElement());
22565      }
22566      if (element.hasType()) {
22567        composeCodeableConcept("type", element.getType());
22568      }
22569      if (element.hasLocation()) {
22570        composeType("location", element.getLocation());
22571      }  }
22572
22573  protected void composeClaimItemComponent(String name, Claim.ItemComponent element) throws IOException {
22574    if (element != null) {
22575      composeElementAttributes(element);
22576      xml.enter(FHIR_NS, name);
22577      composeClaimItemComponentElements(element);
22578      composeElementClose(element);
22579      xml.exit(FHIR_NS, name);
22580    }
22581  }
22582
22583  protected void composeClaimItemComponentElements(Claim.ItemComponent element) throws IOException {
22584      composeBackboneElements(element);
22585      if (element.hasSequenceElement()) {
22586        composePositiveInt("sequence", element.getSequenceElement());
22587      }
22588      if (element.hasCareTeamLinkId()) { 
22589        for (PositiveIntType e : element.getCareTeamLinkId()) 
22590          composePositiveInt("careTeamLinkId", e);
22591      }
22592      if (element.hasDiagnosisLinkId()) { 
22593        for (PositiveIntType e : element.getDiagnosisLinkId()) 
22594          composePositiveInt("diagnosisLinkId", e);
22595      }
22596      if (element.hasProcedureLinkId()) { 
22597        for (PositiveIntType e : element.getProcedureLinkId()) 
22598          composePositiveInt("procedureLinkId", e);
22599      }
22600      if (element.hasInformationLinkId()) { 
22601        for (PositiveIntType e : element.getInformationLinkId()) 
22602          composePositiveInt("informationLinkId", e);
22603      }
22604      if (element.hasRevenue()) {
22605        composeCodeableConcept("revenue", element.getRevenue());
22606      }
22607      if (element.hasCategory()) {
22608        composeCodeableConcept("category", element.getCategory());
22609      }
22610      if (element.hasService()) {
22611        composeCodeableConcept("service", element.getService());
22612      }
22613      if (element.hasModifier()) { 
22614        for (CodeableConcept e : element.getModifier()) 
22615          composeCodeableConcept("modifier", e);
22616      }
22617      if (element.hasProgramCode()) { 
22618        for (CodeableConcept e : element.getProgramCode()) 
22619          composeCodeableConcept("programCode", e);
22620      }
22621      if (element.hasServiced()) {
22622        composeType("serviced", element.getServiced());
22623      }      if (element.hasLocation()) {
22624        composeType("location", element.getLocation());
22625      }      if (element.hasQuantity()) {
22626        composeSimpleQuantity("quantity", element.getQuantity());
22627      }
22628      if (element.hasUnitPrice()) {
22629        composeMoney("unitPrice", element.getUnitPrice());
22630      }
22631      if (element.hasFactorElement()) {
22632        composeDecimal("factor", element.getFactorElement());
22633      }
22634      if (element.hasNet()) {
22635        composeMoney("net", element.getNet());
22636      }
22637      if (element.hasUdi()) { 
22638        for (Reference e : element.getUdi()) 
22639          composeReference("udi", e);
22640      }
22641      if (element.hasBodySite()) {
22642        composeCodeableConcept("bodySite", element.getBodySite());
22643      }
22644      if (element.hasSubSite()) { 
22645        for (CodeableConcept e : element.getSubSite()) 
22646          composeCodeableConcept("subSite", e);
22647      }
22648      if (element.hasEncounter()) { 
22649        for (Reference e : element.getEncounter()) 
22650          composeReference("encounter", e);
22651      }
22652      if (element.hasDetail()) { 
22653        for (Claim.DetailComponent e : element.getDetail()) 
22654          composeClaimDetailComponent("detail", e);
22655      }
22656  }
22657
22658  protected void composeClaimDetailComponent(String name, Claim.DetailComponent element) throws IOException {
22659    if (element != null) {
22660      composeElementAttributes(element);
22661      xml.enter(FHIR_NS, name);
22662      composeClaimDetailComponentElements(element);
22663      composeElementClose(element);
22664      xml.exit(FHIR_NS, name);
22665    }
22666  }
22667
22668  protected void composeClaimDetailComponentElements(Claim.DetailComponent element) throws IOException {
22669      composeBackboneElements(element);
22670      if (element.hasSequenceElement()) {
22671        composePositiveInt("sequence", element.getSequenceElement());
22672      }
22673      if (element.hasRevenue()) {
22674        composeCodeableConcept("revenue", element.getRevenue());
22675      }
22676      if (element.hasCategory()) {
22677        composeCodeableConcept("category", element.getCategory());
22678      }
22679      if (element.hasService()) {
22680        composeCodeableConcept("service", element.getService());
22681      }
22682      if (element.hasModifier()) { 
22683        for (CodeableConcept e : element.getModifier()) 
22684          composeCodeableConcept("modifier", e);
22685      }
22686      if (element.hasProgramCode()) { 
22687        for (CodeableConcept e : element.getProgramCode()) 
22688          composeCodeableConcept("programCode", e);
22689      }
22690      if (element.hasQuantity()) {
22691        composeSimpleQuantity("quantity", element.getQuantity());
22692      }
22693      if (element.hasUnitPrice()) {
22694        composeMoney("unitPrice", element.getUnitPrice());
22695      }
22696      if (element.hasFactorElement()) {
22697        composeDecimal("factor", element.getFactorElement());
22698      }
22699      if (element.hasNet()) {
22700        composeMoney("net", element.getNet());
22701      }
22702      if (element.hasUdi()) { 
22703        for (Reference e : element.getUdi()) 
22704          composeReference("udi", e);
22705      }
22706      if (element.hasSubDetail()) { 
22707        for (Claim.SubDetailComponent e : element.getSubDetail()) 
22708          composeClaimSubDetailComponent("subDetail", e);
22709      }
22710  }
22711
22712  protected void composeClaimSubDetailComponent(String name, Claim.SubDetailComponent element) throws IOException {
22713    if (element != null) {
22714      composeElementAttributes(element);
22715      xml.enter(FHIR_NS, name);
22716      composeClaimSubDetailComponentElements(element);
22717      composeElementClose(element);
22718      xml.exit(FHIR_NS, name);
22719    }
22720  }
22721
22722  protected void composeClaimSubDetailComponentElements(Claim.SubDetailComponent element) throws IOException {
22723      composeBackboneElements(element);
22724      if (element.hasSequenceElement()) {
22725        composePositiveInt("sequence", element.getSequenceElement());
22726      }
22727      if (element.hasRevenue()) {
22728        composeCodeableConcept("revenue", element.getRevenue());
22729      }
22730      if (element.hasCategory()) {
22731        composeCodeableConcept("category", element.getCategory());
22732      }
22733      if (element.hasService()) {
22734        composeCodeableConcept("service", element.getService());
22735      }
22736      if (element.hasModifier()) { 
22737        for (CodeableConcept e : element.getModifier()) 
22738          composeCodeableConcept("modifier", e);
22739      }
22740      if (element.hasProgramCode()) { 
22741        for (CodeableConcept e : element.getProgramCode()) 
22742          composeCodeableConcept("programCode", e);
22743      }
22744      if (element.hasQuantity()) {
22745        composeSimpleQuantity("quantity", element.getQuantity());
22746      }
22747      if (element.hasUnitPrice()) {
22748        composeMoney("unitPrice", element.getUnitPrice());
22749      }
22750      if (element.hasFactorElement()) {
22751        composeDecimal("factor", element.getFactorElement());
22752      }
22753      if (element.hasNet()) {
22754        composeMoney("net", element.getNet());
22755      }
22756      if (element.hasUdi()) { 
22757        for (Reference e : element.getUdi()) 
22758          composeReference("udi", e);
22759      }
22760  }
22761
22762  protected void composeClaimResponse(String name, ClaimResponse element) throws IOException {
22763    if (element != null) {
22764      composeDomainResourceAttributes(element);
22765      xml.enter(FHIR_NS, name);
22766      composeClaimResponseElements(element);
22767      composeElementClose(element);
22768      xml.exit(FHIR_NS, name);
22769    }
22770  }
22771
22772  protected void composeClaimResponseElements(ClaimResponse element) throws IOException {
22773      composeDomainResourceElements(element);
22774      if (element.hasIdentifier()) { 
22775        for (Identifier e : element.getIdentifier()) 
22776          composeIdentifier("identifier", e);
22777      }
22778      if (element.hasStatusElement())
22779        composeEnumeration("status", element.getStatusElement(), new ClaimResponse.ClaimResponseStatusEnumFactory());
22780      if (element.hasPatient()) {
22781        composeReference("patient", element.getPatient());
22782      }
22783      if (element.hasCreatedElement()) {
22784        composeDateTime("created", element.getCreatedElement());
22785      }
22786      if (element.hasInsurer()) {
22787        composeReference("insurer", element.getInsurer());
22788      }
22789      if (element.hasRequestProvider()) {
22790        composeReference("requestProvider", element.getRequestProvider());
22791      }
22792      if (element.hasRequestOrganization()) {
22793        composeReference("requestOrganization", element.getRequestOrganization());
22794      }
22795      if (element.hasRequest()) {
22796        composeReference("request", element.getRequest());
22797      }
22798      if (element.hasOutcome()) {
22799        composeCodeableConcept("outcome", element.getOutcome());
22800      }
22801      if (element.hasDispositionElement()) {
22802        composeString("disposition", element.getDispositionElement());
22803      }
22804      if (element.hasPayeeType()) {
22805        composeCodeableConcept("payeeType", element.getPayeeType());
22806      }
22807      if (element.hasItem()) { 
22808        for (ClaimResponse.ItemComponent e : element.getItem()) 
22809          composeClaimResponseItemComponent("item", e);
22810      }
22811      if (element.hasAddItem()) { 
22812        for (ClaimResponse.AddedItemComponent e : element.getAddItem()) 
22813          composeClaimResponseAddedItemComponent("addItem", e);
22814      }
22815      if (element.hasError()) { 
22816        for (ClaimResponse.ErrorComponent e : element.getError()) 
22817          composeClaimResponseErrorComponent("error", e);
22818      }
22819      if (element.hasTotalCost()) {
22820        composeMoney("totalCost", element.getTotalCost());
22821      }
22822      if (element.hasUnallocDeductable()) {
22823        composeMoney("unallocDeductable", element.getUnallocDeductable());
22824      }
22825      if (element.hasTotalBenefit()) {
22826        composeMoney("totalBenefit", element.getTotalBenefit());
22827      }
22828      if (element.hasPayment()) {
22829        composeClaimResponsePaymentComponent("payment", element.getPayment());
22830      }
22831      if (element.hasReserved()) {
22832        composeCoding("reserved", element.getReserved());
22833      }
22834      if (element.hasForm()) {
22835        composeCodeableConcept("form", element.getForm());
22836      }
22837      if (element.hasProcessNote()) { 
22838        for (ClaimResponse.NoteComponent e : element.getProcessNote()) 
22839          composeClaimResponseNoteComponent("processNote", e);
22840      }
22841      if (element.hasCommunicationRequest()) { 
22842        for (Reference e : element.getCommunicationRequest()) 
22843          composeReference("communicationRequest", e);
22844      }
22845      if (element.hasInsurance()) { 
22846        for (ClaimResponse.InsuranceComponent e : element.getInsurance()) 
22847          composeClaimResponseInsuranceComponent("insurance", e);
22848      }
22849  }
22850
22851  protected void composeClaimResponseItemComponent(String name, ClaimResponse.ItemComponent element) throws IOException {
22852    if (element != null) {
22853      composeElementAttributes(element);
22854      xml.enter(FHIR_NS, name);
22855      composeClaimResponseItemComponentElements(element);
22856      composeElementClose(element);
22857      xml.exit(FHIR_NS, name);
22858    }
22859  }
22860
22861  protected void composeClaimResponseItemComponentElements(ClaimResponse.ItemComponent element) throws IOException {
22862      composeBackboneElements(element);
22863      if (element.hasSequenceLinkIdElement()) {
22864        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
22865      }
22866      if (element.hasNoteNumber()) { 
22867        for (PositiveIntType e : element.getNoteNumber()) 
22868          composePositiveInt("noteNumber", e);
22869      }
22870      if (element.hasAdjudication()) { 
22871        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
22872          composeClaimResponseAdjudicationComponent("adjudication", e);
22873      }
22874      if (element.hasDetail()) { 
22875        for (ClaimResponse.ItemDetailComponent e : element.getDetail()) 
22876          composeClaimResponseItemDetailComponent("detail", e);
22877      }
22878  }
22879
22880  protected void composeClaimResponseAdjudicationComponent(String name, ClaimResponse.AdjudicationComponent element) throws IOException {
22881    if (element != null) {
22882      composeElementAttributes(element);
22883      xml.enter(FHIR_NS, name);
22884      composeClaimResponseAdjudicationComponentElements(element);
22885      composeElementClose(element);
22886      xml.exit(FHIR_NS, name);
22887    }
22888  }
22889
22890  protected void composeClaimResponseAdjudicationComponentElements(ClaimResponse.AdjudicationComponent element) throws IOException {
22891      composeBackboneElements(element);
22892      if (element.hasCategory()) {
22893        composeCodeableConcept("category", element.getCategory());
22894      }
22895      if (element.hasReason()) {
22896        composeCodeableConcept("reason", element.getReason());
22897      }
22898      if (element.hasAmount()) {
22899        composeMoney("amount", element.getAmount());
22900      }
22901      if (element.hasValueElement()) {
22902        composeDecimal("value", element.getValueElement());
22903      }
22904  }
22905
22906  protected void composeClaimResponseItemDetailComponent(String name, ClaimResponse.ItemDetailComponent element) throws IOException {
22907    if (element != null) {
22908      composeElementAttributes(element);
22909      xml.enter(FHIR_NS, name);
22910      composeClaimResponseItemDetailComponentElements(element);
22911      composeElementClose(element);
22912      xml.exit(FHIR_NS, name);
22913    }
22914  }
22915
22916  protected void composeClaimResponseItemDetailComponentElements(ClaimResponse.ItemDetailComponent element) throws IOException {
22917      composeBackboneElements(element);
22918      if (element.hasSequenceLinkIdElement()) {
22919        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
22920      }
22921      if (element.hasNoteNumber()) { 
22922        for (PositiveIntType e : element.getNoteNumber()) 
22923          composePositiveInt("noteNumber", e);
22924      }
22925      if (element.hasAdjudication()) { 
22926        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
22927          composeClaimResponseAdjudicationComponent("adjudication", e);
22928      }
22929      if (element.hasSubDetail()) { 
22930        for (ClaimResponse.SubDetailComponent e : element.getSubDetail()) 
22931          composeClaimResponseSubDetailComponent("subDetail", e);
22932      }
22933  }
22934
22935  protected void composeClaimResponseSubDetailComponent(String name, ClaimResponse.SubDetailComponent element) throws IOException {
22936    if (element != null) {
22937      composeElementAttributes(element);
22938      xml.enter(FHIR_NS, name);
22939      composeClaimResponseSubDetailComponentElements(element);
22940      composeElementClose(element);
22941      xml.exit(FHIR_NS, name);
22942    }
22943  }
22944
22945  protected void composeClaimResponseSubDetailComponentElements(ClaimResponse.SubDetailComponent element) throws IOException {
22946      composeBackboneElements(element);
22947      if (element.hasSequenceLinkIdElement()) {
22948        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
22949      }
22950      if (element.hasNoteNumber()) { 
22951        for (PositiveIntType e : element.getNoteNumber()) 
22952          composePositiveInt("noteNumber", e);
22953      }
22954      if (element.hasAdjudication()) { 
22955        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
22956          composeClaimResponseAdjudicationComponent("adjudication", e);
22957      }
22958  }
22959
22960  protected void composeClaimResponseAddedItemComponent(String name, ClaimResponse.AddedItemComponent element) throws IOException {
22961    if (element != null) {
22962      composeElementAttributes(element);
22963      xml.enter(FHIR_NS, name);
22964      composeClaimResponseAddedItemComponentElements(element);
22965      composeElementClose(element);
22966      xml.exit(FHIR_NS, name);
22967    }
22968  }
22969
22970  protected void composeClaimResponseAddedItemComponentElements(ClaimResponse.AddedItemComponent element) throws IOException {
22971      composeBackboneElements(element);
22972      if (element.hasSequenceLinkId()) { 
22973        for (PositiveIntType e : element.getSequenceLinkId()) 
22974          composePositiveInt("sequenceLinkId", e);
22975      }
22976      if (element.hasRevenue()) {
22977        composeCodeableConcept("revenue", element.getRevenue());
22978      }
22979      if (element.hasCategory()) {
22980        composeCodeableConcept("category", element.getCategory());
22981      }
22982      if (element.hasService()) {
22983        composeCodeableConcept("service", element.getService());
22984      }
22985      if (element.hasModifier()) { 
22986        for (CodeableConcept e : element.getModifier()) 
22987          composeCodeableConcept("modifier", e);
22988      }
22989      if (element.hasFee()) {
22990        composeMoney("fee", element.getFee());
22991      }
22992      if (element.hasNoteNumber()) { 
22993        for (PositiveIntType e : element.getNoteNumber()) 
22994          composePositiveInt("noteNumber", e);
22995      }
22996      if (element.hasAdjudication()) { 
22997        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
22998          composeClaimResponseAdjudicationComponent("adjudication", e);
22999      }
23000      if (element.hasDetail()) { 
23001        for (ClaimResponse.AddedItemsDetailComponent e : element.getDetail()) 
23002          composeClaimResponseAddedItemsDetailComponent("detail", e);
23003      }
23004  }
23005
23006  protected void composeClaimResponseAddedItemsDetailComponent(String name, ClaimResponse.AddedItemsDetailComponent element) throws IOException {
23007    if (element != null) {
23008      composeElementAttributes(element);
23009      xml.enter(FHIR_NS, name);
23010      composeClaimResponseAddedItemsDetailComponentElements(element);
23011      composeElementClose(element);
23012      xml.exit(FHIR_NS, name);
23013    }
23014  }
23015
23016  protected void composeClaimResponseAddedItemsDetailComponentElements(ClaimResponse.AddedItemsDetailComponent element) throws IOException {
23017      composeBackboneElements(element);
23018      if (element.hasRevenue()) {
23019        composeCodeableConcept("revenue", element.getRevenue());
23020      }
23021      if (element.hasCategory()) {
23022        composeCodeableConcept("category", element.getCategory());
23023      }
23024      if (element.hasService()) {
23025        composeCodeableConcept("service", element.getService());
23026      }
23027      if (element.hasModifier()) { 
23028        for (CodeableConcept e : element.getModifier()) 
23029          composeCodeableConcept("modifier", e);
23030      }
23031      if (element.hasFee()) {
23032        composeMoney("fee", element.getFee());
23033      }
23034      if (element.hasNoteNumber()) { 
23035        for (PositiveIntType e : element.getNoteNumber()) 
23036          composePositiveInt("noteNumber", e);
23037      }
23038      if (element.hasAdjudication()) { 
23039        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
23040          composeClaimResponseAdjudicationComponent("adjudication", e);
23041      }
23042  }
23043
23044  protected void composeClaimResponseErrorComponent(String name, ClaimResponse.ErrorComponent element) throws IOException {
23045    if (element != null) {
23046      composeElementAttributes(element);
23047      xml.enter(FHIR_NS, name);
23048      composeClaimResponseErrorComponentElements(element);
23049      composeElementClose(element);
23050      xml.exit(FHIR_NS, name);
23051    }
23052  }
23053
23054  protected void composeClaimResponseErrorComponentElements(ClaimResponse.ErrorComponent element) throws IOException {
23055      composeBackboneElements(element);
23056      if (element.hasSequenceLinkIdElement()) {
23057        composePositiveInt("sequenceLinkId", element.getSequenceLinkIdElement());
23058      }
23059      if (element.hasDetailSequenceLinkIdElement()) {
23060        composePositiveInt("detailSequenceLinkId", element.getDetailSequenceLinkIdElement());
23061      }
23062      if (element.hasSubdetailSequenceLinkIdElement()) {
23063        composePositiveInt("subdetailSequenceLinkId", element.getSubdetailSequenceLinkIdElement());
23064      }
23065      if (element.hasCode()) {
23066        composeCodeableConcept("code", element.getCode());
23067      }
23068  }
23069
23070  protected void composeClaimResponsePaymentComponent(String name, ClaimResponse.PaymentComponent element) throws IOException {
23071    if (element != null) {
23072      composeElementAttributes(element);
23073      xml.enter(FHIR_NS, name);
23074      composeClaimResponsePaymentComponentElements(element);
23075      composeElementClose(element);
23076      xml.exit(FHIR_NS, name);
23077    }
23078  }
23079
23080  protected void composeClaimResponsePaymentComponentElements(ClaimResponse.PaymentComponent element) throws IOException {
23081      composeBackboneElements(element);
23082      if (element.hasType()) {
23083        composeCodeableConcept("type", element.getType());
23084      }
23085      if (element.hasAdjustment()) {
23086        composeMoney("adjustment", element.getAdjustment());
23087      }
23088      if (element.hasAdjustmentReason()) {
23089        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
23090      }
23091      if (element.hasDateElement()) {
23092        composeDate("date", element.getDateElement());
23093      }
23094      if (element.hasAmount()) {
23095        composeMoney("amount", element.getAmount());
23096      }
23097      if (element.hasIdentifier()) {
23098        composeIdentifier("identifier", element.getIdentifier());
23099      }
23100  }
23101
23102  protected void composeClaimResponseNoteComponent(String name, ClaimResponse.NoteComponent element) throws IOException {
23103    if (element != null) {
23104      composeElementAttributes(element);
23105      xml.enter(FHIR_NS, name);
23106      composeClaimResponseNoteComponentElements(element);
23107      composeElementClose(element);
23108      xml.exit(FHIR_NS, name);
23109    }
23110  }
23111
23112  protected void composeClaimResponseNoteComponentElements(ClaimResponse.NoteComponent element) throws IOException {
23113      composeBackboneElements(element);
23114      if (element.hasNumberElement()) {
23115        composePositiveInt("number", element.getNumberElement());
23116      }
23117      if (element.hasType()) {
23118        composeCodeableConcept("type", element.getType());
23119      }
23120      if (element.hasTextElement()) {
23121        composeString("text", element.getTextElement());
23122      }
23123      if (element.hasLanguage()) {
23124        composeCodeableConcept("language", element.getLanguage());
23125      }
23126  }
23127
23128  protected void composeClaimResponseInsuranceComponent(String name, ClaimResponse.InsuranceComponent element) throws IOException {
23129    if (element != null) {
23130      composeElementAttributes(element);
23131      xml.enter(FHIR_NS, name);
23132      composeClaimResponseInsuranceComponentElements(element);
23133      composeElementClose(element);
23134      xml.exit(FHIR_NS, name);
23135    }
23136  }
23137
23138  protected void composeClaimResponseInsuranceComponentElements(ClaimResponse.InsuranceComponent element) throws IOException {
23139      composeBackboneElements(element);
23140      if (element.hasSequenceElement()) {
23141        composePositiveInt("sequence", element.getSequenceElement());
23142      }
23143      if (element.hasFocalElement()) {
23144        composeBoolean("focal", element.getFocalElement());
23145      }
23146      if (element.hasCoverage()) {
23147        composeReference("coverage", element.getCoverage());
23148      }
23149      if (element.hasBusinessArrangementElement()) {
23150        composeString("businessArrangement", element.getBusinessArrangementElement());
23151      }
23152      if (element.hasPreAuthRef()) { 
23153        for (StringType e : element.getPreAuthRef()) 
23154          composeString("preAuthRef", e);
23155      }
23156      if (element.hasClaimResponse()) {
23157        composeReference("claimResponse", element.getClaimResponse());
23158      }
23159  }
23160
23161  protected void composeClinicalImpression(String name, ClinicalImpression element) throws IOException {
23162    if (element != null) {
23163      composeDomainResourceAttributes(element);
23164      xml.enter(FHIR_NS, name);
23165      composeClinicalImpressionElements(element);
23166      composeElementClose(element);
23167      xml.exit(FHIR_NS, name);
23168    }
23169  }
23170
23171  protected void composeClinicalImpressionElements(ClinicalImpression element) throws IOException {
23172      composeDomainResourceElements(element);
23173      if (element.hasIdentifier()) { 
23174        for (Identifier e : element.getIdentifier()) 
23175          composeIdentifier("identifier", e);
23176      }
23177      if (element.hasStatusElement())
23178        composeEnumeration("status", element.getStatusElement(), new ClinicalImpression.ClinicalImpressionStatusEnumFactory());
23179      if (element.hasCode()) {
23180        composeCodeableConcept("code", element.getCode());
23181      }
23182      if (element.hasDescriptionElement()) {
23183        composeString("description", element.getDescriptionElement());
23184      }
23185      if (element.hasSubject()) {
23186        composeReference("subject", element.getSubject());
23187      }
23188      if (element.hasContext()) {
23189        composeReference("context", element.getContext());
23190      }
23191      if (element.hasEffective()) {
23192        composeType("effective", element.getEffective());
23193      }      if (element.hasDateElement()) {
23194        composeDateTime("date", element.getDateElement());
23195      }
23196      if (element.hasAssessor()) {
23197        composeReference("assessor", element.getAssessor());
23198      }
23199      if (element.hasPrevious()) {
23200        composeReference("previous", element.getPrevious());
23201      }
23202      if (element.hasProblem()) { 
23203        for (Reference e : element.getProblem()) 
23204          composeReference("problem", e);
23205      }
23206      if (element.hasInvestigation()) { 
23207        for (ClinicalImpression.ClinicalImpressionInvestigationComponent e : element.getInvestigation()) 
23208          composeClinicalImpressionClinicalImpressionInvestigationComponent("investigation", e);
23209      }
23210      if (element.hasProtocol()) { 
23211        for (UriType e : element.getProtocol()) 
23212          composeUri("protocol", e);
23213      }
23214      if (element.hasSummaryElement()) {
23215        composeString("summary", element.getSummaryElement());
23216      }
23217      if (element.hasFinding()) { 
23218        for (ClinicalImpression.ClinicalImpressionFindingComponent e : element.getFinding()) 
23219          composeClinicalImpressionClinicalImpressionFindingComponent("finding", e);
23220      }
23221      if (element.hasPrognosisCodeableConcept()) { 
23222        for (CodeableConcept e : element.getPrognosisCodeableConcept()) 
23223          composeCodeableConcept("prognosisCodeableConcept", e);
23224      }
23225      if (element.hasPrognosisReference()) { 
23226        for (Reference e : element.getPrognosisReference()) 
23227          composeReference("prognosisReference", e);
23228      }
23229      if (element.hasAction()) { 
23230        for (Reference e : element.getAction()) 
23231          composeReference("action", e);
23232      }
23233      if (element.hasNote()) { 
23234        for (Annotation e : element.getNote()) 
23235          composeAnnotation("note", e);
23236      }
23237  }
23238
23239  protected void composeClinicalImpressionClinicalImpressionInvestigationComponent(String name, ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
23240    if (element != null) {
23241      composeElementAttributes(element);
23242      xml.enter(FHIR_NS, name);
23243      composeClinicalImpressionClinicalImpressionInvestigationComponentElements(element);
23244      composeElementClose(element);
23245      xml.exit(FHIR_NS, name);
23246    }
23247  }
23248
23249  protected void composeClinicalImpressionClinicalImpressionInvestigationComponentElements(ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
23250      composeBackboneElements(element);
23251      if (element.hasCode()) {
23252        composeCodeableConcept("code", element.getCode());
23253      }
23254      if (element.hasItem()) { 
23255        for (Reference e : element.getItem()) 
23256          composeReference("item", e);
23257      }
23258  }
23259
23260  protected void composeClinicalImpressionClinicalImpressionFindingComponent(String name, ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
23261    if (element != null) {
23262      composeElementAttributes(element);
23263      xml.enter(FHIR_NS, name);
23264      composeClinicalImpressionClinicalImpressionFindingComponentElements(element);
23265      composeElementClose(element);
23266      xml.exit(FHIR_NS, name);
23267    }
23268  }
23269
23270  protected void composeClinicalImpressionClinicalImpressionFindingComponentElements(ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
23271      composeBackboneElements(element);
23272      if (element.hasItem()) {
23273        composeType("item", element.getItem());
23274      }      if (element.hasBasisElement()) {
23275        composeString("basis", element.getBasisElement());
23276      }
23277  }
23278
23279  protected void composeCodeSystem(String name, CodeSystem element) throws IOException {
23280    if (element != null) {
23281      composeDomainResourceAttributes(element);
23282      xml.enter(FHIR_NS, name);
23283      composeCodeSystemElements(element);
23284      composeElementClose(element);
23285      xml.exit(FHIR_NS, name);
23286    }
23287  }
23288
23289  protected void composeCodeSystemElements(CodeSystem element) throws IOException {
23290      composeDomainResourceElements(element);
23291      if (element.hasUrlElement()) {
23292        composeUri("url", element.getUrlElement());
23293      }
23294      if (element.hasIdentifier()) {
23295        composeIdentifier("identifier", element.getIdentifier());
23296      }
23297      if (element.hasVersionElement()) {
23298        composeString("version", element.getVersionElement());
23299      }
23300      if (element.hasNameElement()) {
23301        composeString("name", element.getNameElement());
23302      }
23303      if (element.hasTitleElement()) {
23304        composeString("title", element.getTitleElement());
23305      }
23306      if (element.hasStatusElement())
23307        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
23308      if (element.hasExperimentalElement()) {
23309        composeBoolean("experimental", element.getExperimentalElement());
23310      }
23311      if (element.hasDateElement()) {
23312        composeDateTime("date", element.getDateElement());
23313      }
23314      if (element.hasPublisherElement()) {
23315        composeString("publisher", element.getPublisherElement());
23316      }
23317      if (element.hasContact()) { 
23318        for (ContactDetail e : element.getContact()) 
23319          composeContactDetail("contact", e);
23320      }
23321      if (element.hasDescriptionElement()) {
23322        composeMarkdown("description", element.getDescriptionElement());
23323      }
23324      if (element.hasUseContext()) { 
23325        for (UsageContext e : element.getUseContext()) 
23326          composeUsageContext("useContext", e);
23327      }
23328      if (element.hasJurisdiction()) { 
23329        for (CodeableConcept e : element.getJurisdiction()) 
23330          composeCodeableConcept("jurisdiction", e);
23331      }
23332      if (element.hasPurposeElement()) {
23333        composeMarkdown("purpose", element.getPurposeElement());
23334      }
23335      if (element.hasCopyrightElement()) {
23336        composeMarkdown("copyright", element.getCopyrightElement());
23337      }
23338      if (element.hasCaseSensitiveElement()) {
23339        composeBoolean("caseSensitive", element.getCaseSensitiveElement());
23340      }
23341      if (element.hasValueSetElement()) {
23342        composeUri("valueSet", element.getValueSetElement());
23343      }
23344      if (element.hasHierarchyMeaningElement())
23345        composeEnumeration("hierarchyMeaning", element.getHierarchyMeaningElement(), new CodeSystem.CodeSystemHierarchyMeaningEnumFactory());
23346      if (element.hasCompositionalElement()) {
23347        composeBoolean("compositional", element.getCompositionalElement());
23348      }
23349      if (element.hasVersionNeededElement()) {
23350        composeBoolean("versionNeeded", element.getVersionNeededElement());
23351      }
23352      if (element.hasContentElement())
23353        composeEnumeration("content", element.getContentElement(), new CodeSystem.CodeSystemContentModeEnumFactory());
23354      if (element.hasCountElement()) {
23355        composeUnsignedInt("count", element.getCountElement());
23356      }
23357      if (element.hasFilter()) { 
23358        for (CodeSystem.CodeSystemFilterComponent e : element.getFilter()) 
23359          composeCodeSystemCodeSystemFilterComponent("filter", e);
23360      }
23361      if (element.hasProperty()) { 
23362        for (CodeSystem.PropertyComponent e : element.getProperty()) 
23363          composeCodeSystemPropertyComponent("property", e);
23364      }
23365      if (element.hasConcept()) { 
23366        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
23367          composeCodeSystemConceptDefinitionComponent("concept", e);
23368      }
23369  }
23370
23371  protected void composeCodeSystemCodeSystemFilterComponent(String name, CodeSystem.CodeSystemFilterComponent element) throws IOException {
23372    if (element != null) {
23373      composeElementAttributes(element);
23374      xml.enter(FHIR_NS, name);
23375      composeCodeSystemCodeSystemFilterComponentElements(element);
23376      composeElementClose(element);
23377      xml.exit(FHIR_NS, name);
23378    }
23379  }
23380
23381  protected void composeCodeSystemCodeSystemFilterComponentElements(CodeSystem.CodeSystemFilterComponent element) throws IOException {
23382      composeBackboneElements(element);
23383      if (element.hasCodeElement()) {
23384        composeCode("code", element.getCodeElement());
23385      }
23386      if (element.hasDescriptionElement()) {
23387        composeString("description", element.getDescriptionElement());
23388      }
23389        if (element.hasOperator()) 
23390          for (Enumeration<CodeSystem.FilterOperator> e : element.getOperator()) 
23391            composeEnumeration("operator", e, new CodeSystem.FilterOperatorEnumFactory());
23392      if (element.hasValueElement()) {
23393        composeString("value", element.getValueElement());
23394      }
23395  }
23396
23397  protected void composeCodeSystemPropertyComponent(String name, CodeSystem.PropertyComponent element) throws IOException {
23398    if (element != null) {
23399      composeElementAttributes(element);
23400      xml.enter(FHIR_NS, name);
23401      composeCodeSystemPropertyComponentElements(element);
23402      composeElementClose(element);
23403      xml.exit(FHIR_NS, name);
23404    }
23405  }
23406
23407  protected void composeCodeSystemPropertyComponentElements(CodeSystem.PropertyComponent element) throws IOException {
23408      composeBackboneElements(element);
23409      if (element.hasCodeElement()) {
23410        composeCode("code", element.getCodeElement());
23411      }
23412      if (element.hasUriElement()) {
23413        composeUri("uri", element.getUriElement());
23414      }
23415      if (element.hasDescriptionElement()) {
23416        composeString("description", element.getDescriptionElement());
23417      }
23418      if (element.hasTypeElement())
23419        composeEnumeration("type", element.getTypeElement(), new CodeSystem.PropertyTypeEnumFactory());
23420  }
23421
23422  protected void composeCodeSystemConceptDefinitionComponent(String name, CodeSystem.ConceptDefinitionComponent element) throws IOException {
23423    if (element != null) {
23424      composeElementAttributes(element);
23425      xml.enter(FHIR_NS, name);
23426      composeCodeSystemConceptDefinitionComponentElements(element);
23427      composeElementClose(element);
23428      xml.exit(FHIR_NS, name);
23429    }
23430  }
23431
23432  protected void composeCodeSystemConceptDefinitionComponentElements(CodeSystem.ConceptDefinitionComponent element) throws IOException {
23433      composeBackboneElements(element);
23434      if (element.hasCodeElement()) {
23435        composeCode("code", element.getCodeElement());
23436      }
23437      if (element.hasDisplayElement()) {
23438        composeString("display", element.getDisplayElement());
23439      }
23440      if (element.hasDefinitionElement()) {
23441        composeString("definition", element.getDefinitionElement());
23442      }
23443      if (element.hasDesignation()) { 
23444        for (CodeSystem.ConceptDefinitionDesignationComponent e : element.getDesignation()) 
23445          composeCodeSystemConceptDefinitionDesignationComponent("designation", e);
23446      }
23447      if (element.hasProperty()) { 
23448        for (CodeSystem.ConceptPropertyComponent e : element.getProperty()) 
23449          composeCodeSystemConceptPropertyComponent("property", e);
23450      }
23451      if (element.hasConcept()) { 
23452        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
23453          composeCodeSystemConceptDefinitionComponent("concept", e);
23454      }
23455  }
23456
23457  protected void composeCodeSystemConceptDefinitionDesignationComponent(String name, CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
23458    if (element != null) {
23459      composeElementAttributes(element);
23460      xml.enter(FHIR_NS, name);
23461      composeCodeSystemConceptDefinitionDesignationComponentElements(element);
23462      composeElementClose(element);
23463      xml.exit(FHIR_NS, name);
23464    }
23465  }
23466
23467  protected void composeCodeSystemConceptDefinitionDesignationComponentElements(CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
23468      composeBackboneElements(element);
23469      if (element.hasLanguageElement()) {
23470        composeCode("language", element.getLanguageElement());
23471      }
23472      if (element.hasUse()) {
23473        composeCoding("use", element.getUse());
23474      }
23475      if (element.hasValueElement()) {
23476        composeString("value", element.getValueElement());
23477      }
23478  }
23479
23480  protected void composeCodeSystemConceptPropertyComponent(String name, CodeSystem.ConceptPropertyComponent element) throws IOException {
23481    if (element != null) {
23482      composeElementAttributes(element);
23483      xml.enter(FHIR_NS, name);
23484      composeCodeSystemConceptPropertyComponentElements(element);
23485      composeElementClose(element);
23486      xml.exit(FHIR_NS, name);
23487    }
23488  }
23489
23490  protected void composeCodeSystemConceptPropertyComponentElements(CodeSystem.ConceptPropertyComponent element) throws IOException {
23491      composeBackboneElements(element);
23492      if (element.hasCodeElement()) {
23493        composeCode("code", element.getCodeElement());
23494      }
23495      if (element.hasValue()) {
23496        composeType("value", element.getValue());
23497      }  }
23498
23499  protected void composeCommunication(String name, Communication element) throws IOException {
23500    if (element != null) {
23501      composeDomainResourceAttributes(element);
23502      xml.enter(FHIR_NS, name);
23503      composeCommunicationElements(element);
23504      composeElementClose(element);
23505      xml.exit(FHIR_NS, name);
23506    }
23507  }
23508
23509  protected void composeCommunicationElements(Communication element) throws IOException {
23510      composeDomainResourceElements(element);
23511      if (element.hasIdentifier()) { 
23512        for (Identifier e : element.getIdentifier()) 
23513          composeIdentifier("identifier", e);
23514      }
23515      if (element.hasDefinition()) { 
23516        for (Reference e : element.getDefinition()) 
23517          composeReference("definition", e);
23518      }
23519      if (element.hasBasedOn()) { 
23520        for (Reference e : element.getBasedOn()) 
23521          composeReference("basedOn", e);
23522      }
23523      if (element.hasPartOf()) { 
23524        for (Reference e : element.getPartOf()) 
23525          composeReference("partOf", e);
23526      }
23527      if (element.hasStatusElement())
23528        composeEnumeration("status", element.getStatusElement(), new Communication.CommunicationStatusEnumFactory());
23529      if (element.hasNotDoneElement()) {
23530        composeBoolean("notDone", element.getNotDoneElement());
23531      }
23532      if (element.hasNotDoneReason()) {
23533        composeCodeableConcept("notDoneReason", element.getNotDoneReason());
23534      }
23535      if (element.hasCategory()) { 
23536        for (CodeableConcept e : element.getCategory()) 
23537          composeCodeableConcept("category", e);
23538      }
23539      if (element.hasMedium()) { 
23540        for (CodeableConcept e : element.getMedium()) 
23541          composeCodeableConcept("medium", e);
23542      }
23543      if (element.hasSubject()) {
23544        composeReference("subject", element.getSubject());
23545      }
23546      if (element.hasRecipient()) { 
23547        for (Reference e : element.getRecipient()) 
23548          composeReference("recipient", e);
23549      }
23550      if (element.hasTopic()) { 
23551        for (Reference e : element.getTopic()) 
23552          composeReference("topic", e);
23553      }
23554      if (element.hasContext()) {
23555        composeReference("context", element.getContext());
23556      }
23557      if (element.hasSentElement()) {
23558        composeDateTime("sent", element.getSentElement());
23559      }
23560      if (element.hasReceivedElement()) {
23561        composeDateTime("received", element.getReceivedElement());
23562      }
23563      if (element.hasSender()) {
23564        composeReference("sender", element.getSender());
23565      }
23566      if (element.hasReasonCode()) { 
23567        for (CodeableConcept e : element.getReasonCode()) 
23568          composeCodeableConcept("reasonCode", e);
23569      }
23570      if (element.hasReasonReference()) { 
23571        for (Reference e : element.getReasonReference()) 
23572          composeReference("reasonReference", e);
23573      }
23574      if (element.hasPayload()) { 
23575        for (Communication.CommunicationPayloadComponent e : element.getPayload()) 
23576          composeCommunicationCommunicationPayloadComponent("payload", e);
23577      }
23578      if (element.hasNote()) { 
23579        for (Annotation e : element.getNote()) 
23580          composeAnnotation("note", e);
23581      }
23582  }
23583
23584  protected void composeCommunicationCommunicationPayloadComponent(String name, Communication.CommunicationPayloadComponent element) throws IOException {
23585    if (element != null) {
23586      composeElementAttributes(element);
23587      xml.enter(FHIR_NS, name);
23588      composeCommunicationCommunicationPayloadComponentElements(element);
23589      composeElementClose(element);
23590      xml.exit(FHIR_NS, name);
23591    }
23592  }
23593
23594  protected void composeCommunicationCommunicationPayloadComponentElements(Communication.CommunicationPayloadComponent element) throws IOException {
23595      composeBackboneElements(element);
23596      if (element.hasContent()) {
23597        composeType("content", element.getContent());
23598      }  }
23599
23600  protected void composeCommunicationRequest(String name, CommunicationRequest element) throws IOException {
23601    if (element != null) {
23602      composeDomainResourceAttributes(element);
23603      xml.enter(FHIR_NS, name);
23604      composeCommunicationRequestElements(element);
23605      composeElementClose(element);
23606      xml.exit(FHIR_NS, name);
23607    }
23608  }
23609
23610  protected void composeCommunicationRequestElements(CommunicationRequest element) throws IOException {
23611      composeDomainResourceElements(element);
23612      if (element.hasIdentifier()) { 
23613        for (Identifier e : element.getIdentifier()) 
23614          composeIdentifier("identifier", e);
23615      }
23616      if (element.hasBasedOn()) { 
23617        for (Reference e : element.getBasedOn()) 
23618          composeReference("basedOn", e);
23619      }
23620      if (element.hasReplaces()) { 
23621        for (Reference e : element.getReplaces()) 
23622          composeReference("replaces", e);
23623      }
23624      if (element.hasGroupIdentifier()) {
23625        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
23626      }
23627      if (element.hasStatusElement())
23628        composeEnumeration("status", element.getStatusElement(), new CommunicationRequest.CommunicationRequestStatusEnumFactory());
23629      if (element.hasCategory()) { 
23630        for (CodeableConcept e : element.getCategory()) 
23631          composeCodeableConcept("category", e);
23632      }
23633      if (element.hasPriorityElement())
23634        composeEnumeration("priority", element.getPriorityElement(), new CommunicationRequest.CommunicationPriorityEnumFactory());
23635      if (element.hasMedium()) { 
23636        for (CodeableConcept e : element.getMedium()) 
23637          composeCodeableConcept("medium", e);
23638      }
23639      if (element.hasSubject()) {
23640        composeReference("subject", element.getSubject());
23641      }
23642      if (element.hasRecipient()) { 
23643        for (Reference e : element.getRecipient()) 
23644          composeReference("recipient", e);
23645      }
23646      if (element.hasTopic()) { 
23647        for (Reference e : element.getTopic()) 
23648          composeReference("topic", e);
23649      }
23650      if (element.hasContext()) {
23651        composeReference("context", element.getContext());
23652      }
23653      if (element.hasPayload()) { 
23654        for (CommunicationRequest.CommunicationRequestPayloadComponent e : element.getPayload()) 
23655          composeCommunicationRequestCommunicationRequestPayloadComponent("payload", e);
23656      }
23657      if (element.hasOccurrence()) {
23658        composeType("occurrence", element.getOccurrence());
23659      }      if (element.hasAuthoredOnElement()) {
23660        composeDateTime("authoredOn", element.getAuthoredOnElement());
23661      }
23662      if (element.hasSender()) {
23663        composeReference("sender", element.getSender());
23664      }
23665      if (element.hasRequester()) {
23666        composeCommunicationRequestCommunicationRequestRequesterComponent("requester", element.getRequester());
23667      }
23668      if (element.hasReasonCode()) { 
23669        for (CodeableConcept e : element.getReasonCode()) 
23670          composeCodeableConcept("reasonCode", e);
23671      }
23672      if (element.hasReasonReference()) { 
23673        for (Reference e : element.getReasonReference()) 
23674          composeReference("reasonReference", e);
23675      }
23676      if (element.hasNote()) { 
23677        for (Annotation e : element.getNote()) 
23678          composeAnnotation("note", e);
23679      }
23680  }
23681
23682  protected void composeCommunicationRequestCommunicationRequestPayloadComponent(String name, CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
23683    if (element != null) {
23684      composeElementAttributes(element);
23685      xml.enter(FHIR_NS, name);
23686      composeCommunicationRequestCommunicationRequestPayloadComponentElements(element);
23687      composeElementClose(element);
23688      xml.exit(FHIR_NS, name);
23689    }
23690  }
23691
23692  protected void composeCommunicationRequestCommunicationRequestPayloadComponentElements(CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
23693      composeBackboneElements(element);
23694      if (element.hasContent()) {
23695        composeType("content", element.getContent());
23696      }  }
23697
23698  protected void composeCommunicationRequestCommunicationRequestRequesterComponent(String name, CommunicationRequest.CommunicationRequestRequesterComponent element) throws IOException {
23699    if (element != null) {
23700      composeElementAttributes(element);
23701      xml.enter(FHIR_NS, name);
23702      composeCommunicationRequestCommunicationRequestRequesterComponentElements(element);
23703      composeElementClose(element);
23704      xml.exit(FHIR_NS, name);
23705    }
23706  }
23707
23708  protected void composeCommunicationRequestCommunicationRequestRequesterComponentElements(CommunicationRequest.CommunicationRequestRequesterComponent element) throws IOException {
23709      composeBackboneElements(element);
23710      if (element.hasAgent()) {
23711        composeReference("agent", element.getAgent());
23712      }
23713      if (element.hasOnBehalfOf()) {
23714        composeReference("onBehalfOf", element.getOnBehalfOf());
23715      }
23716  }
23717
23718  protected void composeCompartmentDefinition(String name, CompartmentDefinition element) throws IOException {
23719    if (element != null) {
23720      composeDomainResourceAttributes(element);
23721      xml.enter(FHIR_NS, name);
23722      composeCompartmentDefinitionElements(element);
23723      composeElementClose(element);
23724      xml.exit(FHIR_NS, name);
23725    }
23726  }
23727
23728  protected void composeCompartmentDefinitionElements(CompartmentDefinition element) throws IOException {
23729      composeDomainResourceElements(element);
23730      if (element.hasUrlElement()) {
23731        composeUri("url", element.getUrlElement());
23732      }
23733      if (element.hasNameElement()) {
23734        composeString("name", element.getNameElement());
23735      }
23736      if (element.hasTitleElement()) {
23737        composeString("title", element.getTitleElement());
23738      }
23739      if (element.hasStatusElement())
23740        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
23741      if (element.hasExperimentalElement()) {
23742        composeBoolean("experimental", element.getExperimentalElement());
23743      }
23744      if (element.hasDateElement()) {
23745        composeDateTime("date", element.getDateElement());
23746      }
23747      if (element.hasPublisherElement()) {
23748        composeString("publisher", element.getPublisherElement());
23749      }
23750      if (element.hasContact()) { 
23751        for (ContactDetail e : element.getContact()) 
23752          composeContactDetail("contact", e);
23753      }
23754      if (element.hasDescriptionElement()) {
23755        composeMarkdown("description", element.getDescriptionElement());
23756      }
23757      if (element.hasPurposeElement()) {
23758        composeMarkdown("purpose", element.getPurposeElement());
23759      }
23760      if (element.hasUseContext()) { 
23761        for (UsageContext e : element.getUseContext()) 
23762          composeUsageContext("useContext", e);
23763      }
23764      if (element.hasJurisdiction()) { 
23765        for (CodeableConcept e : element.getJurisdiction()) 
23766          composeCodeableConcept("jurisdiction", e);
23767      }
23768      if (element.hasCodeElement())
23769        composeEnumeration("code", element.getCodeElement(), new CompartmentDefinition.CompartmentTypeEnumFactory());
23770      if (element.hasSearchElement()) {
23771        composeBoolean("search", element.getSearchElement());
23772      }
23773      if (element.hasResource()) { 
23774        for (CompartmentDefinition.CompartmentDefinitionResourceComponent e : element.getResource()) 
23775          composeCompartmentDefinitionCompartmentDefinitionResourceComponent("resource", e);
23776      }
23777  }
23778
23779  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponent(String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
23780    if (element != null) {
23781      composeElementAttributes(element);
23782      xml.enter(FHIR_NS, name);
23783      composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(element);
23784      composeElementClose(element);
23785      xml.exit(FHIR_NS, name);
23786    }
23787  }
23788
23789  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
23790      composeBackboneElements(element);
23791      if (element.hasCodeElement()) {
23792        composeCode("code", element.getCodeElement());
23793      }
23794      if (element.hasParam()) { 
23795        for (StringType e : element.getParam()) 
23796          composeString("param", e);
23797      }
23798      if (element.hasDocumentationElement()) {
23799        composeString("documentation", element.getDocumentationElement());
23800      }
23801  }
23802
23803  protected void composeComposition(String name, Composition element) throws IOException {
23804    if (element != null) {
23805      composeDomainResourceAttributes(element);
23806      xml.enter(FHIR_NS, name);
23807      composeCompositionElements(element);
23808      composeElementClose(element);
23809      xml.exit(FHIR_NS, name);
23810    }
23811  }
23812
23813  protected void composeCompositionElements(Composition element) throws IOException {
23814      composeDomainResourceElements(element);
23815      if (element.hasIdentifier()) {
23816        composeIdentifier("identifier", element.getIdentifier());
23817      }
23818      if (element.hasStatusElement())
23819        composeEnumeration("status", element.getStatusElement(), new Composition.CompositionStatusEnumFactory());
23820      if (element.hasType()) {
23821        composeCodeableConcept("type", element.getType());
23822      }
23823      if (element.hasClass_()) {
23824        composeCodeableConcept("class", element.getClass_());
23825      }
23826      if (element.hasSubject()) {
23827        composeReference("subject", element.getSubject());
23828      }
23829      if (element.hasEncounter()) {
23830        composeReference("encounter", element.getEncounter());
23831      }
23832      if (element.hasDateElement()) {
23833        composeDateTime("date", element.getDateElement());
23834      }
23835      if (element.hasAuthor()) { 
23836        for (Reference e : element.getAuthor()) 
23837          composeReference("author", e);
23838      }
23839      if (element.hasTitleElement()) {
23840        composeString("title", element.getTitleElement());
23841      }
23842      if (element.hasConfidentialityElement())
23843        composeEnumeration("confidentiality", element.getConfidentialityElement(), new Composition.DocumentConfidentialityEnumFactory());
23844      if (element.hasAttester()) { 
23845        for (Composition.CompositionAttesterComponent e : element.getAttester()) 
23846          composeCompositionCompositionAttesterComponent("attester", e);
23847      }
23848      if (element.hasCustodian()) {
23849        composeReference("custodian", element.getCustodian());
23850      }
23851      if (element.hasRelatesTo()) { 
23852        for (Composition.CompositionRelatesToComponent e : element.getRelatesTo()) 
23853          composeCompositionCompositionRelatesToComponent("relatesTo", e);
23854      }
23855      if (element.hasEvent()) { 
23856        for (Composition.CompositionEventComponent e : element.getEvent()) 
23857          composeCompositionCompositionEventComponent("event", e);
23858      }
23859      if (element.hasSection()) { 
23860        for (Composition.SectionComponent e : element.getSection()) 
23861          composeCompositionSectionComponent("section", e);
23862      }
23863  }
23864
23865  protected void composeCompositionCompositionAttesterComponent(String name, Composition.CompositionAttesterComponent element) throws IOException {
23866    if (element != null) {
23867      composeElementAttributes(element);
23868      xml.enter(FHIR_NS, name);
23869      composeCompositionCompositionAttesterComponentElements(element);
23870      composeElementClose(element);
23871      xml.exit(FHIR_NS, name);
23872    }
23873  }
23874
23875  protected void composeCompositionCompositionAttesterComponentElements(Composition.CompositionAttesterComponent element) throws IOException {
23876      composeBackboneElements(element);
23877        if (element.hasMode()) 
23878          for (Enumeration<Composition.CompositionAttestationMode> e : element.getMode()) 
23879            composeEnumeration("mode", e, new Composition.CompositionAttestationModeEnumFactory());
23880      if (element.hasTimeElement()) {
23881        composeDateTime("time", element.getTimeElement());
23882      }
23883      if (element.hasParty()) {
23884        composeReference("party", element.getParty());
23885      }
23886  }
23887
23888  protected void composeCompositionCompositionRelatesToComponent(String name, Composition.CompositionRelatesToComponent element) throws IOException {
23889    if (element != null) {
23890      composeElementAttributes(element);
23891      xml.enter(FHIR_NS, name);
23892      composeCompositionCompositionRelatesToComponentElements(element);
23893      composeElementClose(element);
23894      xml.exit(FHIR_NS, name);
23895    }
23896  }
23897
23898  protected void composeCompositionCompositionRelatesToComponentElements(Composition.CompositionRelatesToComponent element) throws IOException {
23899      composeBackboneElements(element);
23900      if (element.hasCodeElement())
23901        composeEnumeration("code", element.getCodeElement(), new Composition.DocumentRelationshipTypeEnumFactory());
23902      if (element.hasTarget()) {
23903        composeType("target", element.getTarget());
23904      }  }
23905
23906  protected void composeCompositionCompositionEventComponent(String name, Composition.CompositionEventComponent element) throws IOException {
23907    if (element != null) {
23908      composeElementAttributes(element);
23909      xml.enter(FHIR_NS, name);
23910      composeCompositionCompositionEventComponentElements(element);
23911      composeElementClose(element);
23912      xml.exit(FHIR_NS, name);
23913    }
23914  }
23915
23916  protected void composeCompositionCompositionEventComponentElements(Composition.CompositionEventComponent element) throws IOException {
23917      composeBackboneElements(element);
23918      if (element.hasCode()) { 
23919        for (CodeableConcept e : element.getCode()) 
23920          composeCodeableConcept("code", e);
23921      }
23922      if (element.hasPeriod()) {
23923        composePeriod("period", element.getPeriod());
23924      }
23925      if (element.hasDetail()) { 
23926        for (Reference e : element.getDetail()) 
23927          composeReference("detail", e);
23928      }
23929  }
23930
23931  protected void composeCompositionSectionComponent(String name, Composition.SectionComponent element) throws IOException {
23932    if (element != null) {
23933      composeElementAttributes(element);
23934      xml.enter(FHIR_NS, name);
23935      composeCompositionSectionComponentElements(element);
23936      composeElementClose(element);
23937      xml.exit(FHIR_NS, name);
23938    }
23939  }
23940
23941  protected void composeCompositionSectionComponentElements(Composition.SectionComponent element) throws IOException {
23942      composeBackboneElements(element);
23943      if (element.hasTitleElement()) {
23944        composeString("title", element.getTitleElement());
23945      }
23946      if (element.hasCode()) {
23947        composeCodeableConcept("code", element.getCode());
23948      }
23949      if (element.hasText()) {
23950        composeNarrative("text", element.getText());
23951      }
23952      if (element.hasModeElement())
23953        composeEnumeration("mode", element.getModeElement(), new Composition.SectionModeEnumFactory());
23954      if (element.hasOrderedBy()) {
23955        composeCodeableConcept("orderedBy", element.getOrderedBy());
23956      }
23957      if (element.hasEntry()) { 
23958        for (Reference e : element.getEntry()) 
23959          composeReference("entry", e);
23960      }
23961      if (element.hasEmptyReason()) {
23962        composeCodeableConcept("emptyReason", element.getEmptyReason());
23963      }
23964      if (element.hasSection()) { 
23965        for (Composition.SectionComponent e : element.getSection()) 
23966          composeCompositionSectionComponent("section", e);
23967      }
23968  }
23969
23970  protected void composeConceptMap(String name, ConceptMap element) throws IOException {
23971    if (element != null) {
23972      composeDomainResourceAttributes(element);
23973      xml.enter(FHIR_NS, name);
23974      composeConceptMapElements(element);
23975      composeElementClose(element);
23976      xml.exit(FHIR_NS, name);
23977    }
23978  }
23979
23980  protected void composeConceptMapElements(ConceptMap element) throws IOException {
23981      composeDomainResourceElements(element);
23982      if (element.hasUrlElement()) {
23983        composeUri("url", element.getUrlElement());
23984      }
23985      if (element.hasIdentifier()) {
23986        composeIdentifier("identifier", element.getIdentifier());
23987      }
23988      if (element.hasVersionElement()) {
23989        composeString("version", element.getVersionElement());
23990      }
23991      if (element.hasNameElement()) {
23992        composeString("name", element.getNameElement());
23993      }
23994      if (element.hasTitleElement()) {
23995        composeString("title", element.getTitleElement());
23996      }
23997      if (element.hasStatusElement())
23998        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
23999      if (element.hasExperimentalElement()) {
24000        composeBoolean("experimental", element.getExperimentalElement());
24001      }
24002      if (element.hasDateElement()) {
24003        composeDateTime("date", element.getDateElement());
24004      }
24005      if (element.hasPublisherElement()) {
24006        composeString("publisher", element.getPublisherElement());
24007      }
24008      if (element.hasContact()) { 
24009        for (ContactDetail e : element.getContact()) 
24010          composeContactDetail("contact", e);
24011      }
24012      if (element.hasDescriptionElement()) {
24013        composeMarkdown("description", element.getDescriptionElement());
24014      }
24015      if (element.hasUseContext()) { 
24016        for (UsageContext e : element.getUseContext()) 
24017          composeUsageContext("useContext", e);
24018      }
24019      if (element.hasJurisdiction()) { 
24020        for (CodeableConcept e : element.getJurisdiction()) 
24021          composeCodeableConcept("jurisdiction", e);
24022      }
24023      if (element.hasPurposeElement()) {
24024        composeMarkdown("purpose", element.getPurposeElement());
24025      }
24026      if (element.hasCopyrightElement()) {
24027        composeMarkdown("copyright", element.getCopyrightElement());
24028      }
24029      if (element.hasSource()) {
24030        composeType("source", element.getSource());
24031      }      if (element.hasTarget()) {
24032        composeType("target", element.getTarget());
24033      }      if (element.hasGroup()) { 
24034        for (ConceptMap.ConceptMapGroupComponent e : element.getGroup()) 
24035          composeConceptMapConceptMapGroupComponent("group", e);
24036      }
24037  }
24038
24039  protected void composeConceptMapConceptMapGroupComponent(String name, ConceptMap.ConceptMapGroupComponent element) throws IOException {
24040    if (element != null) {
24041      composeElementAttributes(element);
24042      xml.enter(FHIR_NS, name);
24043      composeConceptMapConceptMapGroupComponentElements(element);
24044      composeElementClose(element);
24045      xml.exit(FHIR_NS, name);
24046    }
24047  }
24048
24049  protected void composeConceptMapConceptMapGroupComponentElements(ConceptMap.ConceptMapGroupComponent element) throws IOException {
24050      composeBackboneElements(element);
24051      if (element.hasSourceElement()) {
24052        composeUri("source", element.getSourceElement());
24053      }
24054      if (element.hasSourceVersionElement()) {
24055        composeString("sourceVersion", element.getSourceVersionElement());
24056      }
24057      if (element.hasTargetElement()) {
24058        composeUri("target", element.getTargetElement());
24059      }
24060      if (element.hasTargetVersionElement()) {
24061        composeString("targetVersion", element.getTargetVersionElement());
24062      }
24063      if (element.hasElement()) { 
24064        for (ConceptMap.SourceElementComponent e : element.getElement()) 
24065          composeConceptMapSourceElementComponent("element", e);
24066      }
24067      if (element.hasUnmapped()) {
24068        composeConceptMapConceptMapGroupUnmappedComponent("unmapped", element.getUnmapped());
24069      }
24070  }
24071
24072  protected void composeConceptMapSourceElementComponent(String name, ConceptMap.SourceElementComponent element) throws IOException {
24073    if (element != null) {
24074      composeElementAttributes(element);
24075      xml.enter(FHIR_NS, name);
24076      composeConceptMapSourceElementComponentElements(element);
24077      composeElementClose(element);
24078      xml.exit(FHIR_NS, name);
24079    }
24080  }
24081
24082  protected void composeConceptMapSourceElementComponentElements(ConceptMap.SourceElementComponent element) throws IOException {
24083      composeBackboneElements(element);
24084      if (element.hasCodeElement()) {
24085        composeCode("code", element.getCodeElement());
24086      }
24087      if (element.hasDisplayElement()) {
24088        composeString("display", element.getDisplayElement());
24089      }
24090      if (element.hasTarget()) { 
24091        for (ConceptMap.TargetElementComponent e : element.getTarget()) 
24092          composeConceptMapTargetElementComponent("target", e);
24093      }
24094  }
24095
24096  protected void composeConceptMapTargetElementComponent(String name, ConceptMap.TargetElementComponent element) throws IOException {
24097    if (element != null) {
24098      composeElementAttributes(element);
24099      xml.enter(FHIR_NS, name);
24100      composeConceptMapTargetElementComponentElements(element);
24101      composeElementClose(element);
24102      xml.exit(FHIR_NS, name);
24103    }
24104  }
24105
24106  protected void composeConceptMapTargetElementComponentElements(ConceptMap.TargetElementComponent element) throws IOException {
24107      composeBackboneElements(element);
24108      if (element.hasCodeElement()) {
24109        composeCode("code", element.getCodeElement());
24110      }
24111      if (element.hasDisplayElement()) {
24112        composeString("display", element.getDisplayElement());
24113      }
24114      if (element.hasEquivalenceElement())
24115        composeEnumeration("equivalence", element.getEquivalenceElement(), new Enumerations.ConceptMapEquivalenceEnumFactory());
24116      if (element.hasCommentElement()) {
24117        composeString("comment", element.getCommentElement());
24118      }
24119      if (element.hasDependsOn()) { 
24120        for (ConceptMap.OtherElementComponent e : element.getDependsOn()) 
24121          composeConceptMapOtherElementComponent("dependsOn", e);
24122      }
24123      if (element.hasProduct()) { 
24124        for (ConceptMap.OtherElementComponent e : element.getProduct()) 
24125          composeConceptMapOtherElementComponent("product", e);
24126      }
24127  }
24128
24129  protected void composeConceptMapOtherElementComponent(String name, ConceptMap.OtherElementComponent element) throws IOException {
24130    if (element != null) {
24131      composeElementAttributes(element);
24132      xml.enter(FHIR_NS, name);
24133      composeConceptMapOtherElementComponentElements(element);
24134      composeElementClose(element);
24135      xml.exit(FHIR_NS, name);
24136    }
24137  }
24138
24139  protected void composeConceptMapOtherElementComponentElements(ConceptMap.OtherElementComponent element) throws IOException {
24140      composeBackboneElements(element);
24141      if (element.hasPropertyElement()) {
24142        composeUri("property", element.getPropertyElement());
24143      }
24144      if (element.hasSystemElement()) {
24145        composeUri("system", element.getSystemElement());
24146      }
24147      if (element.hasCodeElement()) {
24148        composeString("code", element.getCodeElement());
24149      }
24150      if (element.hasDisplayElement()) {
24151        composeString("display", element.getDisplayElement());
24152      }
24153  }
24154
24155  protected void composeConceptMapConceptMapGroupUnmappedComponent(String name, ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
24156    if (element != null) {
24157      composeElementAttributes(element);
24158      xml.enter(FHIR_NS, name);
24159      composeConceptMapConceptMapGroupUnmappedComponentElements(element);
24160      composeElementClose(element);
24161      xml.exit(FHIR_NS, name);
24162    }
24163  }
24164
24165  protected void composeConceptMapConceptMapGroupUnmappedComponentElements(ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
24166      composeBackboneElements(element);
24167      if (element.hasModeElement())
24168        composeEnumeration("mode", element.getModeElement(), new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory());
24169      if (element.hasCodeElement()) {
24170        composeCode("code", element.getCodeElement());
24171      }
24172      if (element.hasDisplayElement()) {
24173        composeString("display", element.getDisplayElement());
24174      }
24175      if (element.hasUrlElement()) {
24176        composeUri("url", element.getUrlElement());
24177      }
24178  }
24179
24180  protected void composeCondition(String name, Condition element) throws IOException {
24181    if (element != null) {
24182      composeDomainResourceAttributes(element);
24183      xml.enter(FHIR_NS, name);
24184      composeConditionElements(element);
24185      composeElementClose(element);
24186      xml.exit(FHIR_NS, name);
24187    }
24188  }
24189
24190  protected void composeConditionElements(Condition element) throws IOException {
24191      composeDomainResourceElements(element);
24192      if (element.hasIdentifier()) { 
24193        for (Identifier e : element.getIdentifier()) 
24194          composeIdentifier("identifier", e);
24195      }
24196      if (element.hasClinicalStatusElement())
24197        composeEnumeration("clinicalStatus", element.getClinicalStatusElement(), new Condition.ConditionClinicalStatusEnumFactory());
24198      if (element.hasVerificationStatusElement())
24199        composeEnumeration("verificationStatus", element.getVerificationStatusElement(), new Condition.ConditionVerificationStatusEnumFactory());
24200      if (element.hasCategory()) { 
24201        for (CodeableConcept e : element.getCategory()) 
24202          composeCodeableConcept("category", e);
24203      }
24204      if (element.hasSeverity()) {
24205        composeCodeableConcept("severity", element.getSeverity());
24206      }
24207      if (element.hasCode()) {
24208        composeCodeableConcept("code", element.getCode());
24209      }
24210      if (element.hasBodySite()) { 
24211        for (CodeableConcept e : element.getBodySite()) 
24212          composeCodeableConcept("bodySite", e);
24213      }
24214      if (element.hasSubject()) {
24215        composeReference("subject", element.getSubject());
24216      }
24217      if (element.hasContext()) {
24218        composeReference("context", element.getContext());
24219      }
24220      if (element.hasOnset()) {
24221        composeType("onset", element.getOnset());
24222      }      if (element.hasAbatement()) {
24223        composeType("abatement", element.getAbatement());
24224      }      if (element.hasAssertedDateElement()) {
24225        composeDateTime("assertedDate", element.getAssertedDateElement());
24226      }
24227      if (element.hasAsserter()) {
24228        composeReference("asserter", element.getAsserter());
24229      }
24230      if (element.hasStage()) {
24231        composeConditionConditionStageComponent("stage", element.getStage());
24232      }
24233      if (element.hasEvidence()) { 
24234        for (Condition.ConditionEvidenceComponent e : element.getEvidence()) 
24235          composeConditionConditionEvidenceComponent("evidence", e);
24236      }
24237      if (element.hasNote()) { 
24238        for (Annotation e : element.getNote()) 
24239          composeAnnotation("note", e);
24240      }
24241  }
24242
24243  protected void composeConditionConditionStageComponent(String name, Condition.ConditionStageComponent element) throws IOException {
24244    if (element != null) {
24245      composeElementAttributes(element);
24246      xml.enter(FHIR_NS, name);
24247      composeConditionConditionStageComponentElements(element);
24248      composeElementClose(element);
24249      xml.exit(FHIR_NS, name);
24250    }
24251  }
24252
24253  protected void composeConditionConditionStageComponentElements(Condition.ConditionStageComponent element) throws IOException {
24254      composeBackboneElements(element);
24255      if (element.hasSummary()) {
24256        composeCodeableConcept("summary", element.getSummary());
24257      }
24258      if (element.hasAssessment()) { 
24259        for (Reference e : element.getAssessment()) 
24260          composeReference("assessment", e);
24261      }
24262  }
24263
24264  protected void composeConditionConditionEvidenceComponent(String name, Condition.ConditionEvidenceComponent element) throws IOException {
24265    if (element != null) {
24266      composeElementAttributes(element);
24267      xml.enter(FHIR_NS, name);
24268      composeConditionConditionEvidenceComponentElements(element);
24269      composeElementClose(element);
24270      xml.exit(FHIR_NS, name);
24271    }
24272  }
24273
24274  protected void composeConditionConditionEvidenceComponentElements(Condition.ConditionEvidenceComponent element) throws IOException {
24275      composeBackboneElements(element);
24276      if (element.hasCode()) { 
24277        for (CodeableConcept e : element.getCode()) 
24278          composeCodeableConcept("code", e);
24279      }
24280      if (element.hasDetail()) { 
24281        for (Reference e : element.getDetail()) 
24282          composeReference("detail", e);
24283      }
24284  }
24285
24286  protected void composeConsent(String name, Consent element) throws IOException {
24287    if (element != null) {
24288      composeDomainResourceAttributes(element);
24289      xml.enter(FHIR_NS, name);
24290      composeConsentElements(element);
24291      composeElementClose(element);
24292      xml.exit(FHIR_NS, name);
24293    }
24294  }
24295
24296  protected void composeConsentElements(Consent element) throws IOException {
24297      composeDomainResourceElements(element);
24298      if (element.hasIdentifier()) {
24299        composeIdentifier("identifier", element.getIdentifier());
24300      }
24301      if (element.hasStatusElement())
24302        composeEnumeration("status", element.getStatusElement(), new Consent.ConsentStateEnumFactory());
24303      if (element.hasCategory()) { 
24304        for (CodeableConcept e : element.getCategory()) 
24305          composeCodeableConcept("category", e);
24306      }
24307      if (element.hasPatient()) {
24308        composeReference("patient", element.getPatient());
24309      }
24310      if (element.hasPeriod()) {
24311        composePeriod("period", element.getPeriod());
24312      }
24313      if (element.hasDateTimeElement()) {
24314        composeDateTime("dateTime", element.getDateTimeElement());
24315      }
24316      if (element.hasConsentingParty()) { 
24317        for (Reference e : element.getConsentingParty()) 
24318          composeReference("consentingParty", e);
24319      }
24320      if (element.hasActor()) { 
24321        for (Consent.ConsentActorComponent e : element.getActor()) 
24322          composeConsentConsentActorComponent("actor", e);
24323      }
24324      if (element.hasAction()) { 
24325        for (CodeableConcept e : element.getAction()) 
24326          composeCodeableConcept("action", e);
24327      }
24328      if (element.hasOrganization()) { 
24329        for (Reference e : element.getOrganization()) 
24330          composeReference("organization", e);
24331      }
24332      if (element.hasSource()) {
24333        composeType("source", element.getSource());
24334      }      if (element.hasPolicy()) { 
24335        for (Consent.ConsentPolicyComponent e : element.getPolicy()) 
24336          composeConsentConsentPolicyComponent("policy", e);
24337      }
24338      if (element.hasPolicyRuleElement()) {
24339        composeUri("policyRule", element.getPolicyRuleElement());
24340      }
24341      if (element.hasSecurityLabel()) { 
24342        for (Coding e : element.getSecurityLabel()) 
24343          composeCoding("securityLabel", e);
24344      }
24345      if (element.hasPurpose()) { 
24346        for (Coding e : element.getPurpose()) 
24347          composeCoding("purpose", e);
24348      }
24349      if (element.hasDataPeriod()) {
24350        composePeriod("dataPeriod", element.getDataPeriod());
24351      }
24352      if (element.hasData()) { 
24353        for (Consent.ConsentDataComponent e : element.getData()) 
24354          composeConsentConsentDataComponent("data", e);
24355      }
24356      if (element.hasExcept()) { 
24357        for (Consent.ExceptComponent e : element.getExcept()) 
24358          composeConsentExceptComponent("except", e);
24359      }
24360  }
24361
24362  protected void composeConsentConsentActorComponent(String name, Consent.ConsentActorComponent element) throws IOException {
24363    if (element != null) {
24364      composeElementAttributes(element);
24365      xml.enter(FHIR_NS, name);
24366      composeConsentConsentActorComponentElements(element);
24367      composeElementClose(element);
24368      xml.exit(FHIR_NS, name);
24369    }
24370  }
24371
24372  protected void composeConsentConsentActorComponentElements(Consent.ConsentActorComponent element) throws IOException {
24373      composeBackboneElements(element);
24374      if (element.hasRole()) {
24375        composeCodeableConcept("role", element.getRole());
24376      }
24377      if (element.hasReference()) {
24378        composeReference("reference", element.getReference());
24379      }
24380  }
24381
24382  protected void composeConsentConsentPolicyComponent(String name, Consent.ConsentPolicyComponent element) throws IOException {
24383    if (element != null) {
24384      composeElementAttributes(element);
24385      xml.enter(FHIR_NS, name);
24386      composeConsentConsentPolicyComponentElements(element);
24387      composeElementClose(element);
24388      xml.exit(FHIR_NS, name);
24389    }
24390  }
24391
24392  protected void composeConsentConsentPolicyComponentElements(Consent.ConsentPolicyComponent element) throws IOException {
24393      composeBackboneElements(element);
24394      if (element.hasAuthorityElement()) {
24395        composeUri("authority", element.getAuthorityElement());
24396      }
24397      if (element.hasUriElement()) {
24398        composeUri("uri", element.getUriElement());
24399      }
24400  }
24401
24402  protected void composeConsentConsentDataComponent(String name, Consent.ConsentDataComponent element) throws IOException {
24403    if (element != null) {
24404      composeElementAttributes(element);
24405      xml.enter(FHIR_NS, name);
24406      composeConsentConsentDataComponentElements(element);
24407      composeElementClose(element);
24408      xml.exit(FHIR_NS, name);
24409    }
24410  }
24411
24412  protected void composeConsentConsentDataComponentElements(Consent.ConsentDataComponent element) throws IOException {
24413      composeBackboneElements(element);
24414      if (element.hasMeaningElement())
24415        composeEnumeration("meaning", element.getMeaningElement(), new Consent.ConsentDataMeaningEnumFactory());
24416      if (element.hasReference()) {
24417        composeReference("reference", element.getReference());
24418      }
24419  }
24420
24421  protected void composeConsentExceptComponent(String name, Consent.ExceptComponent element) throws IOException {
24422    if (element != null) {
24423      composeElementAttributes(element);
24424      xml.enter(FHIR_NS, name);
24425      composeConsentExceptComponentElements(element);
24426      composeElementClose(element);
24427      xml.exit(FHIR_NS, name);
24428    }
24429  }
24430
24431  protected void composeConsentExceptComponentElements(Consent.ExceptComponent element) throws IOException {
24432      composeBackboneElements(element);
24433      if (element.hasTypeElement())
24434        composeEnumeration("type", element.getTypeElement(), new Consent.ConsentExceptTypeEnumFactory());
24435      if (element.hasPeriod()) {
24436        composePeriod("period", element.getPeriod());
24437      }
24438      if (element.hasActor()) { 
24439        for (Consent.ExceptActorComponent e : element.getActor()) 
24440          composeConsentExceptActorComponent("actor", e);
24441      }
24442      if (element.hasAction()) { 
24443        for (CodeableConcept e : element.getAction()) 
24444          composeCodeableConcept("action", e);
24445      }
24446      if (element.hasSecurityLabel()) { 
24447        for (Coding e : element.getSecurityLabel()) 
24448          composeCoding("securityLabel", e);
24449      }
24450      if (element.hasPurpose()) { 
24451        for (Coding e : element.getPurpose()) 
24452          composeCoding("purpose", e);
24453      }
24454      if (element.hasClass_()) { 
24455        for (Coding e : element.getClass_()) 
24456          composeCoding("class", e);
24457      }
24458      if (element.hasCode()) { 
24459        for (Coding e : element.getCode()) 
24460          composeCoding("code", e);
24461      }
24462      if (element.hasDataPeriod()) {
24463        composePeriod("dataPeriod", element.getDataPeriod());
24464      }
24465      if (element.hasData()) { 
24466        for (Consent.ExceptDataComponent e : element.getData()) 
24467          composeConsentExceptDataComponent("data", e);
24468      }
24469  }
24470
24471  protected void composeConsentExceptActorComponent(String name, Consent.ExceptActorComponent element) throws IOException {
24472    if (element != null) {
24473      composeElementAttributes(element);
24474      xml.enter(FHIR_NS, name);
24475      composeConsentExceptActorComponentElements(element);
24476      composeElementClose(element);
24477      xml.exit(FHIR_NS, name);
24478    }
24479  }
24480
24481  protected void composeConsentExceptActorComponentElements(Consent.ExceptActorComponent element) throws IOException {
24482      composeBackboneElements(element);
24483      if (element.hasRole()) {
24484        composeCodeableConcept("role", element.getRole());
24485      }
24486      if (element.hasReference()) {
24487        composeReference("reference", element.getReference());
24488      }
24489  }
24490
24491  protected void composeConsentExceptDataComponent(String name, Consent.ExceptDataComponent element) throws IOException {
24492    if (element != null) {
24493      composeElementAttributes(element);
24494      xml.enter(FHIR_NS, name);
24495      composeConsentExceptDataComponentElements(element);
24496      composeElementClose(element);
24497      xml.exit(FHIR_NS, name);
24498    }
24499  }
24500
24501  protected void composeConsentExceptDataComponentElements(Consent.ExceptDataComponent element) throws IOException {
24502      composeBackboneElements(element);
24503      if (element.hasMeaningElement())
24504        composeEnumeration("meaning", element.getMeaningElement(), new Consent.ConsentDataMeaningEnumFactory());
24505      if (element.hasReference()) {
24506        composeReference("reference", element.getReference());
24507      }
24508  }
24509
24510  protected void composeContract(String name, Contract element) throws IOException {
24511    if (element != null) {
24512      composeDomainResourceAttributes(element);
24513      xml.enter(FHIR_NS, name);
24514      composeContractElements(element);
24515      composeElementClose(element);
24516      xml.exit(FHIR_NS, name);
24517    }
24518  }
24519
24520  protected void composeContractElements(Contract element) throws IOException {
24521      composeDomainResourceElements(element);
24522      if (element.hasIdentifier()) {
24523        composeIdentifier("identifier", element.getIdentifier());
24524      }
24525      if (element.hasStatusElement())
24526        composeEnumeration("status", element.getStatusElement(), new Contract.ContractStatusEnumFactory());
24527      if (element.hasIssuedElement()) {
24528        composeDateTime("issued", element.getIssuedElement());
24529      }
24530      if (element.hasApplies()) {
24531        composePeriod("applies", element.getApplies());
24532      }
24533      if (element.hasSubject()) { 
24534        for (Reference e : element.getSubject()) 
24535          composeReference("subject", e);
24536      }
24537      if (element.hasTopic()) { 
24538        for (Reference e : element.getTopic()) 
24539          composeReference("topic", e);
24540      }
24541      if (element.hasAuthority()) { 
24542        for (Reference e : element.getAuthority()) 
24543          composeReference("authority", e);
24544      }
24545      if (element.hasDomain()) { 
24546        for (Reference e : element.getDomain()) 
24547          composeReference("domain", e);
24548      }
24549      if (element.hasType()) {
24550        composeCodeableConcept("type", element.getType());
24551      }
24552      if (element.hasSubType()) { 
24553        for (CodeableConcept e : element.getSubType()) 
24554          composeCodeableConcept("subType", e);
24555      }
24556      if (element.hasAction()) { 
24557        for (CodeableConcept e : element.getAction()) 
24558          composeCodeableConcept("action", e);
24559      }
24560      if (element.hasActionReason()) { 
24561        for (CodeableConcept e : element.getActionReason()) 
24562          composeCodeableConcept("actionReason", e);
24563      }
24564      if (element.hasDecisionType()) {
24565        composeCodeableConcept("decisionType", element.getDecisionType());
24566      }
24567      if (element.hasContentDerivative()) {
24568        composeCodeableConcept("contentDerivative", element.getContentDerivative());
24569      }
24570      if (element.hasSecurityLabel()) { 
24571        for (Coding e : element.getSecurityLabel()) 
24572          composeCoding("securityLabel", e);
24573      }
24574      if (element.hasAgent()) { 
24575        for (Contract.AgentComponent e : element.getAgent()) 
24576          composeContractAgentComponent("agent", e);
24577      }
24578      if (element.hasSigner()) { 
24579        for (Contract.SignatoryComponent e : element.getSigner()) 
24580          composeContractSignatoryComponent("signer", e);
24581      }
24582      if (element.hasValuedItem()) { 
24583        for (Contract.ValuedItemComponent e : element.getValuedItem()) 
24584          composeContractValuedItemComponent("valuedItem", e);
24585      }
24586      if (element.hasTerm()) { 
24587        for (Contract.TermComponent e : element.getTerm()) 
24588          composeContractTermComponent("term", e);
24589      }
24590      if (element.hasBinding()) {
24591        composeType("binding", element.getBinding());
24592      }      if (element.hasFriendly()) { 
24593        for (Contract.FriendlyLanguageComponent e : element.getFriendly()) 
24594          composeContractFriendlyLanguageComponent("friendly", e);
24595      }
24596      if (element.hasLegal()) { 
24597        for (Contract.LegalLanguageComponent e : element.getLegal()) 
24598          composeContractLegalLanguageComponent("legal", e);
24599      }
24600      if (element.hasRule()) { 
24601        for (Contract.ComputableLanguageComponent e : element.getRule()) 
24602          composeContractComputableLanguageComponent("rule", e);
24603      }
24604  }
24605
24606  protected void composeContractAgentComponent(String name, Contract.AgentComponent element) throws IOException {
24607    if (element != null) {
24608      composeElementAttributes(element);
24609      xml.enter(FHIR_NS, name);
24610      composeContractAgentComponentElements(element);
24611      composeElementClose(element);
24612      xml.exit(FHIR_NS, name);
24613    }
24614  }
24615
24616  protected void composeContractAgentComponentElements(Contract.AgentComponent element) throws IOException {
24617      composeBackboneElements(element);
24618      if (element.hasActor()) {
24619        composeReference("actor", element.getActor());
24620      }
24621      if (element.hasRole()) { 
24622        for (CodeableConcept e : element.getRole()) 
24623          composeCodeableConcept("role", e);
24624      }
24625  }
24626
24627  protected void composeContractSignatoryComponent(String name, Contract.SignatoryComponent element) throws IOException {
24628    if (element != null) {
24629      composeElementAttributes(element);
24630      xml.enter(FHIR_NS, name);
24631      composeContractSignatoryComponentElements(element);
24632      composeElementClose(element);
24633      xml.exit(FHIR_NS, name);
24634    }
24635  }
24636
24637  protected void composeContractSignatoryComponentElements(Contract.SignatoryComponent element) throws IOException {
24638      composeBackboneElements(element);
24639      if (element.hasType()) {
24640        composeCoding("type", element.getType());
24641      }
24642      if (element.hasParty()) {
24643        composeReference("party", element.getParty());
24644      }
24645      if (element.hasSignature()) { 
24646        for (Signature e : element.getSignature()) 
24647          composeSignature("signature", e);
24648      }
24649  }
24650
24651  protected void composeContractValuedItemComponent(String name, Contract.ValuedItemComponent element) throws IOException {
24652    if (element != null) {
24653      composeElementAttributes(element);
24654      xml.enter(FHIR_NS, name);
24655      composeContractValuedItemComponentElements(element);
24656      composeElementClose(element);
24657      xml.exit(FHIR_NS, name);
24658    }
24659  }
24660
24661  protected void composeContractValuedItemComponentElements(Contract.ValuedItemComponent element) throws IOException {
24662      composeBackboneElements(element);
24663      if (element.hasEntity()) {
24664        composeType("entity", element.getEntity());
24665      }      if (element.hasIdentifier()) {
24666        composeIdentifier("identifier", element.getIdentifier());
24667      }
24668      if (element.hasEffectiveTimeElement()) {
24669        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
24670      }
24671      if (element.hasQuantity()) {
24672        composeSimpleQuantity("quantity", element.getQuantity());
24673      }
24674      if (element.hasUnitPrice()) {
24675        composeMoney("unitPrice", element.getUnitPrice());
24676      }
24677      if (element.hasFactorElement()) {
24678        composeDecimal("factor", element.getFactorElement());
24679      }
24680      if (element.hasPointsElement()) {
24681        composeDecimal("points", element.getPointsElement());
24682      }
24683      if (element.hasNet()) {
24684        composeMoney("net", element.getNet());
24685      }
24686  }
24687
24688  protected void composeContractTermComponent(String name, Contract.TermComponent element) throws IOException {
24689    if (element != null) {
24690      composeElementAttributes(element);
24691      xml.enter(FHIR_NS, name);
24692      composeContractTermComponentElements(element);
24693      composeElementClose(element);
24694      xml.exit(FHIR_NS, name);
24695    }
24696  }
24697
24698  protected void composeContractTermComponentElements(Contract.TermComponent element) throws IOException {
24699      composeBackboneElements(element);
24700      if (element.hasIdentifier()) {
24701        composeIdentifier("identifier", element.getIdentifier());
24702      }
24703      if (element.hasIssuedElement()) {
24704        composeDateTime("issued", element.getIssuedElement());
24705      }
24706      if (element.hasApplies()) {
24707        composePeriod("applies", element.getApplies());
24708      }
24709      if (element.hasType()) {
24710        composeCodeableConcept("type", element.getType());
24711      }
24712      if (element.hasSubType()) {
24713        composeCodeableConcept("subType", element.getSubType());
24714      }
24715      if (element.hasTopic()) { 
24716        for (Reference e : element.getTopic()) 
24717          composeReference("topic", e);
24718      }
24719      if (element.hasAction()) { 
24720        for (CodeableConcept e : element.getAction()) 
24721          composeCodeableConcept("action", e);
24722      }
24723      if (element.hasActionReason()) { 
24724        for (CodeableConcept e : element.getActionReason()) 
24725          composeCodeableConcept("actionReason", e);
24726      }
24727      if (element.hasSecurityLabel()) { 
24728        for (Coding e : element.getSecurityLabel()) 
24729          composeCoding("securityLabel", e);
24730      }
24731      if (element.hasAgent()) { 
24732        for (Contract.TermAgentComponent e : element.getAgent()) 
24733          composeContractTermAgentComponent("agent", e);
24734      }
24735      if (element.hasTextElement()) {
24736        composeString("text", element.getTextElement());
24737      }
24738      if (element.hasValuedItem()) { 
24739        for (Contract.TermValuedItemComponent e : element.getValuedItem()) 
24740          composeContractTermValuedItemComponent("valuedItem", e);
24741      }
24742      if (element.hasGroup()) { 
24743        for (Contract.TermComponent e : element.getGroup()) 
24744          composeContractTermComponent("group", e);
24745      }
24746  }
24747
24748  protected void composeContractTermAgentComponent(String name, Contract.TermAgentComponent element) throws IOException {
24749    if (element != null) {
24750      composeElementAttributes(element);
24751      xml.enter(FHIR_NS, name);
24752      composeContractTermAgentComponentElements(element);
24753      composeElementClose(element);
24754      xml.exit(FHIR_NS, name);
24755    }
24756  }
24757
24758  protected void composeContractTermAgentComponentElements(Contract.TermAgentComponent element) throws IOException {
24759      composeBackboneElements(element);
24760      if (element.hasActor()) {
24761        composeReference("actor", element.getActor());
24762      }
24763      if (element.hasRole()) { 
24764        for (CodeableConcept e : element.getRole()) 
24765          composeCodeableConcept("role", e);
24766      }
24767  }
24768
24769  protected void composeContractTermValuedItemComponent(String name, Contract.TermValuedItemComponent element) throws IOException {
24770    if (element != null) {
24771      composeElementAttributes(element);
24772      xml.enter(FHIR_NS, name);
24773      composeContractTermValuedItemComponentElements(element);
24774      composeElementClose(element);
24775      xml.exit(FHIR_NS, name);
24776    }
24777  }
24778
24779  protected void composeContractTermValuedItemComponentElements(Contract.TermValuedItemComponent element) throws IOException {
24780      composeBackboneElements(element);
24781      if (element.hasEntity()) {
24782        composeType("entity", element.getEntity());
24783      }      if (element.hasIdentifier()) {
24784        composeIdentifier("identifier", element.getIdentifier());
24785      }
24786      if (element.hasEffectiveTimeElement()) {
24787        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
24788      }
24789      if (element.hasQuantity()) {
24790        composeSimpleQuantity("quantity", element.getQuantity());
24791      }
24792      if (element.hasUnitPrice()) {
24793        composeMoney("unitPrice", element.getUnitPrice());
24794      }
24795      if (element.hasFactorElement()) {
24796        composeDecimal("factor", element.getFactorElement());
24797      }
24798      if (element.hasPointsElement()) {
24799        composeDecimal("points", element.getPointsElement());
24800      }
24801      if (element.hasNet()) {
24802        composeMoney("net", element.getNet());
24803      }
24804  }
24805
24806  protected void composeContractFriendlyLanguageComponent(String name, Contract.FriendlyLanguageComponent element) throws IOException {
24807    if (element != null) {
24808      composeElementAttributes(element);
24809      xml.enter(FHIR_NS, name);
24810      composeContractFriendlyLanguageComponentElements(element);
24811      composeElementClose(element);
24812      xml.exit(FHIR_NS, name);
24813    }
24814  }
24815
24816  protected void composeContractFriendlyLanguageComponentElements(Contract.FriendlyLanguageComponent element) throws IOException {
24817      composeBackboneElements(element);
24818      if (element.hasContent()) {
24819        composeType("content", element.getContent());
24820      }  }
24821
24822  protected void composeContractLegalLanguageComponent(String name, Contract.LegalLanguageComponent element) throws IOException {
24823    if (element != null) {
24824      composeElementAttributes(element);
24825      xml.enter(FHIR_NS, name);
24826      composeContractLegalLanguageComponentElements(element);
24827      composeElementClose(element);
24828      xml.exit(FHIR_NS, name);
24829    }
24830  }
24831
24832  protected void composeContractLegalLanguageComponentElements(Contract.LegalLanguageComponent element) throws IOException {
24833      composeBackboneElements(element);
24834      if (element.hasContent()) {
24835        composeType("content", element.getContent());
24836      }  }
24837
24838  protected void composeContractComputableLanguageComponent(String name, Contract.ComputableLanguageComponent element) throws IOException {
24839    if (element != null) {
24840      composeElementAttributes(element);
24841      xml.enter(FHIR_NS, name);
24842      composeContractComputableLanguageComponentElements(element);
24843      composeElementClose(element);
24844      xml.exit(FHIR_NS, name);
24845    }
24846  }
24847
24848  protected void composeContractComputableLanguageComponentElements(Contract.ComputableLanguageComponent element) throws IOException {
24849      composeBackboneElements(element);
24850      if (element.hasContent()) {
24851        composeType("content", element.getContent());
24852      }  }
24853
24854  protected void composeCoverage(String name, Coverage element) throws IOException {
24855    if (element != null) {
24856      composeDomainResourceAttributes(element);
24857      xml.enter(FHIR_NS, name);
24858      composeCoverageElements(element);
24859      composeElementClose(element);
24860      xml.exit(FHIR_NS, name);
24861    }
24862  }
24863
24864  protected void composeCoverageElements(Coverage element) throws IOException {
24865      composeDomainResourceElements(element);
24866      if (element.hasIdentifier()) { 
24867        for (Identifier e : element.getIdentifier()) 
24868          composeIdentifier("identifier", e);
24869      }
24870      if (element.hasStatusElement())
24871        composeEnumeration("status", element.getStatusElement(), new Coverage.CoverageStatusEnumFactory());
24872      if (element.hasType()) {
24873        composeCodeableConcept("type", element.getType());
24874      }
24875      if (element.hasPolicyHolder()) {
24876        composeReference("policyHolder", element.getPolicyHolder());
24877      }
24878      if (element.hasSubscriber()) {
24879        composeReference("subscriber", element.getSubscriber());
24880      }
24881      if (element.hasSubscriberIdElement()) {
24882        composeString("subscriberId", element.getSubscriberIdElement());
24883      }
24884      if (element.hasBeneficiary()) {
24885        composeReference("beneficiary", element.getBeneficiary());
24886      }
24887      if (element.hasRelationship()) {
24888        composeCodeableConcept("relationship", element.getRelationship());
24889      }
24890      if (element.hasPeriod()) {
24891        composePeriod("period", element.getPeriod());
24892      }
24893      if (element.hasPayor()) { 
24894        for (Reference e : element.getPayor()) 
24895          composeReference("payor", e);
24896      }
24897      if (element.hasGrouping()) {
24898        composeCoverageGroupComponent("grouping", element.getGrouping());
24899      }
24900      if (element.hasDependentElement()) {
24901        composeString("dependent", element.getDependentElement());
24902      }
24903      if (element.hasSequenceElement()) {
24904        composeString("sequence", element.getSequenceElement());
24905      }
24906      if (element.hasOrderElement()) {
24907        composePositiveInt("order", element.getOrderElement());
24908      }
24909      if (element.hasNetworkElement()) {
24910        composeString("network", element.getNetworkElement());
24911      }
24912      if (element.hasContract()) { 
24913        for (Reference e : element.getContract()) 
24914          composeReference("contract", e);
24915      }
24916  }
24917
24918  protected void composeCoverageGroupComponent(String name, Coverage.GroupComponent element) throws IOException {
24919    if (element != null) {
24920      composeElementAttributes(element);
24921      xml.enter(FHIR_NS, name);
24922      composeCoverageGroupComponentElements(element);
24923      composeElementClose(element);
24924      xml.exit(FHIR_NS, name);
24925    }
24926  }
24927
24928  protected void composeCoverageGroupComponentElements(Coverage.GroupComponent element) throws IOException {
24929      composeBackboneElements(element);
24930      if (element.hasGroupElement()) {
24931        composeString("group", element.getGroupElement());
24932      }
24933      if (element.hasGroupDisplayElement()) {
24934        composeString("groupDisplay", element.getGroupDisplayElement());
24935      }
24936      if (element.hasSubGroupElement()) {
24937        composeString("subGroup", element.getSubGroupElement());
24938      }
24939      if (element.hasSubGroupDisplayElement()) {
24940        composeString("subGroupDisplay", element.getSubGroupDisplayElement());
24941      }
24942      if (element.hasPlanElement()) {
24943        composeString("plan", element.getPlanElement());
24944      }
24945      if (element.hasPlanDisplayElement()) {
24946        composeString("planDisplay", element.getPlanDisplayElement());
24947      }
24948      if (element.hasSubPlanElement()) {
24949        composeString("subPlan", element.getSubPlanElement());
24950      }
24951      if (element.hasSubPlanDisplayElement()) {
24952        composeString("subPlanDisplay", element.getSubPlanDisplayElement());
24953      }
24954      if (element.hasClass_Element()) {
24955        composeString("class", element.getClass_Element());
24956      }
24957      if (element.hasClassDisplayElement()) {
24958        composeString("classDisplay", element.getClassDisplayElement());
24959      }
24960      if (element.hasSubClassElement()) {
24961        composeString("subClass", element.getSubClassElement());
24962      }
24963      if (element.hasSubClassDisplayElement()) {
24964        composeString("subClassDisplay", element.getSubClassDisplayElement());
24965      }
24966  }
24967
24968  protected void composeDataElement(String name, DataElement element) throws IOException {
24969    if (element != null) {
24970      composeDomainResourceAttributes(element);
24971      xml.enter(FHIR_NS, name);
24972      composeDataElementElements(element);
24973      composeElementClose(element);
24974      xml.exit(FHIR_NS, name);
24975    }
24976  }
24977
24978  protected void composeDataElementElements(DataElement element) throws IOException {
24979      composeDomainResourceElements(element);
24980      if (element.hasUrlElement()) {
24981        composeUri("url", element.getUrlElement());
24982      }
24983      if (element.hasIdentifier()) { 
24984        for (Identifier e : element.getIdentifier()) 
24985          composeIdentifier("identifier", e);
24986      }
24987      if (element.hasVersionElement()) {
24988        composeString("version", element.getVersionElement());
24989      }
24990      if (element.hasStatusElement())
24991        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
24992      if (element.hasExperimentalElement()) {
24993        composeBoolean("experimental", element.getExperimentalElement());
24994      }
24995      if (element.hasDateElement()) {
24996        composeDateTime("date", element.getDateElement());
24997      }
24998      if (element.hasPublisherElement()) {
24999        composeString("publisher", element.getPublisherElement());
25000      }
25001      if (element.hasNameElement()) {
25002        composeString("name", element.getNameElement());
25003      }
25004      if (element.hasTitleElement()) {
25005        composeString("title", element.getTitleElement());
25006      }
25007      if (element.hasContact()) { 
25008        for (ContactDetail e : element.getContact()) 
25009          composeContactDetail("contact", e);
25010      }
25011      if (element.hasUseContext()) { 
25012        for (UsageContext e : element.getUseContext()) 
25013          composeUsageContext("useContext", e);
25014      }
25015      if (element.hasJurisdiction()) { 
25016        for (CodeableConcept e : element.getJurisdiction()) 
25017          composeCodeableConcept("jurisdiction", e);
25018      }
25019      if (element.hasCopyrightElement()) {
25020        composeMarkdown("copyright", element.getCopyrightElement());
25021      }
25022      if (element.hasStringencyElement())
25023        composeEnumeration("stringency", element.getStringencyElement(), new DataElement.DataElementStringencyEnumFactory());
25024      if (element.hasMapping()) { 
25025        for (DataElement.DataElementMappingComponent e : element.getMapping()) 
25026          composeDataElementDataElementMappingComponent("mapping", e);
25027      }
25028      if (element.hasElement()) { 
25029        for (ElementDefinition e : element.getElement()) 
25030          composeElementDefinition("element", e);
25031      }
25032  }
25033
25034  protected void composeDataElementDataElementMappingComponent(String name, DataElement.DataElementMappingComponent element) throws IOException {
25035    if (element != null) {
25036      composeElementAttributes(element);
25037      xml.enter(FHIR_NS, name);
25038      composeDataElementDataElementMappingComponentElements(element);
25039      composeElementClose(element);
25040      xml.exit(FHIR_NS, name);
25041    }
25042  }
25043
25044  protected void composeDataElementDataElementMappingComponentElements(DataElement.DataElementMappingComponent element) throws IOException {
25045      composeBackboneElements(element);
25046      if (element.hasIdentityElement()) {
25047        composeId("identity", element.getIdentityElement());
25048      }
25049      if (element.hasUriElement()) {
25050        composeUri("uri", element.getUriElement());
25051      }
25052      if (element.hasNameElement()) {
25053        composeString("name", element.getNameElement());
25054      }
25055      if (element.hasCommentElement()) {
25056        composeString("comment", element.getCommentElement());
25057      }
25058  }
25059
25060  protected void composeDetectedIssue(String name, DetectedIssue element) throws IOException {
25061    if (element != null) {
25062      composeDomainResourceAttributes(element);
25063      xml.enter(FHIR_NS, name);
25064      composeDetectedIssueElements(element);
25065      composeElementClose(element);
25066      xml.exit(FHIR_NS, name);
25067    }
25068  }
25069
25070  protected void composeDetectedIssueElements(DetectedIssue element) throws IOException {
25071      composeDomainResourceElements(element);
25072      if (element.hasIdentifier()) {
25073        composeIdentifier("identifier", element.getIdentifier());
25074      }
25075      if (element.hasStatusElement())
25076        composeEnumeration("status", element.getStatusElement(), new DetectedIssue.DetectedIssueStatusEnumFactory());
25077      if (element.hasCategory()) {
25078        composeCodeableConcept("category", element.getCategory());
25079      }
25080      if (element.hasSeverityElement())
25081        composeEnumeration("severity", element.getSeverityElement(), new DetectedIssue.DetectedIssueSeverityEnumFactory());
25082      if (element.hasPatient()) {
25083        composeReference("patient", element.getPatient());
25084      }
25085      if (element.hasDateElement()) {
25086        composeDateTime("date", element.getDateElement());
25087      }
25088      if (element.hasAuthor()) {
25089        composeReference("author", element.getAuthor());
25090      }
25091      if (element.hasImplicated()) { 
25092        for (Reference e : element.getImplicated()) 
25093          composeReference("implicated", e);
25094      }
25095      if (element.hasDetailElement()) {
25096        composeString("detail", element.getDetailElement());
25097      }
25098      if (element.hasReferenceElement()) {
25099        composeUri("reference", element.getReferenceElement());
25100      }
25101      if (element.hasMitigation()) { 
25102        for (DetectedIssue.DetectedIssueMitigationComponent e : element.getMitigation()) 
25103          composeDetectedIssueDetectedIssueMitigationComponent("mitigation", e);
25104      }
25105  }
25106
25107  protected void composeDetectedIssueDetectedIssueMitigationComponent(String name, DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
25108    if (element != null) {
25109      composeElementAttributes(element);
25110      xml.enter(FHIR_NS, name);
25111      composeDetectedIssueDetectedIssueMitigationComponentElements(element);
25112      composeElementClose(element);
25113      xml.exit(FHIR_NS, name);
25114    }
25115  }
25116
25117  protected void composeDetectedIssueDetectedIssueMitigationComponentElements(DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
25118      composeBackboneElements(element);
25119      if (element.hasAction()) {
25120        composeCodeableConcept("action", element.getAction());
25121      }
25122      if (element.hasDateElement()) {
25123        composeDateTime("date", element.getDateElement());
25124      }
25125      if (element.hasAuthor()) {
25126        composeReference("author", element.getAuthor());
25127      }
25128  }
25129
25130  protected void composeDevice(String name, Device element) throws IOException {
25131    if (element != null) {
25132      composeDomainResourceAttributes(element);
25133      xml.enter(FHIR_NS, name);
25134      composeDeviceElements(element);
25135      composeElementClose(element);
25136      xml.exit(FHIR_NS, name);
25137    }
25138  }
25139
25140  protected void composeDeviceElements(Device element) throws IOException {
25141      composeDomainResourceElements(element);
25142      if (element.hasIdentifier()) { 
25143        for (Identifier e : element.getIdentifier()) 
25144          composeIdentifier("identifier", e);
25145      }
25146      if (element.hasUdi()) {
25147        composeDeviceDeviceUdiComponent("udi", element.getUdi());
25148      }
25149      if (element.hasStatusElement())
25150        composeEnumeration("status", element.getStatusElement(), new Device.FHIRDeviceStatusEnumFactory());
25151      if (element.hasType()) {
25152        composeCodeableConcept("type", element.getType());
25153      }
25154      if (element.hasLotNumberElement()) {
25155        composeString("lotNumber", element.getLotNumberElement());
25156      }
25157      if (element.hasManufacturerElement()) {
25158        composeString("manufacturer", element.getManufacturerElement());
25159      }
25160      if (element.hasManufactureDateElement()) {
25161        composeDateTime("manufactureDate", element.getManufactureDateElement());
25162      }
25163      if (element.hasExpirationDateElement()) {
25164        composeDateTime("expirationDate", element.getExpirationDateElement());
25165      }
25166      if (element.hasModelElement()) {
25167        composeString("model", element.getModelElement());
25168      }
25169      if (element.hasVersionElement()) {
25170        composeString("version", element.getVersionElement());
25171      }
25172      if (element.hasPatient()) {
25173        composeReference("patient", element.getPatient());
25174      }
25175      if (element.hasOwner()) {
25176        composeReference("owner", element.getOwner());
25177      }
25178      if (element.hasContact()) { 
25179        for (ContactPoint e : element.getContact()) 
25180          composeContactPoint("contact", e);
25181      }
25182      if (element.hasLocation()) {
25183        composeReference("location", element.getLocation());
25184      }
25185      if (element.hasUrlElement()) {
25186        composeUri("url", element.getUrlElement());
25187      }
25188      if (element.hasNote()) { 
25189        for (Annotation e : element.getNote()) 
25190          composeAnnotation("note", e);
25191      }
25192      if (element.hasSafety()) { 
25193        for (CodeableConcept e : element.getSafety()) 
25194          composeCodeableConcept("safety", e);
25195      }
25196  }
25197
25198  protected void composeDeviceDeviceUdiComponent(String name, Device.DeviceUdiComponent element) throws IOException {
25199    if (element != null) {
25200      composeElementAttributes(element);
25201      xml.enter(FHIR_NS, name);
25202      composeDeviceDeviceUdiComponentElements(element);
25203      composeElementClose(element);
25204      xml.exit(FHIR_NS, name);
25205    }
25206  }
25207
25208  protected void composeDeviceDeviceUdiComponentElements(Device.DeviceUdiComponent element) throws IOException {
25209      composeBackboneElements(element);
25210      if (element.hasDeviceIdentifierElement()) {
25211        composeString("deviceIdentifier", element.getDeviceIdentifierElement());
25212      }
25213      if (element.hasNameElement()) {
25214        composeString("name", element.getNameElement());
25215      }
25216      if (element.hasJurisdictionElement()) {
25217        composeUri("jurisdiction", element.getJurisdictionElement());
25218      }
25219      if (element.hasCarrierHRFElement()) {
25220        composeString("carrierHRF", element.getCarrierHRFElement());
25221      }
25222      if (element.hasCarrierAIDCElement()) {
25223        composeBase64Binary("carrierAIDC", element.getCarrierAIDCElement());
25224      }
25225      if (element.hasIssuerElement()) {
25226        composeUri("issuer", element.getIssuerElement());
25227      }
25228      if (element.hasEntryTypeElement())
25229        composeEnumeration("entryType", element.getEntryTypeElement(), new Device.UDIEntryTypeEnumFactory());
25230  }
25231
25232  protected void composeDeviceComponent(String name, DeviceComponent element) throws IOException {
25233    if (element != null) {
25234      composeDomainResourceAttributes(element);
25235      xml.enter(FHIR_NS, name);
25236      composeDeviceComponentElements(element);
25237      composeElementClose(element);
25238      xml.exit(FHIR_NS, name);
25239    }
25240  }
25241
25242  protected void composeDeviceComponentElements(DeviceComponent element) throws IOException {
25243      composeDomainResourceElements(element);
25244      if (element.hasIdentifier()) {
25245        composeIdentifier("identifier", element.getIdentifier());
25246      }
25247      if (element.hasType()) {
25248        composeCodeableConcept("type", element.getType());
25249      }
25250      if (element.hasLastSystemChangeElement()) {
25251        composeInstant("lastSystemChange", element.getLastSystemChangeElement());
25252      }
25253      if (element.hasSource()) {
25254        composeReference("source", element.getSource());
25255      }
25256      if (element.hasParent()) {
25257        composeReference("parent", element.getParent());
25258      }
25259      if (element.hasOperationalStatus()) { 
25260        for (CodeableConcept e : element.getOperationalStatus()) 
25261          composeCodeableConcept("operationalStatus", e);
25262      }
25263      if (element.hasParameterGroup()) {
25264        composeCodeableConcept("parameterGroup", element.getParameterGroup());
25265      }
25266      if (element.hasMeasurementPrincipleElement())
25267        composeEnumeration("measurementPrinciple", element.getMeasurementPrincipleElement(), new DeviceComponent.MeasmntPrincipleEnumFactory());
25268      if (element.hasProductionSpecification()) { 
25269        for (DeviceComponent.DeviceComponentProductionSpecificationComponent e : element.getProductionSpecification()) 
25270          composeDeviceComponentDeviceComponentProductionSpecificationComponent("productionSpecification", e);
25271      }
25272      if (element.hasLanguageCode()) {
25273        composeCodeableConcept("languageCode", element.getLanguageCode());
25274      }
25275  }
25276
25277  protected void composeDeviceComponentDeviceComponentProductionSpecificationComponent(String name, DeviceComponent.DeviceComponentProductionSpecificationComponent element) throws IOException {
25278    if (element != null) {
25279      composeElementAttributes(element);
25280      xml.enter(FHIR_NS, name);
25281      composeDeviceComponentDeviceComponentProductionSpecificationComponentElements(element);
25282      composeElementClose(element);
25283      xml.exit(FHIR_NS, name);
25284    }
25285  }
25286
25287  protected void composeDeviceComponentDeviceComponentProductionSpecificationComponentElements(DeviceComponent.DeviceComponentProductionSpecificationComponent element) throws IOException {
25288      composeBackboneElements(element);
25289      if (element.hasSpecType()) {
25290        composeCodeableConcept("specType", element.getSpecType());
25291      }
25292      if (element.hasComponentId()) {
25293        composeIdentifier("componentId", element.getComponentId());
25294      }
25295      if (element.hasProductionSpecElement()) {
25296        composeString("productionSpec", element.getProductionSpecElement());
25297      }
25298  }
25299
25300  protected void composeDeviceMetric(String name, DeviceMetric element) throws IOException {
25301    if (element != null) {
25302      composeDomainResourceAttributes(element);
25303      xml.enter(FHIR_NS, name);
25304      composeDeviceMetricElements(element);
25305      composeElementClose(element);
25306      xml.exit(FHIR_NS, name);
25307    }
25308  }
25309
25310  protected void composeDeviceMetricElements(DeviceMetric element) throws IOException {
25311      composeDomainResourceElements(element);
25312      if (element.hasIdentifier()) {
25313        composeIdentifier("identifier", element.getIdentifier());
25314      }
25315      if (element.hasType()) {
25316        composeCodeableConcept("type", element.getType());
25317      }
25318      if (element.hasUnit()) {
25319        composeCodeableConcept("unit", element.getUnit());
25320      }
25321      if (element.hasSource()) {
25322        composeReference("source", element.getSource());
25323      }
25324      if (element.hasParent()) {
25325        composeReference("parent", element.getParent());
25326      }
25327      if (element.hasOperationalStatusElement())
25328        composeEnumeration("operationalStatus", element.getOperationalStatusElement(), new DeviceMetric.DeviceMetricOperationalStatusEnumFactory());
25329      if (element.hasColorElement())
25330        composeEnumeration("color", element.getColorElement(), new DeviceMetric.DeviceMetricColorEnumFactory());
25331      if (element.hasCategoryElement())
25332        composeEnumeration("category", element.getCategoryElement(), new DeviceMetric.DeviceMetricCategoryEnumFactory());
25333      if (element.hasMeasurementPeriod()) {
25334        composeTiming("measurementPeriod", element.getMeasurementPeriod());
25335      }
25336      if (element.hasCalibration()) { 
25337        for (DeviceMetric.DeviceMetricCalibrationComponent e : element.getCalibration()) 
25338          composeDeviceMetricDeviceMetricCalibrationComponent("calibration", e);
25339      }
25340  }
25341
25342  protected void composeDeviceMetricDeviceMetricCalibrationComponent(String name, DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
25343    if (element != null) {
25344      composeElementAttributes(element);
25345      xml.enter(FHIR_NS, name);
25346      composeDeviceMetricDeviceMetricCalibrationComponentElements(element);
25347      composeElementClose(element);
25348      xml.exit(FHIR_NS, name);
25349    }
25350  }
25351
25352  protected void composeDeviceMetricDeviceMetricCalibrationComponentElements(DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
25353      composeBackboneElements(element);
25354      if (element.hasTypeElement())
25355        composeEnumeration("type", element.getTypeElement(), new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory());
25356      if (element.hasStateElement())
25357        composeEnumeration("state", element.getStateElement(), new DeviceMetric.DeviceMetricCalibrationStateEnumFactory());
25358      if (element.hasTimeElement()) {
25359        composeInstant("time", element.getTimeElement());
25360      }
25361  }
25362
25363  protected void composeDeviceRequest(String name, DeviceRequest element) throws IOException {
25364    if (element != null) {
25365      composeDomainResourceAttributes(element);
25366      xml.enter(FHIR_NS, name);
25367      composeDeviceRequestElements(element);
25368      composeElementClose(element);
25369      xml.exit(FHIR_NS, name);
25370    }
25371  }
25372
25373  protected void composeDeviceRequestElements(DeviceRequest element) throws IOException {
25374      composeDomainResourceElements(element);
25375      if (element.hasIdentifier()) { 
25376        for (Identifier e : element.getIdentifier()) 
25377          composeIdentifier("identifier", e);
25378      }
25379      if (element.hasDefinition()) { 
25380        for (Reference e : element.getDefinition()) 
25381          composeReference("definition", e);
25382      }
25383      if (element.hasBasedOn()) { 
25384        for (Reference e : element.getBasedOn()) 
25385          composeReference("basedOn", e);
25386      }
25387      if (element.hasPriorRequest()) { 
25388        for (Reference e : element.getPriorRequest()) 
25389          composeReference("priorRequest", e);
25390      }
25391      if (element.hasGroupIdentifier()) {
25392        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
25393      }
25394      if (element.hasStatusElement())
25395        composeEnumeration("status", element.getStatusElement(), new DeviceRequest.DeviceRequestStatusEnumFactory());
25396      if (element.hasIntent()) {
25397        composeCodeableConcept("intent", element.getIntent());
25398      }
25399      if (element.hasPriorityElement())
25400        composeEnumeration("priority", element.getPriorityElement(), new DeviceRequest.RequestPriorityEnumFactory());
25401      if (element.hasCode()) {
25402        composeType("code", element.getCode());
25403      }      if (element.hasSubject()) {
25404        composeReference("subject", element.getSubject());
25405      }
25406      if (element.hasContext()) {
25407        composeReference("context", element.getContext());
25408      }
25409      if (element.hasOccurrence()) {
25410        composeType("occurrence", element.getOccurrence());
25411      }      if (element.hasAuthoredOnElement()) {
25412        composeDateTime("authoredOn", element.getAuthoredOnElement());
25413      }
25414      if (element.hasRequester()) {
25415        composeDeviceRequestDeviceRequestRequesterComponent("requester", element.getRequester());
25416      }
25417      if (element.hasPerformerType()) {
25418        composeCodeableConcept("performerType", element.getPerformerType());
25419      }
25420      if (element.hasPerformer()) {
25421        composeReference("performer", element.getPerformer());
25422      }
25423      if (element.hasReasonCode()) { 
25424        for (CodeableConcept e : element.getReasonCode()) 
25425          composeCodeableConcept("reasonCode", e);
25426      }
25427      if (element.hasReasonReference()) { 
25428        for (Reference e : element.getReasonReference()) 
25429          composeReference("reasonReference", e);
25430      }
25431      if (element.hasSupportingInfo()) { 
25432        for (Reference e : element.getSupportingInfo()) 
25433          composeReference("supportingInfo", e);
25434      }
25435      if (element.hasNote()) { 
25436        for (Annotation e : element.getNote()) 
25437          composeAnnotation("note", e);
25438      }
25439      if (element.hasRelevantHistory()) { 
25440        for (Reference e : element.getRelevantHistory()) 
25441          composeReference("relevantHistory", e);
25442      }
25443  }
25444
25445  protected void composeDeviceRequestDeviceRequestRequesterComponent(String name, DeviceRequest.DeviceRequestRequesterComponent element) throws IOException {
25446    if (element != null) {
25447      composeElementAttributes(element);
25448      xml.enter(FHIR_NS, name);
25449      composeDeviceRequestDeviceRequestRequesterComponentElements(element);
25450      composeElementClose(element);
25451      xml.exit(FHIR_NS, name);
25452    }
25453  }
25454
25455  protected void composeDeviceRequestDeviceRequestRequesterComponentElements(DeviceRequest.DeviceRequestRequesterComponent element) throws IOException {
25456      composeBackboneElements(element);
25457      if (element.hasAgent()) {
25458        composeReference("agent", element.getAgent());
25459      }
25460      if (element.hasOnBehalfOf()) {
25461        composeReference("onBehalfOf", element.getOnBehalfOf());
25462      }
25463  }
25464
25465  protected void composeDeviceUseStatement(String name, DeviceUseStatement element) throws IOException {
25466    if (element != null) {
25467      composeDomainResourceAttributes(element);
25468      xml.enter(FHIR_NS, name);
25469      composeDeviceUseStatementElements(element);
25470      composeElementClose(element);
25471      xml.exit(FHIR_NS, name);
25472    }
25473  }
25474
25475  protected void composeDeviceUseStatementElements(DeviceUseStatement element) throws IOException {
25476      composeDomainResourceElements(element);
25477      if (element.hasIdentifier()) { 
25478        for (Identifier e : element.getIdentifier()) 
25479          composeIdentifier("identifier", e);
25480      }
25481      if (element.hasStatusElement())
25482        composeEnumeration("status", element.getStatusElement(), new DeviceUseStatement.DeviceUseStatementStatusEnumFactory());
25483      if (element.hasSubject()) {
25484        composeReference("subject", element.getSubject());
25485      }
25486      if (element.hasWhenUsed()) {
25487        composePeriod("whenUsed", element.getWhenUsed());
25488      }
25489      if (element.hasTiming()) {
25490        composeType("timing", element.getTiming());
25491      }      if (element.hasRecordedOnElement()) {
25492        composeDateTime("recordedOn", element.getRecordedOnElement());
25493      }
25494      if (element.hasSource()) {
25495        composeReference("source", element.getSource());
25496      }
25497      if (element.hasDevice()) {
25498        composeReference("device", element.getDevice());
25499      }
25500      if (element.hasIndication()) { 
25501        for (CodeableConcept e : element.getIndication()) 
25502          composeCodeableConcept("indication", e);
25503      }
25504      if (element.hasBodySite()) {
25505        composeCodeableConcept("bodySite", element.getBodySite());
25506      }
25507      if (element.hasNote()) { 
25508        for (Annotation e : element.getNote()) 
25509          composeAnnotation("note", e);
25510      }
25511  }
25512
25513  protected void composeDiagnosticReport(String name, DiagnosticReport element) throws IOException {
25514    if (element != null) {
25515      composeDomainResourceAttributes(element);
25516      xml.enter(FHIR_NS, name);
25517      composeDiagnosticReportElements(element);
25518      composeElementClose(element);
25519      xml.exit(FHIR_NS, name);
25520    }
25521  }
25522
25523  protected void composeDiagnosticReportElements(DiagnosticReport element) throws IOException {
25524      composeDomainResourceElements(element);
25525      if (element.hasIdentifier()) { 
25526        for (Identifier e : element.getIdentifier()) 
25527          composeIdentifier("identifier", e);
25528      }
25529      if (element.hasBasedOn()) { 
25530        for (Reference e : element.getBasedOn()) 
25531          composeReference("basedOn", e);
25532      }
25533      if (element.hasStatusElement())
25534        composeEnumeration("status", element.getStatusElement(), new DiagnosticReport.DiagnosticReportStatusEnumFactory());
25535      if (element.hasCategory()) {
25536        composeCodeableConcept("category", element.getCategory());
25537      }
25538      if (element.hasCode()) {
25539        composeCodeableConcept("code", element.getCode());
25540      }
25541      if (element.hasSubject()) {
25542        composeReference("subject", element.getSubject());
25543      }
25544      if (element.hasContext()) {
25545        composeReference("context", element.getContext());
25546      }
25547      if (element.hasEffective()) {
25548        composeType("effective", element.getEffective());
25549      }      if (element.hasIssuedElement()) {
25550        composeInstant("issued", element.getIssuedElement());
25551      }
25552      if (element.hasPerformer()) { 
25553        for (DiagnosticReport.DiagnosticReportPerformerComponent e : element.getPerformer()) 
25554          composeDiagnosticReportDiagnosticReportPerformerComponent("performer", e);
25555      }
25556      if (element.hasSpecimen()) { 
25557        for (Reference e : element.getSpecimen()) 
25558          composeReference("specimen", e);
25559      }
25560      if (element.hasResult()) { 
25561        for (Reference e : element.getResult()) 
25562          composeReference("result", e);
25563      }
25564      if (element.hasImagingStudy()) { 
25565        for (Reference e : element.getImagingStudy()) 
25566          composeReference("imagingStudy", e);
25567      }
25568      if (element.hasImage()) { 
25569        for (DiagnosticReport.DiagnosticReportImageComponent e : element.getImage()) 
25570          composeDiagnosticReportDiagnosticReportImageComponent("image", e);
25571      }
25572      if (element.hasConclusionElement()) {
25573        composeString("conclusion", element.getConclusionElement());
25574      }
25575      if (element.hasCodedDiagnosis()) { 
25576        for (CodeableConcept e : element.getCodedDiagnosis()) 
25577          composeCodeableConcept("codedDiagnosis", e);
25578      }
25579      if (element.hasPresentedForm()) { 
25580        for (Attachment e : element.getPresentedForm()) 
25581          composeAttachment("presentedForm", e);
25582      }
25583  }
25584
25585  protected void composeDiagnosticReportDiagnosticReportPerformerComponent(String name, DiagnosticReport.DiagnosticReportPerformerComponent element) throws IOException {
25586    if (element != null) {
25587      composeElementAttributes(element);
25588      xml.enter(FHIR_NS, name);
25589      composeDiagnosticReportDiagnosticReportPerformerComponentElements(element);
25590      composeElementClose(element);
25591      xml.exit(FHIR_NS, name);
25592    }
25593  }
25594
25595  protected void composeDiagnosticReportDiagnosticReportPerformerComponentElements(DiagnosticReport.DiagnosticReportPerformerComponent element) throws IOException {
25596      composeBackboneElements(element);
25597      if (element.hasRole()) {
25598        composeCodeableConcept("role", element.getRole());
25599      }
25600      if (element.hasActor()) {
25601        composeReference("actor", element.getActor());
25602      }
25603  }
25604
25605  protected void composeDiagnosticReportDiagnosticReportImageComponent(String name, DiagnosticReport.DiagnosticReportImageComponent element) throws IOException {
25606    if (element != null) {
25607      composeElementAttributes(element);
25608      xml.enter(FHIR_NS, name);
25609      composeDiagnosticReportDiagnosticReportImageComponentElements(element);
25610      composeElementClose(element);
25611      xml.exit(FHIR_NS, name);
25612    }
25613  }
25614
25615  protected void composeDiagnosticReportDiagnosticReportImageComponentElements(DiagnosticReport.DiagnosticReportImageComponent element) throws IOException {
25616      composeBackboneElements(element);
25617      if (element.hasCommentElement()) {
25618        composeString("comment", element.getCommentElement());
25619      }
25620      if (element.hasLink()) {
25621        composeReference("link", element.getLink());
25622      }
25623  }
25624
25625  protected void composeDocumentManifest(String name, DocumentManifest element) throws IOException {
25626    if (element != null) {
25627      composeDomainResourceAttributes(element);
25628      xml.enter(FHIR_NS, name);
25629      composeDocumentManifestElements(element);
25630      composeElementClose(element);
25631      xml.exit(FHIR_NS, name);
25632    }
25633  }
25634
25635  protected void composeDocumentManifestElements(DocumentManifest element) throws IOException {
25636      composeDomainResourceElements(element);
25637      if (element.hasMasterIdentifier()) {
25638        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
25639      }
25640      if (element.hasIdentifier()) { 
25641        for (Identifier e : element.getIdentifier()) 
25642          composeIdentifier("identifier", e);
25643      }
25644      if (element.hasStatusElement())
25645        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
25646      if (element.hasType()) {
25647        composeCodeableConcept("type", element.getType());
25648      }
25649      if (element.hasSubject()) {
25650        composeReference("subject", element.getSubject());
25651      }
25652      if (element.hasCreatedElement()) {
25653        composeDateTime("created", element.getCreatedElement());
25654      }
25655      if (element.hasAuthor()) { 
25656        for (Reference e : element.getAuthor()) 
25657          composeReference("author", e);
25658      }
25659      if (element.hasRecipient()) { 
25660        for (Reference e : element.getRecipient()) 
25661          composeReference("recipient", e);
25662      }
25663      if (element.hasSourceElement()) {
25664        composeUri("source", element.getSourceElement());
25665      }
25666      if (element.hasDescriptionElement()) {
25667        composeString("description", element.getDescriptionElement());
25668      }
25669      if (element.hasContent()) { 
25670        for (DocumentManifest.DocumentManifestContentComponent e : element.getContent()) 
25671          composeDocumentManifestDocumentManifestContentComponent("content", e);
25672      }
25673      if (element.hasRelated()) { 
25674        for (DocumentManifest.DocumentManifestRelatedComponent e : element.getRelated()) 
25675          composeDocumentManifestDocumentManifestRelatedComponent("related", e);
25676      }
25677  }
25678
25679  protected void composeDocumentManifestDocumentManifestContentComponent(String name, DocumentManifest.DocumentManifestContentComponent element) throws IOException {
25680    if (element != null) {
25681      composeElementAttributes(element);
25682      xml.enter(FHIR_NS, name);
25683      composeDocumentManifestDocumentManifestContentComponentElements(element);
25684      composeElementClose(element);
25685      xml.exit(FHIR_NS, name);
25686    }
25687  }
25688
25689  protected void composeDocumentManifestDocumentManifestContentComponentElements(DocumentManifest.DocumentManifestContentComponent element) throws IOException {
25690      composeBackboneElements(element);
25691      if (element.hasP()) {
25692        composeType("p", element.getP());
25693      }  }
25694
25695  protected void composeDocumentManifestDocumentManifestRelatedComponent(String name, DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
25696    if (element != null) {
25697      composeElementAttributes(element);
25698      xml.enter(FHIR_NS, name);
25699      composeDocumentManifestDocumentManifestRelatedComponentElements(element);
25700      composeElementClose(element);
25701      xml.exit(FHIR_NS, name);
25702    }
25703  }
25704
25705  protected void composeDocumentManifestDocumentManifestRelatedComponentElements(DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
25706      composeBackboneElements(element);
25707      if (element.hasIdentifier()) {
25708        composeIdentifier("identifier", element.getIdentifier());
25709      }
25710      if (element.hasRef()) {
25711        composeReference("ref", element.getRef());
25712      }
25713  }
25714
25715  protected void composeDocumentReference(String name, DocumentReference element) throws IOException {
25716    if (element != null) {
25717      composeDomainResourceAttributes(element);
25718      xml.enter(FHIR_NS, name);
25719      composeDocumentReferenceElements(element);
25720      composeElementClose(element);
25721      xml.exit(FHIR_NS, name);
25722    }
25723  }
25724
25725  protected void composeDocumentReferenceElements(DocumentReference element) throws IOException {
25726      composeDomainResourceElements(element);
25727      if (element.hasMasterIdentifier()) {
25728        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
25729      }
25730      if (element.hasIdentifier()) { 
25731        for (Identifier e : element.getIdentifier()) 
25732          composeIdentifier("identifier", e);
25733      }
25734      if (element.hasStatusElement())
25735        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
25736      if (element.hasDocStatusElement())
25737        composeEnumeration("docStatus", element.getDocStatusElement(), new DocumentReference.ReferredDocumentStatusEnumFactory());
25738      if (element.hasType()) {
25739        composeCodeableConcept("type", element.getType());
25740      }
25741      if (element.hasClass_()) {
25742        composeCodeableConcept("class", element.getClass_());
25743      }
25744      if (element.hasSubject()) {
25745        composeReference("subject", element.getSubject());
25746      }
25747      if (element.hasCreatedElement()) {
25748        composeDateTime("created", element.getCreatedElement());
25749      }
25750      if (element.hasIndexedElement()) {
25751        composeInstant("indexed", element.getIndexedElement());
25752      }
25753      if (element.hasAuthor()) { 
25754        for (Reference e : element.getAuthor()) 
25755          composeReference("author", e);
25756      }
25757      if (element.hasAuthenticator()) {
25758        composeReference("authenticator", element.getAuthenticator());
25759      }
25760      if (element.hasCustodian()) {
25761        composeReference("custodian", element.getCustodian());
25762      }
25763      if (element.hasRelatesTo()) { 
25764        for (DocumentReference.DocumentReferenceRelatesToComponent e : element.getRelatesTo()) 
25765          composeDocumentReferenceDocumentReferenceRelatesToComponent("relatesTo", e);
25766      }
25767      if (element.hasDescriptionElement()) {
25768        composeString("description", element.getDescriptionElement());
25769      }
25770      if (element.hasSecurityLabel()) { 
25771        for (CodeableConcept e : element.getSecurityLabel()) 
25772          composeCodeableConcept("securityLabel", e);
25773      }
25774      if (element.hasContent()) { 
25775        for (DocumentReference.DocumentReferenceContentComponent e : element.getContent()) 
25776          composeDocumentReferenceDocumentReferenceContentComponent("content", e);
25777      }
25778      if (element.hasContext()) {
25779        composeDocumentReferenceDocumentReferenceContextComponent("context", element.getContext());
25780      }
25781  }
25782
25783  protected void composeDocumentReferenceDocumentReferenceRelatesToComponent(String name, DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
25784    if (element != null) {
25785      composeElementAttributes(element);
25786      xml.enter(FHIR_NS, name);
25787      composeDocumentReferenceDocumentReferenceRelatesToComponentElements(element);
25788      composeElementClose(element);
25789      xml.exit(FHIR_NS, name);
25790    }
25791  }
25792
25793  protected void composeDocumentReferenceDocumentReferenceRelatesToComponentElements(DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
25794      composeBackboneElements(element);
25795      if (element.hasCodeElement())
25796        composeEnumeration("code", element.getCodeElement(), new DocumentReference.DocumentRelationshipTypeEnumFactory());
25797      if (element.hasTarget()) {
25798        composeReference("target", element.getTarget());
25799      }
25800  }
25801
25802  protected void composeDocumentReferenceDocumentReferenceContentComponent(String name, DocumentReference.DocumentReferenceContentComponent element) throws IOException {
25803    if (element != null) {
25804      composeElementAttributes(element);
25805      xml.enter(FHIR_NS, name);
25806      composeDocumentReferenceDocumentReferenceContentComponentElements(element);
25807      composeElementClose(element);
25808      xml.exit(FHIR_NS, name);
25809    }
25810  }
25811
25812  protected void composeDocumentReferenceDocumentReferenceContentComponentElements(DocumentReference.DocumentReferenceContentComponent element) throws IOException {
25813      composeBackboneElements(element);
25814      if (element.hasAttachment()) {
25815        composeAttachment("attachment", element.getAttachment());
25816      }
25817      if (element.hasFormat()) {
25818        composeCoding("format", element.getFormat());
25819      }
25820  }
25821
25822  protected void composeDocumentReferenceDocumentReferenceContextComponent(String name, DocumentReference.DocumentReferenceContextComponent element) throws IOException {
25823    if (element != null) {
25824      composeElementAttributes(element);
25825      xml.enter(FHIR_NS, name);
25826      composeDocumentReferenceDocumentReferenceContextComponentElements(element);
25827      composeElementClose(element);
25828      xml.exit(FHIR_NS, name);
25829    }
25830  }
25831
25832  protected void composeDocumentReferenceDocumentReferenceContextComponentElements(DocumentReference.DocumentReferenceContextComponent element) throws IOException {
25833      composeBackboneElements(element);
25834      if (element.hasEncounter()) {
25835        composeReference("encounter", element.getEncounter());
25836      }
25837      if (element.hasEvent()) { 
25838        for (CodeableConcept e : element.getEvent()) 
25839          composeCodeableConcept("event", e);
25840      }
25841      if (element.hasPeriod()) {
25842        composePeriod("period", element.getPeriod());
25843      }
25844      if (element.hasFacilityType()) {
25845        composeCodeableConcept("facilityType", element.getFacilityType());
25846      }
25847      if (element.hasPracticeSetting()) {
25848        composeCodeableConcept("practiceSetting", element.getPracticeSetting());
25849      }
25850      if (element.hasSourcePatientInfo()) {
25851        composeReference("sourcePatientInfo", element.getSourcePatientInfo());
25852      }
25853      if (element.hasRelated()) { 
25854        for (DocumentReference.DocumentReferenceContextRelatedComponent e : element.getRelated()) 
25855          composeDocumentReferenceDocumentReferenceContextRelatedComponent("related", e);
25856      }
25857  }
25858
25859  protected void composeDocumentReferenceDocumentReferenceContextRelatedComponent(String name, DocumentReference.DocumentReferenceContextRelatedComponent element) throws IOException {
25860    if (element != null) {
25861      composeElementAttributes(element);
25862      xml.enter(FHIR_NS, name);
25863      composeDocumentReferenceDocumentReferenceContextRelatedComponentElements(element);
25864      composeElementClose(element);
25865      xml.exit(FHIR_NS, name);
25866    }
25867  }
25868
25869  protected void composeDocumentReferenceDocumentReferenceContextRelatedComponentElements(DocumentReference.DocumentReferenceContextRelatedComponent element) throws IOException {
25870      composeBackboneElements(element);
25871      if (element.hasIdentifier()) {
25872        composeIdentifier("identifier", element.getIdentifier());
25873      }
25874      if (element.hasRef()) {
25875        composeReference("ref", element.getRef());
25876      }
25877  }
25878
25879  protected void composeEligibilityRequest(String name, EligibilityRequest element) throws IOException {
25880    if (element != null) {
25881      composeDomainResourceAttributes(element);
25882      xml.enter(FHIR_NS, name);
25883      composeEligibilityRequestElements(element);
25884      composeElementClose(element);
25885      xml.exit(FHIR_NS, name);
25886    }
25887  }
25888
25889  protected void composeEligibilityRequestElements(EligibilityRequest element) throws IOException {
25890      composeDomainResourceElements(element);
25891      if (element.hasIdentifier()) { 
25892        for (Identifier e : element.getIdentifier()) 
25893          composeIdentifier("identifier", e);
25894      }
25895      if (element.hasStatusElement())
25896        composeEnumeration("status", element.getStatusElement(), new EligibilityRequest.EligibilityRequestStatusEnumFactory());
25897      if (element.hasPriority()) {
25898        composeCodeableConcept("priority", element.getPriority());
25899      }
25900      if (element.hasPatient()) {
25901        composeReference("patient", element.getPatient());
25902      }
25903      if (element.hasServiced()) {
25904        composeType("serviced", element.getServiced());
25905      }      if (element.hasCreatedElement()) {
25906        composeDateTime("created", element.getCreatedElement());
25907      }
25908      if (element.hasEnterer()) {
25909        composeReference("enterer", element.getEnterer());
25910      }
25911      if (element.hasProvider()) {
25912        composeReference("provider", element.getProvider());
25913      }
25914      if (element.hasOrganization()) {
25915        composeReference("organization", element.getOrganization());
25916      }
25917      if (element.hasInsurer()) {
25918        composeReference("insurer", element.getInsurer());
25919      }
25920      if (element.hasFacility()) {
25921        composeReference("facility", element.getFacility());
25922      }
25923      if (element.hasCoverage()) {
25924        composeReference("coverage", element.getCoverage());
25925      }
25926      if (element.hasBusinessArrangementElement()) {
25927        composeString("businessArrangement", element.getBusinessArrangementElement());
25928      }
25929      if (element.hasBenefitCategory()) {
25930        composeCodeableConcept("benefitCategory", element.getBenefitCategory());
25931      }
25932      if (element.hasBenefitSubCategory()) {
25933        composeCodeableConcept("benefitSubCategory", element.getBenefitSubCategory());
25934      }
25935  }
25936
25937  protected void composeEligibilityResponse(String name, EligibilityResponse element) throws IOException {
25938    if (element != null) {
25939      composeDomainResourceAttributes(element);
25940      xml.enter(FHIR_NS, name);
25941      composeEligibilityResponseElements(element);
25942      composeElementClose(element);
25943      xml.exit(FHIR_NS, name);
25944    }
25945  }
25946
25947  protected void composeEligibilityResponseElements(EligibilityResponse element) throws IOException {
25948      composeDomainResourceElements(element);
25949      if (element.hasIdentifier()) { 
25950        for (Identifier e : element.getIdentifier()) 
25951          composeIdentifier("identifier", e);
25952      }
25953      if (element.hasStatusElement())
25954        composeEnumeration("status", element.getStatusElement(), new EligibilityResponse.EligibilityResponseStatusEnumFactory());
25955      if (element.hasCreatedElement()) {
25956        composeDateTime("created", element.getCreatedElement());
25957      }
25958      if (element.hasRequestProvider()) {
25959        composeReference("requestProvider", element.getRequestProvider());
25960      }
25961      if (element.hasRequestOrganization()) {
25962        composeReference("requestOrganization", element.getRequestOrganization());
25963      }
25964      if (element.hasRequest()) {
25965        composeReference("request", element.getRequest());
25966      }
25967      if (element.hasOutcome()) {
25968        composeCodeableConcept("outcome", element.getOutcome());
25969      }
25970      if (element.hasDispositionElement()) {
25971        composeString("disposition", element.getDispositionElement());
25972      }
25973      if (element.hasInsurer()) {
25974        composeReference("insurer", element.getInsurer());
25975      }
25976      if (element.hasInforceElement()) {
25977        composeBoolean("inforce", element.getInforceElement());
25978      }
25979      if (element.hasInsurance()) { 
25980        for (EligibilityResponse.InsuranceComponent e : element.getInsurance()) 
25981          composeEligibilityResponseInsuranceComponent("insurance", e);
25982      }
25983      if (element.hasForm()) {
25984        composeCodeableConcept("form", element.getForm());
25985      }
25986      if (element.hasError()) { 
25987        for (EligibilityResponse.ErrorsComponent e : element.getError()) 
25988          composeEligibilityResponseErrorsComponent("error", e);
25989      }
25990  }
25991
25992  protected void composeEligibilityResponseInsuranceComponent(String name, EligibilityResponse.InsuranceComponent element) throws IOException {
25993    if (element != null) {
25994      composeElementAttributes(element);
25995      xml.enter(FHIR_NS, name);
25996      composeEligibilityResponseInsuranceComponentElements(element);
25997      composeElementClose(element);
25998      xml.exit(FHIR_NS, name);
25999    }
26000  }
26001
26002  protected void composeEligibilityResponseInsuranceComponentElements(EligibilityResponse.InsuranceComponent element) throws IOException {
26003      composeBackboneElements(element);
26004      if (element.hasCoverage()) {
26005        composeReference("coverage", element.getCoverage());
26006      }
26007      if (element.hasContract()) {
26008        composeReference("contract", element.getContract());
26009      }
26010      if (element.hasBenefitBalance()) { 
26011        for (EligibilityResponse.BenefitsComponent e : element.getBenefitBalance()) 
26012          composeEligibilityResponseBenefitsComponent("benefitBalance", e);
26013      }
26014  }
26015
26016  protected void composeEligibilityResponseBenefitsComponent(String name, EligibilityResponse.BenefitsComponent element) throws IOException {
26017    if (element != null) {
26018      composeElementAttributes(element);
26019      xml.enter(FHIR_NS, name);
26020      composeEligibilityResponseBenefitsComponentElements(element);
26021      composeElementClose(element);
26022      xml.exit(FHIR_NS, name);
26023    }
26024  }
26025
26026  protected void composeEligibilityResponseBenefitsComponentElements(EligibilityResponse.BenefitsComponent element) throws IOException {
26027      composeBackboneElements(element);
26028      if (element.hasCategory()) {
26029        composeCodeableConcept("category", element.getCategory());
26030      }
26031      if (element.hasSubCategory()) {
26032        composeCodeableConcept("subCategory", element.getSubCategory());
26033      }
26034      if (element.hasExcludedElement()) {
26035        composeBoolean("excluded", element.getExcludedElement());
26036      }
26037      if (element.hasNameElement()) {
26038        composeString("name", element.getNameElement());
26039      }
26040      if (element.hasDescriptionElement()) {
26041        composeString("description", element.getDescriptionElement());
26042      }
26043      if (element.hasNetwork()) {
26044        composeCodeableConcept("network", element.getNetwork());
26045      }
26046      if (element.hasUnit()) {
26047        composeCodeableConcept("unit", element.getUnit());
26048      }
26049      if (element.hasTerm()) {
26050        composeCodeableConcept("term", element.getTerm());
26051      }
26052      if (element.hasFinancial()) { 
26053        for (EligibilityResponse.BenefitComponent e : element.getFinancial()) 
26054          composeEligibilityResponseBenefitComponent("financial", e);
26055      }
26056  }
26057
26058  protected void composeEligibilityResponseBenefitComponent(String name, EligibilityResponse.BenefitComponent element) throws IOException {
26059    if (element != null) {
26060      composeElementAttributes(element);
26061      xml.enter(FHIR_NS, name);
26062      composeEligibilityResponseBenefitComponentElements(element);
26063      composeElementClose(element);
26064      xml.exit(FHIR_NS, name);
26065    }
26066  }
26067
26068  protected void composeEligibilityResponseBenefitComponentElements(EligibilityResponse.BenefitComponent element) throws IOException {
26069      composeBackboneElements(element);
26070      if (element.hasType()) {
26071        composeCodeableConcept("type", element.getType());
26072      }
26073      if (element.hasAllowed()) {
26074        composeType("allowed", element.getAllowed());
26075      }      if (element.hasUsed()) {
26076        composeType("used", element.getUsed());
26077      }  }
26078
26079  protected void composeEligibilityResponseErrorsComponent(String name, EligibilityResponse.ErrorsComponent element) throws IOException {
26080    if (element != null) {
26081      composeElementAttributes(element);
26082      xml.enter(FHIR_NS, name);
26083      composeEligibilityResponseErrorsComponentElements(element);
26084      composeElementClose(element);
26085      xml.exit(FHIR_NS, name);
26086    }
26087  }
26088
26089  protected void composeEligibilityResponseErrorsComponentElements(EligibilityResponse.ErrorsComponent element) throws IOException {
26090      composeBackboneElements(element);
26091      if (element.hasCode()) {
26092        composeCodeableConcept("code", element.getCode());
26093      }
26094  }
26095
26096  protected void composeEncounter(String name, Encounter element) throws IOException {
26097    if (element != null) {
26098      composeDomainResourceAttributes(element);
26099      xml.enter(FHIR_NS, name);
26100      composeEncounterElements(element);
26101      composeElementClose(element);
26102      xml.exit(FHIR_NS, name);
26103    }
26104  }
26105
26106  protected void composeEncounterElements(Encounter element) throws IOException {
26107      composeDomainResourceElements(element);
26108      if (element.hasIdentifier()) { 
26109        for (Identifier e : element.getIdentifier()) 
26110          composeIdentifier("identifier", e);
26111      }
26112      if (element.hasStatusElement())
26113        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
26114      if (element.hasStatusHistory()) { 
26115        for (Encounter.StatusHistoryComponent e : element.getStatusHistory()) 
26116          composeEncounterStatusHistoryComponent("statusHistory", e);
26117      }
26118      if (element.hasClass_()) {
26119        composeCoding("class", element.getClass_());
26120      }
26121      if (element.hasClassHistory()) { 
26122        for (Encounter.ClassHistoryComponent e : element.getClassHistory()) 
26123          composeEncounterClassHistoryComponent("classHistory", e);
26124      }
26125      if (element.hasType()) { 
26126        for (CodeableConcept e : element.getType()) 
26127          composeCodeableConcept("type", e);
26128      }
26129      if (element.hasPriority()) {
26130        composeCodeableConcept("priority", element.getPriority());
26131      }
26132      if (element.hasSubject()) {
26133        composeReference("subject", element.getSubject());
26134      }
26135      if (element.hasEpisodeOfCare()) { 
26136        for (Reference e : element.getEpisodeOfCare()) 
26137          composeReference("episodeOfCare", e);
26138      }
26139      if (element.hasIncomingReferral()) { 
26140        for (Reference e : element.getIncomingReferral()) 
26141          composeReference("incomingReferral", e);
26142      }
26143      if (element.hasParticipant()) { 
26144        for (Encounter.EncounterParticipantComponent e : element.getParticipant()) 
26145          composeEncounterEncounterParticipantComponent("participant", e);
26146      }
26147      if (element.hasAppointment()) {
26148        composeReference("appointment", element.getAppointment());
26149      }
26150      if (element.hasPeriod()) {
26151        composePeriod("period", element.getPeriod());
26152      }
26153      if (element.hasLength()) {
26154        composeDuration("length", element.getLength());
26155      }
26156      if (element.hasReason()) { 
26157        for (CodeableConcept e : element.getReason()) 
26158          composeCodeableConcept("reason", e);
26159      }
26160      if (element.hasDiagnosis()) { 
26161        for (Encounter.DiagnosisComponent e : element.getDiagnosis()) 
26162          composeEncounterDiagnosisComponent("diagnosis", e);
26163      }
26164      if (element.hasAccount()) { 
26165        for (Reference e : element.getAccount()) 
26166          composeReference("account", e);
26167      }
26168      if (element.hasHospitalization()) {
26169        composeEncounterEncounterHospitalizationComponent("hospitalization", element.getHospitalization());
26170      }
26171      if (element.hasLocation()) { 
26172        for (Encounter.EncounterLocationComponent e : element.getLocation()) 
26173          composeEncounterEncounterLocationComponent("location", e);
26174      }
26175      if (element.hasServiceProvider()) {
26176        composeReference("serviceProvider", element.getServiceProvider());
26177      }
26178      if (element.hasPartOf()) {
26179        composeReference("partOf", element.getPartOf());
26180      }
26181  }
26182
26183  protected void composeEncounterStatusHistoryComponent(String name, Encounter.StatusHistoryComponent element) throws IOException {
26184    if (element != null) {
26185      composeElementAttributes(element);
26186      xml.enter(FHIR_NS, name);
26187      composeEncounterStatusHistoryComponentElements(element);
26188      composeElementClose(element);
26189      xml.exit(FHIR_NS, name);
26190    }
26191  }
26192
26193  protected void composeEncounterStatusHistoryComponentElements(Encounter.StatusHistoryComponent element) throws IOException {
26194      composeBackboneElements(element);
26195      if (element.hasStatusElement())
26196        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
26197      if (element.hasPeriod()) {
26198        composePeriod("period", element.getPeriod());
26199      }
26200  }
26201
26202  protected void composeEncounterClassHistoryComponent(String name, Encounter.ClassHistoryComponent element) throws IOException {
26203    if (element != null) {
26204      composeElementAttributes(element);
26205      xml.enter(FHIR_NS, name);
26206      composeEncounterClassHistoryComponentElements(element);
26207      composeElementClose(element);
26208      xml.exit(FHIR_NS, name);
26209    }
26210  }
26211
26212  protected void composeEncounterClassHistoryComponentElements(Encounter.ClassHistoryComponent element) throws IOException {
26213      composeBackboneElements(element);
26214      if (element.hasClass_()) {
26215        composeCoding("class", element.getClass_());
26216      }
26217      if (element.hasPeriod()) {
26218        composePeriod("period", element.getPeriod());
26219      }
26220  }
26221
26222  protected void composeEncounterEncounterParticipantComponent(String name, Encounter.EncounterParticipantComponent element) throws IOException {
26223    if (element != null) {
26224      composeElementAttributes(element);
26225      xml.enter(FHIR_NS, name);
26226      composeEncounterEncounterParticipantComponentElements(element);
26227      composeElementClose(element);
26228      xml.exit(FHIR_NS, name);
26229    }
26230  }
26231
26232  protected void composeEncounterEncounterParticipantComponentElements(Encounter.EncounterParticipantComponent element) throws IOException {
26233      composeBackboneElements(element);
26234      if (element.hasType()) { 
26235        for (CodeableConcept e : element.getType()) 
26236          composeCodeableConcept("type", e);
26237      }
26238      if (element.hasPeriod()) {
26239        composePeriod("period", element.getPeriod());
26240      }
26241      if (element.hasIndividual()) {
26242        composeReference("individual", element.getIndividual());
26243      }
26244  }
26245
26246  protected void composeEncounterDiagnosisComponent(String name, Encounter.DiagnosisComponent element) throws IOException {
26247    if (element != null) {
26248      composeElementAttributes(element);
26249      xml.enter(FHIR_NS, name);
26250      composeEncounterDiagnosisComponentElements(element);
26251      composeElementClose(element);
26252      xml.exit(FHIR_NS, name);
26253    }
26254  }
26255
26256  protected void composeEncounterDiagnosisComponentElements(Encounter.DiagnosisComponent element) throws IOException {
26257      composeBackboneElements(element);
26258      if (element.hasCondition()) {
26259        composeReference("condition", element.getCondition());
26260      }
26261      if (element.hasRole()) {
26262        composeCodeableConcept("role", element.getRole());
26263      }
26264      if (element.hasRankElement()) {
26265        composePositiveInt("rank", element.getRankElement());
26266      }
26267  }
26268
26269  protected void composeEncounterEncounterHospitalizationComponent(String name, Encounter.EncounterHospitalizationComponent element) throws IOException {
26270    if (element != null) {
26271      composeElementAttributes(element);
26272      xml.enter(FHIR_NS, name);
26273      composeEncounterEncounterHospitalizationComponentElements(element);
26274      composeElementClose(element);
26275      xml.exit(FHIR_NS, name);
26276    }
26277  }
26278
26279  protected void composeEncounterEncounterHospitalizationComponentElements(Encounter.EncounterHospitalizationComponent element) throws IOException {
26280      composeBackboneElements(element);
26281      if (element.hasPreAdmissionIdentifier()) {
26282        composeIdentifier("preAdmissionIdentifier", element.getPreAdmissionIdentifier());
26283      }
26284      if (element.hasOrigin()) {
26285        composeReference("origin", element.getOrigin());
26286      }
26287      if (element.hasAdmitSource()) {
26288        composeCodeableConcept("admitSource", element.getAdmitSource());
26289      }
26290      if (element.hasReAdmission()) {
26291        composeCodeableConcept("reAdmission", element.getReAdmission());
26292      }
26293      if (element.hasDietPreference()) { 
26294        for (CodeableConcept e : element.getDietPreference()) 
26295          composeCodeableConcept("dietPreference", e);
26296      }
26297      if (element.hasSpecialCourtesy()) { 
26298        for (CodeableConcept e : element.getSpecialCourtesy()) 
26299          composeCodeableConcept("specialCourtesy", e);
26300      }
26301      if (element.hasSpecialArrangement()) { 
26302        for (CodeableConcept e : element.getSpecialArrangement()) 
26303          composeCodeableConcept("specialArrangement", e);
26304      }
26305      if (element.hasDestination()) {
26306        composeReference("destination", element.getDestination());
26307      }
26308      if (element.hasDischargeDisposition()) {
26309        composeCodeableConcept("dischargeDisposition", element.getDischargeDisposition());
26310      }
26311  }
26312
26313  protected void composeEncounterEncounterLocationComponent(String name, Encounter.EncounterLocationComponent element) throws IOException {
26314    if (element != null) {
26315      composeElementAttributes(element);
26316      xml.enter(FHIR_NS, name);
26317      composeEncounterEncounterLocationComponentElements(element);
26318      composeElementClose(element);
26319      xml.exit(FHIR_NS, name);
26320    }
26321  }
26322
26323  protected void composeEncounterEncounterLocationComponentElements(Encounter.EncounterLocationComponent element) throws IOException {
26324      composeBackboneElements(element);
26325      if (element.hasLocation()) {
26326        composeReference("location", element.getLocation());
26327      }
26328      if (element.hasStatusElement())
26329        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterLocationStatusEnumFactory());
26330      if (element.hasPeriod()) {
26331        composePeriod("period", element.getPeriod());
26332      }
26333  }
26334
26335  protected void composeEndpoint(String name, Endpoint element) throws IOException {
26336    if (element != null) {
26337      composeDomainResourceAttributes(element);
26338      xml.enter(FHIR_NS, name);
26339      composeEndpointElements(element);
26340      composeElementClose(element);
26341      xml.exit(FHIR_NS, name);
26342    }
26343  }
26344
26345  protected void composeEndpointElements(Endpoint element) throws IOException {
26346      composeDomainResourceElements(element);
26347      if (element.hasIdentifier()) { 
26348        for (Identifier e : element.getIdentifier()) 
26349          composeIdentifier("identifier", e);
26350      }
26351      if (element.hasStatusElement())
26352        composeEnumeration("status", element.getStatusElement(), new Endpoint.EndpointStatusEnumFactory());
26353      if (element.hasConnectionType()) {
26354        composeCoding("connectionType", element.getConnectionType());
26355      }
26356      if (element.hasNameElement()) {
26357        composeString("name", element.getNameElement());
26358      }
26359      if (element.hasManagingOrganization()) {
26360        composeReference("managingOrganization", element.getManagingOrganization());
26361      }
26362      if (element.hasContact()) { 
26363        for (ContactPoint e : element.getContact()) 
26364          composeContactPoint("contact", e);
26365      }
26366      if (element.hasPeriod()) {
26367        composePeriod("period", element.getPeriod());
26368      }
26369      if (element.hasPayloadType()) { 
26370        for (CodeableConcept e : element.getPayloadType()) 
26371          composeCodeableConcept("payloadType", e);
26372      }
26373      if (element.hasPayloadMimeType()) { 
26374        for (CodeType e : element.getPayloadMimeType()) 
26375          composeCode("payloadMimeType", e);
26376      }
26377      if (element.hasAddressElement()) {
26378        composeUri("address", element.getAddressElement());
26379      }
26380      if (element.hasHeader()) { 
26381        for (StringType e : element.getHeader()) 
26382          composeString("header", e);
26383      }
26384  }
26385
26386  protected void composeEnrollmentRequest(String name, EnrollmentRequest element) throws IOException {
26387    if (element != null) {
26388      composeDomainResourceAttributes(element);
26389      xml.enter(FHIR_NS, name);
26390      composeEnrollmentRequestElements(element);
26391      composeElementClose(element);
26392      xml.exit(FHIR_NS, name);
26393    }
26394  }
26395
26396  protected void composeEnrollmentRequestElements(EnrollmentRequest element) throws IOException {
26397      composeDomainResourceElements(element);
26398      if (element.hasIdentifier()) { 
26399        for (Identifier e : element.getIdentifier()) 
26400          composeIdentifier("identifier", e);
26401      }
26402      if (element.hasStatusElement())
26403        composeEnumeration("status", element.getStatusElement(), new EnrollmentRequest.EnrollmentRequestStatusEnumFactory());
26404      if (element.hasCreatedElement()) {
26405        composeDateTime("created", element.getCreatedElement());
26406      }
26407      if (element.hasInsurer()) {
26408        composeReference("insurer", element.getInsurer());
26409      }
26410      if (element.hasProvider()) {
26411        composeReference("provider", element.getProvider());
26412      }
26413      if (element.hasOrganization()) {
26414        composeReference("organization", element.getOrganization());
26415      }
26416      if (element.hasSubject()) {
26417        composeReference("subject", element.getSubject());
26418      }
26419      if (element.hasCoverage()) {
26420        composeReference("coverage", element.getCoverage());
26421      }
26422  }
26423
26424  protected void composeEnrollmentResponse(String name, EnrollmentResponse element) throws IOException {
26425    if (element != null) {
26426      composeDomainResourceAttributes(element);
26427      xml.enter(FHIR_NS, name);
26428      composeEnrollmentResponseElements(element);
26429      composeElementClose(element);
26430      xml.exit(FHIR_NS, name);
26431    }
26432  }
26433
26434  protected void composeEnrollmentResponseElements(EnrollmentResponse element) throws IOException {
26435      composeDomainResourceElements(element);
26436      if (element.hasIdentifier()) { 
26437        for (Identifier e : element.getIdentifier()) 
26438          composeIdentifier("identifier", e);
26439      }
26440      if (element.hasStatusElement())
26441        composeEnumeration("status", element.getStatusElement(), new EnrollmentResponse.EnrollmentResponseStatusEnumFactory());
26442      if (element.hasRequest()) {
26443        composeReference("request", element.getRequest());
26444      }
26445      if (element.hasOutcome()) {
26446        composeCodeableConcept("outcome", element.getOutcome());
26447      }
26448      if (element.hasDispositionElement()) {
26449        composeString("disposition", element.getDispositionElement());
26450      }
26451      if (element.hasCreatedElement()) {
26452        composeDateTime("created", element.getCreatedElement());
26453      }
26454      if (element.hasOrganization()) {
26455        composeReference("organization", element.getOrganization());
26456      }
26457      if (element.hasRequestProvider()) {
26458        composeReference("requestProvider", element.getRequestProvider());
26459      }
26460      if (element.hasRequestOrganization()) {
26461        composeReference("requestOrganization", element.getRequestOrganization());
26462      }
26463  }
26464
26465  protected void composeEpisodeOfCare(String name, EpisodeOfCare element) throws IOException {
26466    if (element != null) {
26467      composeDomainResourceAttributes(element);
26468      xml.enter(FHIR_NS, name);
26469      composeEpisodeOfCareElements(element);
26470      composeElementClose(element);
26471      xml.exit(FHIR_NS, name);
26472    }
26473  }
26474
26475  protected void composeEpisodeOfCareElements(EpisodeOfCare element) throws IOException {
26476      composeDomainResourceElements(element);
26477      if (element.hasIdentifier()) { 
26478        for (Identifier e : element.getIdentifier()) 
26479          composeIdentifier("identifier", e);
26480      }
26481      if (element.hasStatusElement())
26482        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
26483      if (element.hasStatusHistory()) { 
26484        for (EpisodeOfCare.EpisodeOfCareStatusHistoryComponent e : element.getStatusHistory()) 
26485          composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent("statusHistory", e);
26486      }
26487      if (element.hasType()) { 
26488        for (CodeableConcept e : element.getType()) 
26489          composeCodeableConcept("type", e);
26490      }
26491      if (element.hasDiagnosis()) { 
26492        for (EpisodeOfCare.DiagnosisComponent e : element.getDiagnosis()) 
26493          composeEpisodeOfCareDiagnosisComponent("diagnosis", e);
26494      }
26495      if (element.hasPatient()) {
26496        composeReference("patient", element.getPatient());
26497      }
26498      if (element.hasManagingOrganization()) {
26499        composeReference("managingOrganization", element.getManagingOrganization());
26500      }
26501      if (element.hasPeriod()) {
26502        composePeriod("period", element.getPeriod());
26503      }
26504      if (element.hasReferralRequest()) { 
26505        for (Reference e : element.getReferralRequest()) 
26506          composeReference("referralRequest", e);
26507      }
26508      if (element.hasCareManager()) {
26509        composeReference("careManager", element.getCareManager());
26510      }
26511      if (element.hasTeam()) { 
26512        for (Reference e : element.getTeam()) 
26513          composeReference("team", e);
26514      }
26515      if (element.hasAccount()) { 
26516        for (Reference e : element.getAccount()) 
26517          composeReference("account", e);
26518      }
26519  }
26520
26521  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
26522    if (element != null) {
26523      composeElementAttributes(element);
26524      xml.enter(FHIR_NS, name);
26525      composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(element);
26526      composeElementClose(element);
26527      xml.exit(FHIR_NS, name);
26528    }
26529  }
26530
26531  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
26532      composeBackboneElements(element);
26533      if (element.hasStatusElement())
26534        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
26535      if (element.hasPeriod()) {
26536        composePeriod("period", element.getPeriod());
26537      }
26538  }
26539
26540  protected void composeEpisodeOfCareDiagnosisComponent(String name, EpisodeOfCare.DiagnosisComponent element) throws IOException {
26541    if (element != null) {
26542      composeElementAttributes(element);
26543      xml.enter(FHIR_NS, name);
26544      composeEpisodeOfCareDiagnosisComponentElements(element);
26545      composeElementClose(element);
26546      xml.exit(FHIR_NS, name);
26547    }
26548  }
26549
26550  protected void composeEpisodeOfCareDiagnosisComponentElements(EpisodeOfCare.DiagnosisComponent element) throws IOException {
26551      composeBackboneElements(element);
26552      if (element.hasCondition()) {
26553        composeReference("condition", element.getCondition());
26554      }
26555      if (element.hasRole()) {
26556        composeCodeableConcept("role", element.getRole());
26557      }
26558      if (element.hasRankElement()) {
26559        composePositiveInt("rank", element.getRankElement());
26560      }
26561  }
26562
26563  protected void composeExpansionProfile(String name, ExpansionProfile element) throws IOException {
26564    if (element != null) {
26565      composeDomainResourceAttributes(element);
26566      xml.enter(FHIR_NS, name);
26567      composeExpansionProfileElements(element);
26568      composeElementClose(element);
26569      xml.exit(FHIR_NS, name);
26570    }
26571  }
26572
26573  protected void composeExpansionProfileElements(ExpansionProfile element) throws IOException {
26574      composeDomainResourceElements(element);
26575      if (element.hasUrlElement()) {
26576        composeUri("url", element.getUrlElement());
26577      }
26578      if (element.hasIdentifier()) {
26579        composeIdentifier("identifier", element.getIdentifier());
26580      }
26581      if (element.hasVersionElement()) {
26582        composeString("version", element.getVersionElement());
26583      }
26584      if (element.hasNameElement()) {
26585        composeString("name", element.getNameElement());
26586      }
26587      if (element.hasStatusElement())
26588        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
26589      if (element.hasExperimentalElement()) {
26590        composeBoolean("experimental", element.getExperimentalElement());
26591      }
26592      if (element.hasDateElement()) {
26593        composeDateTime("date", element.getDateElement());
26594      }
26595      if (element.hasPublisherElement()) {
26596        composeString("publisher", element.getPublisherElement());
26597      }
26598      if (element.hasContact()) { 
26599        for (ContactDetail e : element.getContact()) 
26600          composeContactDetail("contact", e);
26601      }
26602      if (element.hasDescriptionElement()) {
26603        composeMarkdown("description", element.getDescriptionElement());
26604      }
26605      if (element.hasUseContext()) { 
26606        for (UsageContext e : element.getUseContext()) 
26607          composeUsageContext("useContext", e);
26608      }
26609      if (element.hasJurisdiction()) { 
26610        for (CodeableConcept e : element.getJurisdiction()) 
26611          composeCodeableConcept("jurisdiction", e);
26612      }
26613      if (element.hasFixedVersion()) { 
26614        for (ExpansionProfile.ExpansionProfileFixedVersionComponent e : element.getFixedVersion()) 
26615          composeExpansionProfileExpansionProfileFixedVersionComponent("fixedVersion", e);
26616      }
26617      if (element.hasExcludedSystem()) {
26618        composeExpansionProfileExpansionProfileExcludedSystemComponent("excludedSystem", element.getExcludedSystem());
26619      }
26620      if (element.hasIncludeDesignationsElement()) {
26621        composeBoolean("includeDesignations", element.getIncludeDesignationsElement());
26622      }
26623      if (element.hasDesignation()) {
26624        composeExpansionProfileExpansionProfileDesignationComponent("designation", element.getDesignation());
26625      }
26626      if (element.hasIncludeDefinitionElement()) {
26627        composeBoolean("includeDefinition", element.getIncludeDefinitionElement());
26628      }
26629      if (element.hasActiveOnlyElement()) {
26630        composeBoolean("activeOnly", element.getActiveOnlyElement());
26631      }
26632      if (element.hasExcludeNestedElement()) {
26633        composeBoolean("excludeNested", element.getExcludeNestedElement());
26634      }
26635      if (element.hasExcludeNotForUIElement()) {
26636        composeBoolean("excludeNotForUI", element.getExcludeNotForUIElement());
26637      }
26638      if (element.hasExcludePostCoordinatedElement()) {
26639        composeBoolean("excludePostCoordinated", element.getExcludePostCoordinatedElement());
26640      }
26641      if (element.hasDisplayLanguageElement()) {
26642        composeCode("displayLanguage", element.getDisplayLanguageElement());
26643      }
26644      if (element.hasLimitedExpansionElement()) {
26645        composeBoolean("limitedExpansion", element.getLimitedExpansionElement());
26646      }
26647  }
26648
26649  protected void composeExpansionProfileExpansionProfileFixedVersionComponent(String name, ExpansionProfile.ExpansionProfileFixedVersionComponent element) throws IOException {
26650    if (element != null) {
26651      composeElementAttributes(element);
26652      xml.enter(FHIR_NS, name);
26653      composeExpansionProfileExpansionProfileFixedVersionComponentElements(element);
26654      composeElementClose(element);
26655      xml.exit(FHIR_NS, name);
26656    }
26657  }
26658
26659  protected void composeExpansionProfileExpansionProfileFixedVersionComponentElements(ExpansionProfile.ExpansionProfileFixedVersionComponent element) throws IOException {
26660      composeBackboneElements(element);
26661      if (element.hasSystemElement()) {
26662        composeUri("system", element.getSystemElement());
26663      }
26664      if (element.hasVersionElement()) {
26665        composeString("version", element.getVersionElement());
26666      }
26667      if (element.hasModeElement())
26668        composeEnumeration("mode", element.getModeElement(), new ExpansionProfile.SystemVersionProcessingModeEnumFactory());
26669  }
26670
26671  protected void composeExpansionProfileExpansionProfileExcludedSystemComponent(String name, ExpansionProfile.ExpansionProfileExcludedSystemComponent element) throws IOException {
26672    if (element != null) {
26673      composeElementAttributes(element);
26674      xml.enter(FHIR_NS, name);
26675      composeExpansionProfileExpansionProfileExcludedSystemComponentElements(element);
26676      composeElementClose(element);
26677      xml.exit(FHIR_NS, name);
26678    }
26679  }
26680
26681  protected void composeExpansionProfileExpansionProfileExcludedSystemComponentElements(ExpansionProfile.ExpansionProfileExcludedSystemComponent element) throws IOException {
26682      composeBackboneElements(element);
26683      if (element.hasSystemElement()) {
26684        composeUri("system", element.getSystemElement());
26685      }
26686      if (element.hasVersionElement()) {
26687        composeString("version", element.getVersionElement());
26688      }
26689  }
26690
26691  protected void composeExpansionProfileExpansionProfileDesignationComponent(String name, ExpansionProfile.ExpansionProfileDesignationComponent element) throws IOException {
26692    if (element != null) {
26693      composeElementAttributes(element);
26694      xml.enter(FHIR_NS, name);
26695      composeExpansionProfileExpansionProfileDesignationComponentElements(element);
26696      composeElementClose(element);
26697      xml.exit(FHIR_NS, name);
26698    }
26699  }
26700
26701  protected void composeExpansionProfileExpansionProfileDesignationComponentElements(ExpansionProfile.ExpansionProfileDesignationComponent element) throws IOException {
26702      composeBackboneElements(element);
26703      if (element.hasInclude()) {
26704        composeExpansionProfileDesignationIncludeComponent("include", element.getInclude());
26705      }
26706      if (element.hasExclude()) {
26707        composeExpansionProfileDesignationExcludeComponent("exclude", element.getExclude());
26708      }
26709  }
26710
26711  protected void composeExpansionProfileDesignationIncludeComponent(String name, ExpansionProfile.DesignationIncludeComponent element) throws IOException {
26712    if (element != null) {
26713      composeElementAttributes(element);
26714      xml.enter(FHIR_NS, name);
26715      composeExpansionProfileDesignationIncludeComponentElements(element);
26716      composeElementClose(element);
26717      xml.exit(FHIR_NS, name);
26718    }
26719  }
26720
26721  protected void composeExpansionProfileDesignationIncludeComponentElements(ExpansionProfile.DesignationIncludeComponent element) throws IOException {
26722      composeBackboneElements(element);
26723      if (element.hasDesignation()) { 
26724        for (ExpansionProfile.DesignationIncludeDesignationComponent e : element.getDesignation()) 
26725          composeExpansionProfileDesignationIncludeDesignationComponent("designation", e);
26726      }
26727  }
26728
26729  protected void composeExpansionProfileDesignationIncludeDesignationComponent(String name, ExpansionProfile.DesignationIncludeDesignationComponent element) throws IOException {
26730    if (element != null) {
26731      composeElementAttributes(element);
26732      xml.enter(FHIR_NS, name);
26733      composeExpansionProfileDesignationIncludeDesignationComponentElements(element);
26734      composeElementClose(element);
26735      xml.exit(FHIR_NS, name);
26736    }
26737  }
26738
26739  protected void composeExpansionProfileDesignationIncludeDesignationComponentElements(ExpansionProfile.DesignationIncludeDesignationComponent element) throws IOException {
26740      composeBackboneElements(element);
26741      if (element.hasLanguageElement()) {
26742        composeCode("language", element.getLanguageElement());
26743      }
26744      if (element.hasUse()) {
26745        composeCoding("use", element.getUse());
26746      }
26747  }
26748
26749  protected void composeExpansionProfileDesignationExcludeComponent(String name, ExpansionProfile.DesignationExcludeComponent element) throws IOException {
26750    if (element != null) {
26751      composeElementAttributes(element);
26752      xml.enter(FHIR_NS, name);
26753      composeExpansionProfileDesignationExcludeComponentElements(element);
26754      composeElementClose(element);
26755      xml.exit(FHIR_NS, name);
26756    }
26757  }
26758
26759  protected void composeExpansionProfileDesignationExcludeComponentElements(ExpansionProfile.DesignationExcludeComponent element) throws IOException {
26760      composeBackboneElements(element);
26761      if (element.hasDesignation()) { 
26762        for (ExpansionProfile.DesignationExcludeDesignationComponent e : element.getDesignation()) 
26763          composeExpansionProfileDesignationExcludeDesignationComponent("designation", e);
26764      }
26765  }
26766
26767  protected void composeExpansionProfileDesignationExcludeDesignationComponent(String name, ExpansionProfile.DesignationExcludeDesignationComponent element) throws IOException {
26768    if (element != null) {
26769      composeElementAttributes(element);
26770      xml.enter(FHIR_NS, name);
26771      composeExpansionProfileDesignationExcludeDesignationComponentElements(element);
26772      composeElementClose(element);
26773      xml.exit(FHIR_NS, name);
26774    }
26775  }
26776
26777  protected void composeExpansionProfileDesignationExcludeDesignationComponentElements(ExpansionProfile.DesignationExcludeDesignationComponent element) throws IOException {
26778      composeBackboneElements(element);
26779      if (element.hasLanguageElement()) {
26780        composeCode("language", element.getLanguageElement());
26781      }
26782      if (element.hasUse()) {
26783        composeCoding("use", element.getUse());
26784      }
26785  }
26786
26787  protected void composeExplanationOfBenefit(String name, ExplanationOfBenefit element) throws IOException {
26788    if (element != null) {
26789      composeDomainResourceAttributes(element);
26790      xml.enter(FHIR_NS, name);
26791      composeExplanationOfBenefitElements(element);
26792      composeElementClose(element);
26793      xml.exit(FHIR_NS, name);
26794    }
26795  }
26796
26797  protected void composeExplanationOfBenefitElements(ExplanationOfBenefit element) throws IOException {
26798      composeDomainResourceElements(element);
26799      if (element.hasIdentifier()) { 
26800        for (Identifier e : element.getIdentifier()) 
26801          composeIdentifier("identifier", e);
26802      }
26803      if (element.hasStatusElement())
26804        composeEnumeration("status", element.getStatusElement(), new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory());
26805      if (element.hasType()) {
26806        composeCodeableConcept("type", element.getType());
26807      }
26808      if (element.hasSubType()) { 
26809        for (CodeableConcept e : element.getSubType()) 
26810          composeCodeableConcept("subType", e);
26811      }
26812      if (element.hasPatient()) {
26813        composeReference("patient", element.getPatient());
26814      }
26815      if (element.hasBillablePeriod()) {
26816        composePeriod("billablePeriod", element.getBillablePeriod());
26817      }
26818      if (element.hasCreatedElement()) {
26819        composeDateTime("created", element.getCreatedElement());
26820      }
26821      if (element.hasEnterer()) {
26822        composeReference("enterer", element.getEnterer());
26823      }
26824      if (element.hasInsurer()) {
26825        composeReference("insurer", element.getInsurer());
26826      }
26827      if (element.hasProvider()) {
26828        composeReference("provider", element.getProvider());
26829      }
26830      if (element.hasOrganization()) {
26831        composeReference("organization", element.getOrganization());
26832      }
26833      if (element.hasReferral()) {
26834        composeReference("referral", element.getReferral());
26835      }
26836      if (element.hasFacility()) {
26837        composeReference("facility", element.getFacility());
26838      }
26839      if (element.hasClaim()) {
26840        composeReference("claim", element.getClaim());
26841      }
26842      if (element.hasClaimResponse()) {
26843        composeReference("claimResponse", element.getClaimResponse());
26844      }
26845      if (element.hasOutcome()) {
26846        composeCodeableConcept("outcome", element.getOutcome());
26847      }
26848      if (element.hasDispositionElement()) {
26849        composeString("disposition", element.getDispositionElement());
26850      }
26851      if (element.hasRelated()) { 
26852        for (ExplanationOfBenefit.RelatedClaimComponent e : element.getRelated()) 
26853          composeExplanationOfBenefitRelatedClaimComponent("related", e);
26854      }
26855      if (element.hasPrescription()) {
26856        composeReference("prescription", element.getPrescription());
26857      }
26858      if (element.hasOriginalPrescription()) {
26859        composeReference("originalPrescription", element.getOriginalPrescription());
26860      }
26861      if (element.hasPayee()) {
26862        composeExplanationOfBenefitPayeeComponent("payee", element.getPayee());
26863      }
26864      if (element.hasInformation()) { 
26865        for (ExplanationOfBenefit.SupportingInformationComponent e : element.getInformation()) 
26866          composeExplanationOfBenefitSupportingInformationComponent("information", e);
26867      }
26868      if (element.hasCareTeam()) { 
26869        for (ExplanationOfBenefit.CareTeamComponent e : element.getCareTeam()) 
26870          composeExplanationOfBenefitCareTeamComponent("careTeam", e);
26871      }
26872      if (element.hasDiagnosis()) { 
26873        for (ExplanationOfBenefit.DiagnosisComponent e : element.getDiagnosis()) 
26874          composeExplanationOfBenefitDiagnosisComponent("diagnosis", e);
26875      }
26876      if (element.hasProcedure()) { 
26877        for (ExplanationOfBenefit.ProcedureComponent e : element.getProcedure()) 
26878          composeExplanationOfBenefitProcedureComponent("procedure", e);
26879      }
26880      if (element.hasPrecedenceElement()) {
26881        composePositiveInt("precedence", element.getPrecedenceElement());
26882      }
26883      if (element.hasInsurance()) {
26884        composeExplanationOfBenefitInsuranceComponent("insurance", element.getInsurance());
26885      }
26886      if (element.hasAccident()) {
26887        composeExplanationOfBenefitAccidentComponent("accident", element.getAccident());
26888      }
26889      if (element.hasEmploymentImpacted()) {
26890        composePeriod("employmentImpacted", element.getEmploymentImpacted());
26891      }
26892      if (element.hasHospitalization()) {
26893        composePeriod("hospitalization", element.getHospitalization());
26894      }
26895      if (element.hasItem()) { 
26896        for (ExplanationOfBenefit.ItemComponent e : element.getItem()) 
26897          composeExplanationOfBenefitItemComponent("item", e);
26898      }
26899      if (element.hasAddItem()) { 
26900        for (ExplanationOfBenefit.AddedItemComponent e : element.getAddItem()) 
26901          composeExplanationOfBenefitAddedItemComponent("addItem", e);
26902      }
26903      if (element.hasTotalCost()) {
26904        composeMoney("totalCost", element.getTotalCost());
26905      }
26906      if (element.hasUnallocDeductable()) {
26907        composeMoney("unallocDeductable", element.getUnallocDeductable());
26908      }
26909      if (element.hasTotalBenefit()) {
26910        composeMoney("totalBenefit", element.getTotalBenefit());
26911      }
26912      if (element.hasPayment()) {
26913        composeExplanationOfBenefitPaymentComponent("payment", element.getPayment());
26914      }
26915      if (element.hasForm()) {
26916        composeCodeableConcept("form", element.getForm());
26917      }
26918      if (element.hasProcessNote()) { 
26919        for (ExplanationOfBenefit.NoteComponent e : element.getProcessNote()) 
26920          composeExplanationOfBenefitNoteComponent("processNote", e);
26921      }
26922      if (element.hasBenefitBalance()) { 
26923        for (ExplanationOfBenefit.BenefitBalanceComponent e : element.getBenefitBalance()) 
26924          composeExplanationOfBenefitBenefitBalanceComponent("benefitBalance", e);
26925      }
26926  }
26927
26928  protected void composeExplanationOfBenefitRelatedClaimComponent(String name, ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
26929    if (element != null) {
26930      composeElementAttributes(element);
26931      xml.enter(FHIR_NS, name);
26932      composeExplanationOfBenefitRelatedClaimComponentElements(element);
26933      composeElementClose(element);
26934      xml.exit(FHIR_NS, name);
26935    }
26936  }
26937
26938  protected void composeExplanationOfBenefitRelatedClaimComponentElements(ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
26939      composeBackboneElements(element);
26940      if (element.hasClaim()) {
26941        composeReference("claim", element.getClaim());
26942      }
26943      if (element.hasRelationship()) {
26944        composeCodeableConcept("relationship", element.getRelationship());
26945      }
26946      if (element.hasReference()) {
26947        composeIdentifier("reference", element.getReference());
26948      }
26949  }
26950
26951  protected void composeExplanationOfBenefitPayeeComponent(String name, ExplanationOfBenefit.PayeeComponent element) throws IOException {
26952    if (element != null) {
26953      composeElementAttributes(element);
26954      xml.enter(FHIR_NS, name);
26955      composeExplanationOfBenefitPayeeComponentElements(element);
26956      composeElementClose(element);
26957      xml.exit(FHIR_NS, name);
26958    }
26959  }
26960
26961  protected void composeExplanationOfBenefitPayeeComponentElements(ExplanationOfBenefit.PayeeComponent element) throws IOException {
26962      composeBackboneElements(element);
26963      if (element.hasType()) {
26964        composeCodeableConcept("type", element.getType());
26965      }
26966      if (element.hasResourceType()) {
26967        composeCodeableConcept("resourceType", element.getResourceType());
26968      }
26969      if (element.hasParty()) {
26970        composeReference("party", element.getParty());
26971      }
26972  }
26973
26974  protected void composeExplanationOfBenefitSupportingInformationComponent(String name, ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
26975    if (element != null) {
26976      composeElementAttributes(element);
26977      xml.enter(FHIR_NS, name);
26978      composeExplanationOfBenefitSupportingInformationComponentElements(element);
26979      composeElementClose(element);
26980      xml.exit(FHIR_NS, name);
26981    }
26982  }
26983
26984  protected void composeExplanationOfBenefitSupportingInformationComponentElements(ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
26985      composeBackboneElements(element);
26986      if (element.hasSequenceElement()) {
26987        composePositiveInt("sequence", element.getSequenceElement());
26988      }
26989      if (element.hasCategory()) {
26990        composeCodeableConcept("category", element.getCategory());
26991      }
26992      if (element.hasCode()) {
26993        composeCodeableConcept("code", element.getCode());
26994      }
26995      if (element.hasTiming()) {
26996        composeType("timing", element.getTiming());
26997      }      if (element.hasValue()) {
26998        composeType("value", element.getValue());
26999      }      if (element.hasReason()) {
27000        composeCoding("reason", element.getReason());
27001      }
27002  }
27003
27004  protected void composeExplanationOfBenefitCareTeamComponent(String name, ExplanationOfBenefit.CareTeamComponent element) throws IOException {
27005    if (element != null) {
27006      composeElementAttributes(element);
27007      xml.enter(FHIR_NS, name);
27008      composeExplanationOfBenefitCareTeamComponentElements(element);
27009      composeElementClose(element);
27010      xml.exit(FHIR_NS, name);
27011    }
27012  }
27013
27014  protected void composeExplanationOfBenefitCareTeamComponentElements(ExplanationOfBenefit.CareTeamComponent element) throws IOException {
27015      composeBackboneElements(element);
27016      if (element.hasSequenceElement()) {
27017        composePositiveInt("sequence", element.getSequenceElement());
27018      }
27019      if (element.hasProvider()) {
27020        composeReference("provider", element.getProvider());
27021      }
27022      if (element.hasResponsibleElement()) {
27023        composeBoolean("responsible", element.getResponsibleElement());
27024      }
27025      if (element.hasRole()) {
27026        composeCodeableConcept("role", element.getRole());
27027      }
27028      if (element.hasQualification()) {
27029        composeCodeableConcept("qualification", element.getQualification());
27030      }
27031  }
27032
27033  protected void composeExplanationOfBenefitDiagnosisComponent(String name, ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
27034    if (element != null) {
27035      composeElementAttributes(element);
27036      xml.enter(FHIR_NS, name);
27037      composeExplanationOfBenefitDiagnosisComponentElements(element);
27038      composeElementClose(element);
27039      xml.exit(FHIR_NS, name);
27040    }
27041  }
27042
27043  protected void composeExplanationOfBenefitDiagnosisComponentElements(ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
27044      composeBackboneElements(element);
27045      if (element.hasSequenceElement()) {
27046        composePositiveInt("sequence", element.getSequenceElement());
27047      }
27048      if (element.hasDiagnosis()) {
27049        composeType("diagnosis", element.getDiagnosis());
27050      }      if (element.hasType()) { 
27051        for (CodeableConcept e : element.getType()) 
27052          composeCodeableConcept("type", e);
27053      }
27054      if (element.hasPackageCode()) {
27055        composeCodeableConcept("packageCode", element.getPackageCode());
27056      }
27057  }
27058
27059  protected void composeExplanationOfBenefitProcedureComponent(String name, ExplanationOfBenefit.ProcedureComponent element) throws IOException {
27060    if (element != null) {
27061      composeElementAttributes(element);
27062      xml.enter(FHIR_NS, name);
27063      composeExplanationOfBenefitProcedureComponentElements(element);
27064      composeElementClose(element);
27065      xml.exit(FHIR_NS, name);
27066    }
27067  }
27068
27069  protected void composeExplanationOfBenefitProcedureComponentElements(ExplanationOfBenefit.ProcedureComponent element) throws IOException {
27070      composeBackboneElements(element);
27071      if (element.hasSequenceElement()) {
27072        composePositiveInt("sequence", element.getSequenceElement());
27073      }
27074      if (element.hasDateElement()) {
27075        composeDateTime("date", element.getDateElement());
27076      }
27077      if (element.hasProcedure()) {
27078        composeType("procedure", element.getProcedure());
27079      }  }
27080
27081  protected void composeExplanationOfBenefitInsuranceComponent(String name, ExplanationOfBenefit.InsuranceComponent element) throws IOException {
27082    if (element != null) {
27083      composeElementAttributes(element);
27084      xml.enter(FHIR_NS, name);
27085      composeExplanationOfBenefitInsuranceComponentElements(element);
27086      composeElementClose(element);
27087      xml.exit(FHIR_NS, name);
27088    }
27089  }
27090
27091  protected void composeExplanationOfBenefitInsuranceComponentElements(ExplanationOfBenefit.InsuranceComponent element) throws IOException {
27092      composeBackboneElements(element);
27093      if (element.hasCoverage()) {
27094        composeReference("coverage", element.getCoverage());
27095      }
27096      if (element.hasPreAuthRef()) { 
27097        for (StringType e : element.getPreAuthRef()) 
27098          composeString("preAuthRef", e);
27099      }
27100  }
27101
27102  protected void composeExplanationOfBenefitAccidentComponent(String name, ExplanationOfBenefit.AccidentComponent element) throws IOException {
27103    if (element != null) {
27104      composeElementAttributes(element);
27105      xml.enter(FHIR_NS, name);
27106      composeExplanationOfBenefitAccidentComponentElements(element);
27107      composeElementClose(element);
27108      xml.exit(FHIR_NS, name);
27109    }
27110  }
27111
27112  protected void composeExplanationOfBenefitAccidentComponentElements(ExplanationOfBenefit.AccidentComponent element) throws IOException {
27113      composeBackboneElements(element);
27114      if (element.hasDateElement()) {
27115        composeDate("date", element.getDateElement());
27116      }
27117      if (element.hasType()) {
27118        composeCodeableConcept("type", element.getType());
27119      }
27120      if (element.hasLocation()) {
27121        composeType("location", element.getLocation());
27122      }  }
27123
27124  protected void composeExplanationOfBenefitItemComponent(String name, ExplanationOfBenefit.ItemComponent element) throws IOException {
27125    if (element != null) {
27126      composeElementAttributes(element);
27127      xml.enter(FHIR_NS, name);
27128      composeExplanationOfBenefitItemComponentElements(element);
27129      composeElementClose(element);
27130      xml.exit(FHIR_NS, name);
27131    }
27132  }
27133
27134  protected void composeExplanationOfBenefitItemComponentElements(ExplanationOfBenefit.ItemComponent element) throws IOException {
27135      composeBackboneElements(element);
27136      if (element.hasSequenceElement()) {
27137        composePositiveInt("sequence", element.getSequenceElement());
27138      }
27139      if (element.hasCareTeamLinkId()) { 
27140        for (PositiveIntType e : element.getCareTeamLinkId()) 
27141          composePositiveInt("careTeamLinkId", e);
27142      }
27143      if (element.hasDiagnosisLinkId()) { 
27144        for (PositiveIntType e : element.getDiagnosisLinkId()) 
27145          composePositiveInt("diagnosisLinkId", e);
27146      }
27147      if (element.hasProcedureLinkId()) { 
27148        for (PositiveIntType e : element.getProcedureLinkId()) 
27149          composePositiveInt("procedureLinkId", e);
27150      }
27151      if (element.hasInformationLinkId()) { 
27152        for (PositiveIntType e : element.getInformationLinkId()) 
27153          composePositiveInt("informationLinkId", e);
27154      }
27155      if (element.hasRevenue()) {
27156        composeCodeableConcept("revenue", element.getRevenue());
27157      }
27158      if (element.hasCategory()) {
27159        composeCodeableConcept("category", element.getCategory());
27160      }
27161      if (element.hasService()) {
27162        composeCodeableConcept("service", element.getService());
27163      }
27164      if (element.hasModifier()) { 
27165        for (CodeableConcept e : element.getModifier()) 
27166          composeCodeableConcept("modifier", e);
27167      }
27168      if (element.hasProgramCode()) { 
27169        for (CodeableConcept e : element.getProgramCode()) 
27170          composeCodeableConcept("programCode", e);
27171      }
27172      if (element.hasServiced()) {
27173        composeType("serviced", element.getServiced());
27174      }      if (element.hasLocation()) {
27175        composeType("location", element.getLocation());
27176      }      if (element.hasQuantity()) {
27177        composeSimpleQuantity("quantity", element.getQuantity());
27178      }
27179      if (element.hasUnitPrice()) {
27180        composeMoney("unitPrice", element.getUnitPrice());
27181      }
27182      if (element.hasFactorElement()) {
27183        composeDecimal("factor", element.getFactorElement());
27184      }
27185      if (element.hasNet()) {
27186        composeMoney("net", element.getNet());
27187      }
27188      if (element.hasUdi()) { 
27189        for (Reference e : element.getUdi()) 
27190          composeReference("udi", e);
27191      }
27192      if (element.hasBodySite()) {
27193        composeCodeableConcept("bodySite", element.getBodySite());
27194      }
27195      if (element.hasSubSite()) { 
27196        for (CodeableConcept e : element.getSubSite()) 
27197          composeCodeableConcept("subSite", e);
27198      }
27199      if (element.hasEncounter()) { 
27200        for (Reference e : element.getEncounter()) 
27201          composeReference("encounter", e);
27202      }
27203      if (element.hasNoteNumber()) { 
27204        for (PositiveIntType e : element.getNoteNumber()) 
27205          composePositiveInt("noteNumber", e);
27206      }
27207      if (element.hasAdjudication()) { 
27208        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27209          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27210      }
27211      if (element.hasDetail()) { 
27212        for (ExplanationOfBenefit.DetailComponent e : element.getDetail()) 
27213          composeExplanationOfBenefitDetailComponent("detail", e);
27214      }
27215  }
27216
27217  protected void composeExplanationOfBenefitAdjudicationComponent(String name, ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
27218    if (element != null) {
27219      composeElementAttributes(element);
27220      xml.enter(FHIR_NS, name);
27221      composeExplanationOfBenefitAdjudicationComponentElements(element);
27222      composeElementClose(element);
27223      xml.exit(FHIR_NS, name);
27224    }
27225  }
27226
27227  protected void composeExplanationOfBenefitAdjudicationComponentElements(ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
27228      composeBackboneElements(element);
27229      if (element.hasCategory()) {
27230        composeCodeableConcept("category", element.getCategory());
27231      }
27232      if (element.hasReason()) {
27233        composeCodeableConcept("reason", element.getReason());
27234      }
27235      if (element.hasAmount()) {
27236        composeMoney("amount", element.getAmount());
27237      }
27238      if (element.hasValueElement()) {
27239        composeDecimal("value", element.getValueElement());
27240      }
27241  }
27242
27243  protected void composeExplanationOfBenefitDetailComponent(String name, ExplanationOfBenefit.DetailComponent element) throws IOException {
27244    if (element != null) {
27245      composeElementAttributes(element);
27246      xml.enter(FHIR_NS, name);
27247      composeExplanationOfBenefitDetailComponentElements(element);
27248      composeElementClose(element);
27249      xml.exit(FHIR_NS, name);
27250    }
27251  }
27252
27253  protected void composeExplanationOfBenefitDetailComponentElements(ExplanationOfBenefit.DetailComponent element) throws IOException {
27254      composeBackboneElements(element);
27255      if (element.hasSequenceElement()) {
27256        composePositiveInt("sequence", element.getSequenceElement());
27257      }
27258      if (element.hasType()) {
27259        composeCodeableConcept("type", element.getType());
27260      }
27261      if (element.hasRevenue()) {
27262        composeCodeableConcept("revenue", element.getRevenue());
27263      }
27264      if (element.hasCategory()) {
27265        composeCodeableConcept("category", element.getCategory());
27266      }
27267      if (element.hasService()) {
27268        composeCodeableConcept("service", element.getService());
27269      }
27270      if (element.hasModifier()) { 
27271        for (CodeableConcept e : element.getModifier()) 
27272          composeCodeableConcept("modifier", e);
27273      }
27274      if (element.hasProgramCode()) { 
27275        for (CodeableConcept e : element.getProgramCode()) 
27276          composeCodeableConcept("programCode", e);
27277      }
27278      if (element.hasQuantity()) {
27279        composeSimpleQuantity("quantity", element.getQuantity());
27280      }
27281      if (element.hasUnitPrice()) {
27282        composeMoney("unitPrice", element.getUnitPrice());
27283      }
27284      if (element.hasFactorElement()) {
27285        composeDecimal("factor", element.getFactorElement());
27286      }
27287      if (element.hasNet()) {
27288        composeMoney("net", element.getNet());
27289      }
27290      if (element.hasUdi()) { 
27291        for (Reference e : element.getUdi()) 
27292          composeReference("udi", e);
27293      }
27294      if (element.hasNoteNumber()) { 
27295        for (PositiveIntType e : element.getNoteNumber()) 
27296          composePositiveInt("noteNumber", e);
27297      }
27298      if (element.hasAdjudication()) { 
27299        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27300          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27301      }
27302      if (element.hasSubDetail()) { 
27303        for (ExplanationOfBenefit.SubDetailComponent e : element.getSubDetail()) 
27304          composeExplanationOfBenefitSubDetailComponent("subDetail", e);
27305      }
27306  }
27307
27308  protected void composeExplanationOfBenefitSubDetailComponent(String name, ExplanationOfBenefit.SubDetailComponent element) throws IOException {
27309    if (element != null) {
27310      composeElementAttributes(element);
27311      xml.enter(FHIR_NS, name);
27312      composeExplanationOfBenefitSubDetailComponentElements(element);
27313      composeElementClose(element);
27314      xml.exit(FHIR_NS, name);
27315    }
27316  }
27317
27318  protected void composeExplanationOfBenefitSubDetailComponentElements(ExplanationOfBenefit.SubDetailComponent element) throws IOException {
27319      composeBackboneElements(element);
27320      if (element.hasSequenceElement()) {
27321        composePositiveInt("sequence", element.getSequenceElement());
27322      }
27323      if (element.hasType()) {
27324        composeCodeableConcept("type", element.getType());
27325      }
27326      if (element.hasRevenue()) {
27327        composeCodeableConcept("revenue", element.getRevenue());
27328      }
27329      if (element.hasCategory()) {
27330        composeCodeableConcept("category", element.getCategory());
27331      }
27332      if (element.hasService()) {
27333        composeCodeableConcept("service", element.getService());
27334      }
27335      if (element.hasModifier()) { 
27336        for (CodeableConcept e : element.getModifier()) 
27337          composeCodeableConcept("modifier", e);
27338      }
27339      if (element.hasProgramCode()) { 
27340        for (CodeableConcept e : element.getProgramCode()) 
27341          composeCodeableConcept("programCode", e);
27342      }
27343      if (element.hasQuantity()) {
27344        composeSimpleQuantity("quantity", element.getQuantity());
27345      }
27346      if (element.hasUnitPrice()) {
27347        composeMoney("unitPrice", element.getUnitPrice());
27348      }
27349      if (element.hasFactorElement()) {
27350        composeDecimal("factor", element.getFactorElement());
27351      }
27352      if (element.hasNet()) {
27353        composeMoney("net", element.getNet());
27354      }
27355      if (element.hasUdi()) { 
27356        for (Reference e : element.getUdi()) 
27357          composeReference("udi", e);
27358      }
27359      if (element.hasNoteNumber()) { 
27360        for (PositiveIntType e : element.getNoteNumber()) 
27361          composePositiveInt("noteNumber", e);
27362      }
27363      if (element.hasAdjudication()) { 
27364        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27365          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27366      }
27367  }
27368
27369  protected void composeExplanationOfBenefitAddedItemComponent(String name, ExplanationOfBenefit.AddedItemComponent element) throws IOException {
27370    if (element != null) {
27371      composeElementAttributes(element);
27372      xml.enter(FHIR_NS, name);
27373      composeExplanationOfBenefitAddedItemComponentElements(element);
27374      composeElementClose(element);
27375      xml.exit(FHIR_NS, name);
27376    }
27377  }
27378
27379  protected void composeExplanationOfBenefitAddedItemComponentElements(ExplanationOfBenefit.AddedItemComponent element) throws IOException {
27380      composeBackboneElements(element);
27381      if (element.hasSequenceLinkId()) { 
27382        for (PositiveIntType e : element.getSequenceLinkId()) 
27383          composePositiveInt("sequenceLinkId", e);
27384      }
27385      if (element.hasRevenue()) {
27386        composeCodeableConcept("revenue", element.getRevenue());
27387      }
27388      if (element.hasCategory()) {
27389        composeCodeableConcept("category", element.getCategory());
27390      }
27391      if (element.hasService()) {
27392        composeCodeableConcept("service", element.getService());
27393      }
27394      if (element.hasModifier()) { 
27395        for (CodeableConcept e : element.getModifier()) 
27396          composeCodeableConcept("modifier", e);
27397      }
27398      if (element.hasFee()) {
27399        composeMoney("fee", element.getFee());
27400      }
27401      if (element.hasNoteNumber()) { 
27402        for (PositiveIntType e : element.getNoteNumber()) 
27403          composePositiveInt("noteNumber", e);
27404      }
27405      if (element.hasAdjudication()) { 
27406        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27407          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27408      }
27409      if (element.hasDetail()) { 
27410        for (ExplanationOfBenefit.AddedItemsDetailComponent e : element.getDetail()) 
27411          composeExplanationOfBenefitAddedItemsDetailComponent("detail", e);
27412      }
27413  }
27414
27415  protected void composeExplanationOfBenefitAddedItemsDetailComponent(String name, ExplanationOfBenefit.AddedItemsDetailComponent element) throws IOException {
27416    if (element != null) {
27417      composeElementAttributes(element);
27418      xml.enter(FHIR_NS, name);
27419      composeExplanationOfBenefitAddedItemsDetailComponentElements(element);
27420      composeElementClose(element);
27421      xml.exit(FHIR_NS, name);
27422    }
27423  }
27424
27425  protected void composeExplanationOfBenefitAddedItemsDetailComponentElements(ExplanationOfBenefit.AddedItemsDetailComponent element) throws IOException {
27426      composeBackboneElements(element);
27427      if (element.hasRevenue()) {
27428        composeCodeableConcept("revenue", element.getRevenue());
27429      }
27430      if (element.hasCategory()) {
27431        composeCodeableConcept("category", element.getCategory());
27432      }
27433      if (element.hasService()) {
27434        composeCodeableConcept("service", element.getService());
27435      }
27436      if (element.hasModifier()) { 
27437        for (CodeableConcept e : element.getModifier()) 
27438          composeCodeableConcept("modifier", e);
27439      }
27440      if (element.hasFee()) {
27441        composeMoney("fee", element.getFee());
27442      }
27443      if (element.hasNoteNumber()) { 
27444        for (PositiveIntType e : element.getNoteNumber()) 
27445          composePositiveInt("noteNumber", e);
27446      }
27447      if (element.hasAdjudication()) { 
27448        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
27449          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
27450      }
27451  }
27452
27453  protected void composeExplanationOfBenefitPaymentComponent(String name, ExplanationOfBenefit.PaymentComponent element) throws IOException {
27454    if (element != null) {
27455      composeElementAttributes(element);
27456      xml.enter(FHIR_NS, name);
27457      composeExplanationOfBenefitPaymentComponentElements(element);
27458      composeElementClose(element);
27459      xml.exit(FHIR_NS, name);
27460    }
27461  }
27462
27463  protected void composeExplanationOfBenefitPaymentComponentElements(ExplanationOfBenefit.PaymentComponent element) throws IOException {
27464      composeBackboneElements(element);
27465      if (element.hasType()) {
27466        composeCodeableConcept("type", element.getType());
27467      }
27468      if (element.hasAdjustment()) {
27469        composeMoney("adjustment", element.getAdjustment());
27470      }
27471      if (element.hasAdjustmentReason()) {
27472        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
27473      }
27474      if (element.hasDateElement()) {
27475        composeDate("date", element.getDateElement());
27476      }
27477      if (element.hasAmount()) {
27478        composeMoney("amount", element.getAmount());
27479      }
27480      if (element.hasIdentifier()) {
27481        composeIdentifier("identifier", element.getIdentifier());
27482      }
27483  }
27484
27485  protected void composeExplanationOfBenefitNoteComponent(String name, ExplanationOfBenefit.NoteComponent element) throws IOException {
27486    if (element != null) {
27487      composeElementAttributes(element);
27488      xml.enter(FHIR_NS, name);
27489      composeExplanationOfBenefitNoteComponentElements(element);
27490      composeElementClose(element);
27491      xml.exit(FHIR_NS, name);
27492    }
27493  }
27494
27495  protected void composeExplanationOfBenefitNoteComponentElements(ExplanationOfBenefit.NoteComponent element) throws IOException {
27496      composeBackboneElements(element);
27497      if (element.hasNumberElement()) {
27498        composePositiveInt("number", element.getNumberElement());
27499      }
27500      if (element.hasType()) {
27501        composeCodeableConcept("type", element.getType());
27502      }
27503      if (element.hasTextElement()) {
27504        composeString("text", element.getTextElement());
27505      }
27506      if (element.hasLanguage()) {
27507        composeCodeableConcept("language", element.getLanguage());
27508      }
27509  }
27510
27511  protected void composeExplanationOfBenefitBenefitBalanceComponent(String name, ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
27512    if (element != null) {
27513      composeElementAttributes(element);
27514      xml.enter(FHIR_NS, name);
27515      composeExplanationOfBenefitBenefitBalanceComponentElements(element);
27516      composeElementClose(element);
27517      xml.exit(FHIR_NS, name);
27518    }
27519  }
27520
27521  protected void composeExplanationOfBenefitBenefitBalanceComponentElements(ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
27522      composeBackboneElements(element);
27523      if (element.hasCategory()) {
27524        composeCodeableConcept("category", element.getCategory());
27525      }
27526      if (element.hasSubCategory()) {
27527        composeCodeableConcept("subCategory", element.getSubCategory());
27528      }
27529      if (element.hasExcludedElement()) {
27530        composeBoolean("excluded", element.getExcludedElement());
27531      }
27532      if (element.hasNameElement()) {
27533        composeString("name", element.getNameElement());
27534      }
27535      if (element.hasDescriptionElement()) {
27536        composeString("description", element.getDescriptionElement());
27537      }
27538      if (element.hasNetwork()) {
27539        composeCodeableConcept("network", element.getNetwork());
27540      }
27541      if (element.hasUnit()) {
27542        composeCodeableConcept("unit", element.getUnit());
27543      }
27544      if (element.hasTerm()) {
27545        composeCodeableConcept("term", element.getTerm());
27546      }
27547      if (element.hasFinancial()) { 
27548        for (ExplanationOfBenefit.BenefitComponent e : element.getFinancial()) 
27549          composeExplanationOfBenefitBenefitComponent("financial", e);
27550      }
27551  }
27552
27553  protected void composeExplanationOfBenefitBenefitComponent(String name, ExplanationOfBenefit.BenefitComponent element) throws IOException {
27554    if (element != null) {
27555      composeElementAttributes(element);
27556      xml.enter(FHIR_NS, name);
27557      composeExplanationOfBenefitBenefitComponentElements(element);
27558      composeElementClose(element);
27559      xml.exit(FHIR_NS, name);
27560    }
27561  }
27562
27563  protected void composeExplanationOfBenefitBenefitComponentElements(ExplanationOfBenefit.BenefitComponent element) throws IOException {
27564      composeBackboneElements(element);
27565      if (element.hasType()) {
27566        composeCodeableConcept("type", element.getType());
27567      }
27568      if (element.hasAllowed()) {
27569        composeType("allowed", element.getAllowed());
27570      }      if (element.hasUsed()) {
27571        composeType("used", element.getUsed());
27572      }  }
27573
27574  protected void composeFamilyMemberHistory(String name, FamilyMemberHistory element) throws IOException {
27575    if (element != null) {
27576      composeDomainResourceAttributes(element);
27577      xml.enter(FHIR_NS, name);
27578      composeFamilyMemberHistoryElements(element);
27579      composeElementClose(element);
27580      xml.exit(FHIR_NS, name);
27581    }
27582  }
27583
27584  protected void composeFamilyMemberHistoryElements(FamilyMemberHistory element) throws IOException {
27585      composeDomainResourceElements(element);
27586      if (element.hasIdentifier()) { 
27587        for (Identifier e : element.getIdentifier()) 
27588          composeIdentifier("identifier", e);
27589      }
27590      if (element.hasDefinition()) { 
27591        for (Reference e : element.getDefinition()) 
27592          composeReference("definition", e);
27593      }
27594      if (element.hasStatusElement())
27595        composeEnumeration("status", element.getStatusElement(), new FamilyMemberHistory.FamilyHistoryStatusEnumFactory());
27596      if (element.hasNotDoneElement()) {
27597        composeBoolean("notDone", element.getNotDoneElement());
27598      }
27599      if (element.hasNotDoneReason()) {
27600        composeCodeableConcept("notDoneReason", element.getNotDoneReason());
27601      }
27602      if (element.hasPatient()) {
27603        composeReference("patient", element.getPatient());
27604      }
27605      if (element.hasDateElement()) {
27606        composeDateTime("date", element.getDateElement());
27607      }
27608      if (element.hasNameElement()) {
27609        composeString("name", element.getNameElement());
27610      }
27611      if (element.hasRelationship()) {
27612        composeCodeableConcept("relationship", element.getRelationship());
27613      }
27614      if (element.hasGenderElement())
27615        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
27616      if (element.hasBorn()) {
27617        composeType("born", element.getBorn());
27618      }      if (element.hasAge()) {
27619        composeType("age", element.getAge());
27620      }      if (element.hasEstimatedAgeElement()) {
27621        composeBoolean("estimatedAge", element.getEstimatedAgeElement());
27622      }
27623      if (element.hasDeceased()) {
27624        composeType("deceased", element.getDeceased());
27625      }      if (element.hasReasonCode()) { 
27626        for (CodeableConcept e : element.getReasonCode()) 
27627          composeCodeableConcept("reasonCode", e);
27628      }
27629      if (element.hasReasonReference()) { 
27630        for (Reference e : element.getReasonReference()) 
27631          composeReference("reasonReference", e);
27632      }
27633      if (element.hasNote()) { 
27634        for (Annotation e : element.getNote()) 
27635          composeAnnotation("note", e);
27636      }
27637      if (element.hasCondition()) { 
27638        for (FamilyMemberHistory.FamilyMemberHistoryConditionComponent e : element.getCondition()) 
27639          composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent("condition", e);
27640      }
27641  }
27642
27643  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
27644    if (element != null) {
27645      composeElementAttributes(element);
27646      xml.enter(FHIR_NS, name);
27647      composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(element);
27648      composeElementClose(element);
27649      xml.exit(FHIR_NS, name);
27650    }
27651  }
27652
27653  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
27654      composeBackboneElements(element);
27655      if (element.hasCode()) {
27656        composeCodeableConcept("code", element.getCode());
27657      }
27658      if (element.hasOutcome()) {
27659        composeCodeableConcept("outcome", element.getOutcome());
27660      }
27661      if (element.hasOnset()) {
27662        composeType("onset", element.getOnset());
27663      }      if (element.hasNote()) { 
27664        for (Annotation e : element.getNote()) 
27665          composeAnnotation("note", e);
27666      }
27667  }
27668
27669  protected void composeFlag(String name, Flag element) throws IOException {
27670    if (element != null) {
27671      composeDomainResourceAttributes(element);
27672      xml.enter(FHIR_NS, name);
27673      composeFlagElements(element);
27674      composeElementClose(element);
27675      xml.exit(FHIR_NS, name);
27676    }
27677  }
27678
27679  protected void composeFlagElements(Flag element) throws IOException {
27680      composeDomainResourceElements(element);
27681      if (element.hasIdentifier()) { 
27682        for (Identifier e : element.getIdentifier()) 
27683          composeIdentifier("identifier", e);
27684      }
27685      if (element.hasStatusElement())
27686        composeEnumeration("status", element.getStatusElement(), new Flag.FlagStatusEnumFactory());
27687      if (element.hasCategory()) {
27688        composeCodeableConcept("category", element.getCategory());
27689      }
27690      if (element.hasCode()) {
27691        composeCodeableConcept("code", element.getCode());
27692      }
27693      if (element.hasSubject()) {
27694        composeReference("subject", element.getSubject());
27695      }
27696      if (element.hasPeriod()) {
27697        composePeriod("period", element.getPeriod());
27698      }
27699      if (element.hasEncounter()) {
27700        composeReference("encounter", element.getEncounter());
27701      }
27702      if (element.hasAuthor()) {
27703        composeReference("author", element.getAuthor());
27704      }
27705  }
27706
27707  protected void composeGoal(String name, Goal element) throws IOException {
27708    if (element != null) {
27709      composeDomainResourceAttributes(element);
27710      xml.enter(FHIR_NS, name);
27711      composeGoalElements(element);
27712      composeElementClose(element);
27713      xml.exit(FHIR_NS, name);
27714    }
27715  }
27716
27717  protected void composeGoalElements(Goal element) throws IOException {
27718      composeDomainResourceElements(element);
27719      if (element.hasIdentifier()) { 
27720        for (Identifier e : element.getIdentifier()) 
27721          composeIdentifier("identifier", e);
27722      }
27723      if (element.hasStatusElement())
27724        composeEnumeration("status", element.getStatusElement(), new Goal.GoalStatusEnumFactory());
27725      if (element.hasCategory()) { 
27726        for (CodeableConcept e : element.getCategory()) 
27727          composeCodeableConcept("category", e);
27728      }
27729      if (element.hasPriority()) {
27730        composeCodeableConcept("priority", element.getPriority());
27731      }
27732      if (element.hasDescription()) {
27733        composeCodeableConcept("description", element.getDescription());
27734      }
27735      if (element.hasSubject()) {
27736        composeReference("subject", element.getSubject());
27737      }
27738      if (element.hasStart()) {
27739        composeType("start", element.getStart());
27740      }      if (element.hasTarget()) {
27741        composeGoalGoalTargetComponent("target", element.getTarget());
27742      }
27743      if (element.hasStatusDateElement()) {
27744        composeDate("statusDate", element.getStatusDateElement());
27745      }
27746      if (element.hasStatusReasonElement()) {
27747        composeString("statusReason", element.getStatusReasonElement());
27748      }
27749      if (element.hasExpressedBy()) {
27750        composeReference("expressedBy", element.getExpressedBy());
27751      }
27752      if (element.hasAddresses()) { 
27753        for (Reference e : element.getAddresses()) 
27754          composeReference("addresses", e);
27755      }
27756      if (element.hasNote()) { 
27757        for (Annotation e : element.getNote()) 
27758          composeAnnotation("note", e);
27759      }
27760      if (element.hasOutcomeCode()) { 
27761        for (CodeableConcept e : element.getOutcomeCode()) 
27762          composeCodeableConcept("outcomeCode", e);
27763      }
27764      if (element.hasOutcomeReference()) { 
27765        for (Reference e : element.getOutcomeReference()) 
27766          composeReference("outcomeReference", e);
27767      }
27768  }
27769
27770  protected void composeGoalGoalTargetComponent(String name, Goal.GoalTargetComponent element) throws IOException {
27771    if (element != null) {
27772      composeElementAttributes(element);
27773      xml.enter(FHIR_NS, name);
27774      composeGoalGoalTargetComponentElements(element);
27775      composeElementClose(element);
27776      xml.exit(FHIR_NS, name);
27777    }
27778  }
27779
27780  protected void composeGoalGoalTargetComponentElements(Goal.GoalTargetComponent element) throws IOException {
27781      composeBackboneElements(element);
27782      if (element.hasMeasure()) {
27783        composeCodeableConcept("measure", element.getMeasure());
27784      }
27785      if (element.hasDetail()) {
27786        composeType("detail", element.getDetail());
27787      }      if (element.hasDue()) {
27788        composeType("due", element.getDue());
27789      }  }
27790
27791  protected void composeGraphDefinition(String name, GraphDefinition element) throws IOException {
27792    if (element != null) {
27793      composeDomainResourceAttributes(element);
27794      xml.enter(FHIR_NS, name);
27795      composeGraphDefinitionElements(element);
27796      composeElementClose(element);
27797      xml.exit(FHIR_NS, name);
27798    }
27799  }
27800
27801  protected void composeGraphDefinitionElements(GraphDefinition element) throws IOException {
27802      composeDomainResourceElements(element);
27803      if (element.hasUrlElement()) {
27804        composeUri("url", element.getUrlElement());
27805      }
27806      if (element.hasVersionElement()) {
27807        composeString("version", element.getVersionElement());
27808      }
27809      if (element.hasNameElement()) {
27810        composeString("name", element.getNameElement());
27811      }
27812      if (element.hasStatusElement())
27813        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
27814      if (element.hasExperimentalElement()) {
27815        composeBoolean("experimental", element.getExperimentalElement());
27816      }
27817      if (element.hasDateElement()) {
27818        composeDateTime("date", element.getDateElement());
27819      }
27820      if (element.hasPublisherElement()) {
27821        composeString("publisher", element.getPublisherElement());
27822      }
27823      if (element.hasContact()) { 
27824        for (ContactDetail e : element.getContact()) 
27825          composeContactDetail("contact", e);
27826      }
27827      if (element.hasDescriptionElement()) {
27828        composeMarkdown("description", element.getDescriptionElement());
27829      }
27830      if (element.hasUseContext()) { 
27831        for (UsageContext e : element.getUseContext()) 
27832          composeUsageContext("useContext", e);
27833      }
27834      if (element.hasJurisdiction()) { 
27835        for (CodeableConcept e : element.getJurisdiction()) 
27836          composeCodeableConcept("jurisdiction", e);
27837      }
27838      if (element.hasPurposeElement()) {
27839        composeMarkdown("purpose", element.getPurposeElement());
27840      }
27841      if (element.hasStartElement()) {
27842        composeCode("start", element.getStartElement());
27843      }
27844      if (element.hasProfileElement()) {
27845        composeUri("profile", element.getProfileElement());
27846      }
27847      if (element.hasLink()) { 
27848        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
27849          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
27850      }
27851  }
27852
27853  protected void composeGraphDefinitionGraphDefinitionLinkComponent(String name, GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
27854    if (element != null) {
27855      composeElementAttributes(element);
27856      xml.enter(FHIR_NS, name);
27857      composeGraphDefinitionGraphDefinitionLinkComponentElements(element);
27858      composeElementClose(element);
27859      xml.exit(FHIR_NS, name);
27860    }
27861  }
27862
27863  protected void composeGraphDefinitionGraphDefinitionLinkComponentElements(GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
27864      composeBackboneElements(element);
27865      if (element.hasPathElement()) {
27866        composeString("path", element.getPathElement());
27867      }
27868      if (element.hasSliceNameElement()) {
27869        composeString("sliceName", element.getSliceNameElement());
27870      }
27871      if (element.hasMinElement()) {
27872        composeInteger("min", element.getMinElement());
27873      }
27874      if (element.hasMaxElement()) {
27875        composeString("max", element.getMaxElement());
27876      }
27877      if (element.hasDescriptionElement()) {
27878        composeString("description", element.getDescriptionElement());
27879      }
27880      if (element.hasTarget()) { 
27881        for (GraphDefinition.GraphDefinitionLinkTargetComponent e : element.getTarget()) 
27882          composeGraphDefinitionGraphDefinitionLinkTargetComponent("target", e);
27883      }
27884  }
27885
27886  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponent(String name, GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
27887    if (element != null) {
27888      composeElementAttributes(element);
27889      xml.enter(FHIR_NS, name);
27890      composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(element);
27891      composeElementClose(element);
27892      xml.exit(FHIR_NS, name);
27893    }
27894  }
27895
27896  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
27897      composeBackboneElements(element);
27898      if (element.hasTypeElement()) {
27899        composeCode("type", element.getTypeElement());
27900      }
27901      if (element.hasProfileElement()) {
27902        composeUri("profile", element.getProfileElement());
27903      }
27904      if (element.hasCompartment()) { 
27905        for (GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent e : element.getCompartment()) 
27906          composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent("compartment", e);
27907      }
27908      if (element.hasLink()) { 
27909        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
27910          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
27911      }
27912  }
27913
27914  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(String name, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
27915    if (element != null) {
27916      composeElementAttributes(element);
27917      xml.enter(FHIR_NS, name);
27918      composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(element);
27919      composeElementClose(element);
27920      xml.exit(FHIR_NS, name);
27921    }
27922  }
27923
27924  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
27925      composeBackboneElements(element);
27926      if (element.hasCodeElement())
27927        composeEnumeration("code", element.getCodeElement(), new GraphDefinition.CompartmentCodeEnumFactory());
27928      if (element.hasRuleElement())
27929        composeEnumeration("rule", element.getRuleElement(), new GraphDefinition.GraphCompartmentRuleEnumFactory());
27930      if (element.hasExpressionElement()) {
27931        composeString("expression", element.getExpressionElement());
27932      }
27933      if (element.hasDescriptionElement()) {
27934        composeString("description", element.getDescriptionElement());
27935      }
27936  }
27937
27938  protected void composeGroup(String name, Group element) throws IOException {
27939    if (element != null) {
27940      composeDomainResourceAttributes(element);
27941      xml.enter(FHIR_NS, name);
27942      composeGroupElements(element);
27943      composeElementClose(element);
27944      xml.exit(FHIR_NS, name);
27945    }
27946  }
27947
27948  protected void composeGroupElements(Group element) throws IOException {
27949      composeDomainResourceElements(element);
27950      if (element.hasIdentifier()) { 
27951        for (Identifier e : element.getIdentifier()) 
27952          composeIdentifier("identifier", e);
27953      }
27954      if (element.hasActiveElement()) {
27955        composeBoolean("active", element.getActiveElement());
27956      }
27957      if (element.hasTypeElement())
27958        composeEnumeration("type", element.getTypeElement(), new Group.GroupTypeEnumFactory());
27959      if (element.hasActualElement()) {
27960        composeBoolean("actual", element.getActualElement());
27961      }
27962      if (element.hasCode()) {
27963        composeCodeableConcept("code", element.getCode());
27964      }
27965      if (element.hasNameElement()) {
27966        composeString("name", element.getNameElement());
27967      }
27968      if (element.hasQuantityElement()) {
27969        composeUnsignedInt("quantity", element.getQuantityElement());
27970      }
27971      if (element.hasCharacteristic()) { 
27972        for (Group.GroupCharacteristicComponent e : element.getCharacteristic()) 
27973          composeGroupGroupCharacteristicComponent("characteristic", e);
27974      }
27975      if (element.hasMember()) { 
27976        for (Group.GroupMemberComponent e : element.getMember()) 
27977          composeGroupGroupMemberComponent("member", e);
27978      }
27979  }
27980
27981  protected void composeGroupGroupCharacteristicComponent(String name, Group.GroupCharacteristicComponent element) throws IOException {
27982    if (element != null) {
27983      composeElementAttributes(element);
27984      xml.enter(FHIR_NS, name);
27985      composeGroupGroupCharacteristicComponentElements(element);
27986      composeElementClose(element);
27987      xml.exit(FHIR_NS, name);
27988    }
27989  }
27990
27991  protected void composeGroupGroupCharacteristicComponentElements(Group.GroupCharacteristicComponent element) throws IOException {
27992      composeBackboneElements(element);
27993      if (element.hasCode()) {
27994        composeCodeableConcept("code", element.getCode());
27995      }
27996      if (element.hasValue()) {
27997        composeType("value", element.getValue());
27998      }      if (element.hasExcludeElement()) {
27999        composeBoolean("exclude", element.getExcludeElement());
28000      }
28001      if (element.hasPeriod()) {
28002        composePeriod("period", element.getPeriod());
28003      }
28004  }
28005
28006  protected void composeGroupGroupMemberComponent(String name, Group.GroupMemberComponent element) throws IOException {
28007    if (element != null) {
28008      composeElementAttributes(element);
28009      xml.enter(FHIR_NS, name);
28010      composeGroupGroupMemberComponentElements(element);
28011      composeElementClose(element);
28012      xml.exit(FHIR_NS, name);
28013    }
28014  }
28015
28016  protected void composeGroupGroupMemberComponentElements(Group.GroupMemberComponent element) throws IOException {
28017      composeBackboneElements(element);
28018      if (element.hasEntity()) {
28019        composeReference("entity", element.getEntity());
28020      }
28021      if (element.hasPeriod()) {
28022        composePeriod("period", element.getPeriod());
28023      }
28024      if (element.hasInactiveElement()) {
28025        composeBoolean("inactive", element.getInactiveElement());
28026      }
28027  }
28028
28029  protected void composeGuidanceResponse(String name, GuidanceResponse element) throws IOException {
28030    if (element != null) {
28031      composeDomainResourceAttributes(element);
28032      xml.enter(FHIR_NS, name);
28033      composeGuidanceResponseElements(element);
28034      composeElementClose(element);
28035      xml.exit(FHIR_NS, name);
28036    }
28037  }
28038
28039  protected void composeGuidanceResponseElements(GuidanceResponse element) throws IOException {
28040      composeDomainResourceElements(element);
28041      if (element.hasRequestIdElement()) {
28042        composeId("requestId", element.getRequestIdElement());
28043      }
28044      if (element.hasIdentifier()) {
28045        composeIdentifier("identifier", element.getIdentifier());
28046      }
28047      if (element.hasModule()) {
28048        composeReference("module", element.getModule());
28049      }
28050      if (element.hasStatusElement())
28051        composeEnumeration("status", element.getStatusElement(), new GuidanceResponse.GuidanceResponseStatusEnumFactory());
28052      if (element.hasSubject()) {
28053        composeReference("subject", element.getSubject());
28054      }
28055      if (element.hasContext()) {
28056        composeReference("context", element.getContext());
28057      }
28058      if (element.hasOccurrenceDateTimeElement()) {
28059        composeDateTime("occurrenceDateTime", element.getOccurrenceDateTimeElement());
28060      }
28061      if (element.hasPerformer()) {
28062        composeReference("performer", element.getPerformer());
28063      }
28064      if (element.hasReason()) {
28065        composeType("reason", element.getReason());
28066      }      if (element.hasNote()) { 
28067        for (Annotation e : element.getNote()) 
28068          composeAnnotation("note", e);
28069      }
28070      if (element.hasEvaluationMessage()) { 
28071        for (Reference e : element.getEvaluationMessage()) 
28072          composeReference("evaluationMessage", e);
28073      }
28074      if (element.hasOutputParameters()) {
28075        composeReference("outputParameters", element.getOutputParameters());
28076      }
28077      if (element.hasResult()) {
28078        composeReference("result", element.getResult());
28079      }
28080      if (element.hasDataRequirement()) { 
28081        for (DataRequirement e : element.getDataRequirement()) 
28082          composeDataRequirement("dataRequirement", e);
28083      }
28084  }
28085
28086  protected void composeHealthcareService(String name, HealthcareService element) throws IOException {
28087    if (element != null) {
28088      composeDomainResourceAttributes(element);
28089      xml.enter(FHIR_NS, name);
28090      composeHealthcareServiceElements(element);
28091      composeElementClose(element);
28092      xml.exit(FHIR_NS, name);
28093    }
28094  }
28095
28096  protected void composeHealthcareServiceElements(HealthcareService element) throws IOException {
28097      composeDomainResourceElements(element);
28098      if (element.hasIdentifier()) { 
28099        for (Identifier e : element.getIdentifier()) 
28100          composeIdentifier("identifier", e);
28101      }
28102      if (element.hasActiveElement()) {
28103        composeBoolean("active", element.getActiveElement());
28104      }
28105      if (element.hasProvidedBy()) {
28106        composeReference("providedBy", element.getProvidedBy());
28107      }
28108      if (element.hasCategory()) {
28109        composeCodeableConcept("category", element.getCategory());
28110      }
28111      if (element.hasType()) { 
28112        for (CodeableConcept e : element.getType()) 
28113          composeCodeableConcept("type", e);
28114      }
28115      if (element.hasSpecialty()) { 
28116        for (CodeableConcept e : element.getSpecialty()) 
28117          composeCodeableConcept("specialty", e);
28118      }
28119      if (element.hasLocation()) { 
28120        for (Reference e : element.getLocation()) 
28121          composeReference("location", e);
28122      }
28123      if (element.hasNameElement()) {
28124        composeString("name", element.getNameElement());
28125      }
28126      if (element.hasCommentElement()) {
28127        composeString("comment", element.getCommentElement());
28128      }
28129      if (element.hasExtraDetailsElement()) {
28130        composeString("extraDetails", element.getExtraDetailsElement());
28131      }
28132      if (element.hasPhoto()) {
28133        composeAttachment("photo", element.getPhoto());
28134      }
28135      if (element.hasTelecom()) { 
28136        for (ContactPoint e : element.getTelecom()) 
28137          composeContactPoint("telecom", e);
28138      }
28139      if (element.hasCoverageArea()) { 
28140        for (Reference e : element.getCoverageArea()) 
28141          composeReference("coverageArea", e);
28142      }
28143      if (element.hasServiceProvisionCode()) { 
28144        for (CodeableConcept e : element.getServiceProvisionCode()) 
28145          composeCodeableConcept("serviceProvisionCode", e);
28146      }
28147      if (element.hasEligibility()) {
28148        composeCodeableConcept("eligibility", element.getEligibility());
28149      }
28150      if (element.hasEligibilityNoteElement()) {
28151        composeString("eligibilityNote", element.getEligibilityNoteElement());
28152      }
28153      if (element.hasProgramName()) { 
28154        for (StringType e : element.getProgramName()) 
28155          composeString("programName", e);
28156      }
28157      if (element.hasCharacteristic()) { 
28158        for (CodeableConcept e : element.getCharacteristic()) 
28159          composeCodeableConcept("characteristic", e);
28160      }
28161      if (element.hasReferralMethod()) { 
28162        for (CodeableConcept e : element.getReferralMethod()) 
28163          composeCodeableConcept("referralMethod", e);
28164      }
28165      if (element.hasAppointmentRequiredElement()) {
28166        composeBoolean("appointmentRequired", element.getAppointmentRequiredElement());
28167      }
28168      if (element.hasAvailableTime()) { 
28169        for (HealthcareService.HealthcareServiceAvailableTimeComponent e : element.getAvailableTime()) 
28170          composeHealthcareServiceHealthcareServiceAvailableTimeComponent("availableTime", e);
28171      }
28172      if (element.hasNotAvailable()) { 
28173        for (HealthcareService.HealthcareServiceNotAvailableComponent e : element.getNotAvailable()) 
28174          composeHealthcareServiceHealthcareServiceNotAvailableComponent("notAvailable", e);
28175      }
28176      if (element.hasAvailabilityExceptionsElement()) {
28177        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
28178      }
28179      if (element.hasEndpoint()) { 
28180        for (Reference e : element.getEndpoint()) 
28181          composeReference("endpoint", e);
28182      }
28183  }
28184
28185  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponent(String name, HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
28186    if (element != null) {
28187      composeElementAttributes(element);
28188      xml.enter(FHIR_NS, name);
28189      composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(element);
28190      composeElementClose(element);
28191      xml.exit(FHIR_NS, name);
28192    }
28193  }
28194
28195  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
28196      composeBackboneElements(element);
28197        if (element.hasDaysOfWeek()) 
28198          for (Enumeration<HealthcareService.DaysOfWeek> e : element.getDaysOfWeek()) 
28199            composeEnumeration("daysOfWeek", e, new HealthcareService.DaysOfWeekEnumFactory());
28200      if (element.hasAllDayElement()) {
28201        composeBoolean("allDay", element.getAllDayElement());
28202      }
28203      if (element.hasAvailableStartTimeElement()) {
28204        composeTime("availableStartTime", element.getAvailableStartTimeElement());
28205      }
28206      if (element.hasAvailableEndTimeElement()) {
28207        composeTime("availableEndTime", element.getAvailableEndTimeElement());
28208      }
28209  }
28210
28211  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponent(String name, HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
28212    if (element != null) {
28213      composeElementAttributes(element);
28214      xml.enter(FHIR_NS, name);
28215      composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(element);
28216      composeElementClose(element);
28217      xml.exit(FHIR_NS, name);
28218    }
28219  }
28220
28221  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
28222      composeBackboneElements(element);
28223      if (element.hasDescriptionElement()) {
28224        composeString("description", element.getDescriptionElement());
28225      }
28226      if (element.hasDuring()) {
28227        composePeriod("during", element.getDuring());
28228      }
28229  }
28230
28231  protected void composeImagingManifest(String name, ImagingManifest element) throws IOException {
28232    if (element != null) {
28233      composeDomainResourceAttributes(element);
28234      xml.enter(FHIR_NS, name);
28235      composeImagingManifestElements(element);
28236      composeElementClose(element);
28237      xml.exit(FHIR_NS, name);
28238    }
28239  }
28240
28241  protected void composeImagingManifestElements(ImagingManifest element) throws IOException {
28242      composeDomainResourceElements(element);
28243      if (element.hasIdentifier()) {
28244        composeIdentifier("identifier", element.getIdentifier());
28245      }
28246      if (element.hasPatient()) {
28247        composeReference("patient", element.getPatient());
28248      }
28249      if (element.hasAuthoringTimeElement()) {
28250        composeDateTime("authoringTime", element.getAuthoringTimeElement());
28251      }
28252      if (element.hasAuthor()) {
28253        composeReference("author", element.getAuthor());
28254      }
28255      if (element.hasDescriptionElement()) {
28256        composeString("description", element.getDescriptionElement());
28257      }
28258      if (element.hasStudy()) { 
28259        for (ImagingManifest.StudyComponent e : element.getStudy()) 
28260          composeImagingManifestStudyComponent("study", e);
28261      }
28262  }
28263
28264  protected void composeImagingManifestStudyComponent(String name, ImagingManifest.StudyComponent element) throws IOException {
28265    if (element != null) {
28266      composeElementAttributes(element);
28267      xml.enter(FHIR_NS, name);
28268      composeImagingManifestStudyComponentElements(element);
28269      composeElementClose(element);
28270      xml.exit(FHIR_NS, name);
28271    }
28272  }
28273
28274  protected void composeImagingManifestStudyComponentElements(ImagingManifest.StudyComponent element) throws IOException {
28275      composeBackboneElements(element);
28276      if (element.hasUidElement()) {
28277        composeOid("uid", element.getUidElement());
28278      }
28279      if (element.hasImagingStudy()) {
28280        composeReference("imagingStudy", element.getImagingStudy());
28281      }
28282      if (element.hasEndpoint()) { 
28283        for (Reference e : element.getEndpoint()) 
28284          composeReference("endpoint", e);
28285      }
28286      if (element.hasSeries()) { 
28287        for (ImagingManifest.SeriesComponent e : element.getSeries()) 
28288          composeImagingManifestSeriesComponent("series", e);
28289      }
28290  }
28291
28292  protected void composeImagingManifestSeriesComponent(String name, ImagingManifest.SeriesComponent element) throws IOException {
28293    if (element != null) {
28294      composeElementAttributes(element);
28295      xml.enter(FHIR_NS, name);
28296      composeImagingManifestSeriesComponentElements(element);
28297      composeElementClose(element);
28298      xml.exit(FHIR_NS, name);
28299    }
28300  }
28301
28302  protected void composeImagingManifestSeriesComponentElements(ImagingManifest.SeriesComponent element) throws IOException {
28303      composeBackboneElements(element);
28304      if (element.hasUidElement()) {
28305        composeOid("uid", element.getUidElement());
28306      }
28307      if (element.hasEndpoint()) { 
28308        for (Reference e : element.getEndpoint()) 
28309          composeReference("endpoint", e);
28310      }
28311      if (element.hasInstance()) { 
28312        for (ImagingManifest.InstanceComponent e : element.getInstance()) 
28313          composeImagingManifestInstanceComponent("instance", e);
28314      }
28315  }
28316
28317  protected void composeImagingManifestInstanceComponent(String name, ImagingManifest.InstanceComponent element) throws IOException {
28318    if (element != null) {
28319      composeElementAttributes(element);
28320      xml.enter(FHIR_NS, name);
28321      composeImagingManifestInstanceComponentElements(element);
28322      composeElementClose(element);
28323      xml.exit(FHIR_NS, name);
28324    }
28325  }
28326
28327  protected void composeImagingManifestInstanceComponentElements(ImagingManifest.InstanceComponent element) throws IOException {
28328      composeBackboneElements(element);
28329      if (element.hasSopClassElement()) {
28330        composeOid("sopClass", element.getSopClassElement());
28331      }
28332      if (element.hasUidElement()) {
28333        composeOid("uid", element.getUidElement());
28334      }
28335  }
28336
28337  protected void composeImagingStudy(String name, ImagingStudy element) throws IOException {
28338    if (element != null) {
28339      composeDomainResourceAttributes(element);
28340      xml.enter(FHIR_NS, name);
28341      composeImagingStudyElements(element);
28342      composeElementClose(element);
28343      xml.exit(FHIR_NS, name);
28344    }
28345  }
28346
28347  protected void composeImagingStudyElements(ImagingStudy element) throws IOException {
28348      composeDomainResourceElements(element);
28349      if (element.hasUidElement()) {
28350        composeOid("uid", element.getUidElement());
28351      }
28352      if (element.hasAccession()) {
28353        composeIdentifier("accession", element.getAccession());
28354      }
28355      if (element.hasIdentifier()) { 
28356        for (Identifier e : element.getIdentifier()) 
28357          composeIdentifier("identifier", e);
28358      }
28359      if (element.hasAvailabilityElement())
28360        composeEnumeration("availability", element.getAvailabilityElement(), new ImagingStudy.InstanceAvailabilityEnumFactory());
28361      if (element.hasModalityList()) { 
28362        for (Coding e : element.getModalityList()) 
28363          composeCoding("modalityList", e);
28364      }
28365      if (element.hasPatient()) {
28366        composeReference("patient", element.getPatient());
28367      }
28368      if (element.hasContext()) {
28369        composeReference("context", element.getContext());
28370      }
28371      if (element.hasStartedElement()) {
28372        composeDateTime("started", element.getStartedElement());
28373      }
28374      if (element.hasBasedOn()) { 
28375        for (Reference e : element.getBasedOn()) 
28376          composeReference("basedOn", e);
28377      }
28378      if (element.hasReferrer()) {
28379        composeReference("referrer", element.getReferrer());
28380      }
28381      if (element.hasInterpreter()) { 
28382        for (Reference e : element.getInterpreter()) 
28383          composeReference("interpreter", e);
28384      }
28385      if (element.hasEndpoint()) { 
28386        for (Reference e : element.getEndpoint()) 
28387          composeReference("endpoint", e);
28388      }
28389      if (element.hasNumberOfSeriesElement()) {
28390        composeUnsignedInt("numberOfSeries", element.getNumberOfSeriesElement());
28391      }
28392      if (element.hasNumberOfInstancesElement()) {
28393        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
28394      }
28395      if (element.hasProcedureReference()) { 
28396        for (Reference e : element.getProcedureReference()) 
28397          composeReference("procedureReference", e);
28398      }
28399      if (element.hasProcedureCode()) { 
28400        for (CodeableConcept e : element.getProcedureCode()) 
28401          composeCodeableConcept("procedureCode", e);
28402      }
28403      if (element.hasReason()) {
28404        composeCodeableConcept("reason", element.getReason());
28405      }
28406      if (element.hasDescriptionElement()) {
28407        composeString("description", element.getDescriptionElement());
28408      }
28409      if (element.hasSeries()) { 
28410        for (ImagingStudy.ImagingStudySeriesComponent e : element.getSeries()) 
28411          composeImagingStudyImagingStudySeriesComponent("series", e);
28412      }
28413  }
28414
28415  protected void composeImagingStudyImagingStudySeriesComponent(String name, ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
28416    if (element != null) {
28417      composeElementAttributes(element);
28418      xml.enter(FHIR_NS, name);
28419      composeImagingStudyImagingStudySeriesComponentElements(element);
28420      composeElementClose(element);
28421      xml.exit(FHIR_NS, name);
28422    }
28423  }
28424
28425  protected void composeImagingStudyImagingStudySeriesComponentElements(ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
28426      composeBackboneElements(element);
28427      if (element.hasUidElement()) {
28428        composeOid("uid", element.getUidElement());
28429      }
28430      if (element.hasNumberElement()) {
28431        composeUnsignedInt("number", element.getNumberElement());
28432      }
28433      if (element.hasModality()) {
28434        composeCoding("modality", element.getModality());
28435      }
28436      if (element.hasDescriptionElement()) {
28437        composeString("description", element.getDescriptionElement());
28438      }
28439      if (element.hasNumberOfInstancesElement()) {
28440        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
28441      }
28442      if (element.hasAvailabilityElement())
28443        composeEnumeration("availability", element.getAvailabilityElement(), new ImagingStudy.InstanceAvailabilityEnumFactory());
28444      if (element.hasEndpoint()) { 
28445        for (Reference e : element.getEndpoint()) 
28446          composeReference("endpoint", e);
28447      }
28448      if (element.hasBodySite()) {
28449        composeCoding("bodySite", element.getBodySite());
28450      }
28451      if (element.hasLaterality()) {
28452        composeCoding("laterality", element.getLaterality());
28453      }
28454      if (element.hasStartedElement()) {
28455        composeDateTime("started", element.getStartedElement());
28456      }
28457      if (element.hasPerformer()) { 
28458        for (Reference e : element.getPerformer()) 
28459          composeReference("performer", e);
28460      }
28461      if (element.hasInstance()) { 
28462        for (ImagingStudy.ImagingStudySeriesInstanceComponent e : element.getInstance()) 
28463          composeImagingStudyImagingStudySeriesInstanceComponent("instance", e);
28464      }
28465  }
28466
28467  protected void composeImagingStudyImagingStudySeriesInstanceComponent(String name, ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
28468    if (element != null) {
28469      composeElementAttributes(element);
28470      xml.enter(FHIR_NS, name);
28471      composeImagingStudyImagingStudySeriesInstanceComponentElements(element);
28472      composeElementClose(element);
28473      xml.exit(FHIR_NS, name);
28474    }
28475  }
28476
28477  protected void composeImagingStudyImagingStudySeriesInstanceComponentElements(ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
28478      composeBackboneElements(element);
28479      if (element.hasUidElement()) {
28480        composeOid("uid", element.getUidElement());
28481      }
28482      if (element.hasNumberElement()) {
28483        composeUnsignedInt("number", element.getNumberElement());
28484      }
28485      if (element.hasSopClassElement()) {
28486        composeOid("sopClass", element.getSopClassElement());
28487      }
28488      if (element.hasTitleElement()) {
28489        composeString("title", element.getTitleElement());
28490      }
28491  }
28492
28493  protected void composeImmunization(String name, Immunization element) throws IOException {
28494    if (element != null) {
28495      composeDomainResourceAttributes(element);
28496      xml.enter(FHIR_NS, name);
28497      composeImmunizationElements(element);
28498      composeElementClose(element);
28499      xml.exit(FHIR_NS, name);
28500    }
28501  }
28502
28503  protected void composeImmunizationElements(Immunization element) throws IOException {
28504      composeDomainResourceElements(element);
28505      if (element.hasIdentifier()) { 
28506        for (Identifier e : element.getIdentifier()) 
28507          composeIdentifier("identifier", e);
28508      }
28509      if (element.hasStatusElement())
28510        composeEnumeration("status", element.getStatusElement(), new Immunization.ImmunizationStatusEnumFactory());
28511      if (element.hasNotGivenElement()) {
28512        composeBoolean("notGiven", element.getNotGivenElement());
28513      }
28514      if (element.hasVaccineCode()) {
28515        composeCodeableConcept("vaccineCode", element.getVaccineCode());
28516      }
28517      if (element.hasPatient()) {
28518        composeReference("patient", element.getPatient());
28519      }
28520      if (element.hasEncounter()) {
28521        composeReference("encounter", element.getEncounter());
28522      }
28523      if (element.hasDateElement()) {
28524        composeDateTime("date", element.getDateElement());
28525      }
28526      if (element.hasPrimarySourceElement()) {
28527        composeBoolean("primarySource", element.getPrimarySourceElement());
28528      }
28529      if (element.hasReportOrigin()) {
28530        composeCodeableConcept("reportOrigin", element.getReportOrigin());
28531      }
28532      if (element.hasLocation()) {
28533        composeReference("location", element.getLocation());
28534      }
28535      if (element.hasManufacturer()) {
28536        composeReference("manufacturer", element.getManufacturer());
28537      }
28538      if (element.hasLotNumberElement()) {
28539        composeString("lotNumber", element.getLotNumberElement());
28540      }
28541      if (element.hasExpirationDateElement()) {
28542        composeDate("expirationDate", element.getExpirationDateElement());
28543      }
28544      if (element.hasSite()) {
28545        composeCodeableConcept("site", element.getSite());
28546      }
28547      if (element.hasRoute()) {
28548        composeCodeableConcept("route", element.getRoute());
28549      }
28550      if (element.hasDoseQuantity()) {
28551        composeSimpleQuantity("doseQuantity", element.getDoseQuantity());
28552      }
28553      if (element.hasPractitioner()) { 
28554        for (Immunization.ImmunizationPractitionerComponent e : element.getPractitioner()) 
28555          composeImmunizationImmunizationPractitionerComponent("practitioner", e);
28556      }
28557      if (element.hasNote()) { 
28558        for (Annotation e : element.getNote()) 
28559          composeAnnotation("note", e);
28560      }
28561      if (element.hasExplanation()) {
28562        composeImmunizationImmunizationExplanationComponent("explanation", element.getExplanation());
28563      }
28564      if (element.hasReaction()) { 
28565        for (Immunization.ImmunizationReactionComponent e : element.getReaction()) 
28566          composeImmunizationImmunizationReactionComponent("reaction", e);
28567      }
28568      if (element.hasVaccinationProtocol()) { 
28569        for (Immunization.ImmunizationVaccinationProtocolComponent e : element.getVaccinationProtocol()) 
28570          composeImmunizationImmunizationVaccinationProtocolComponent("vaccinationProtocol", e);
28571      }
28572  }
28573
28574  protected void composeImmunizationImmunizationPractitionerComponent(String name, Immunization.ImmunizationPractitionerComponent element) throws IOException {
28575    if (element != null) {
28576      composeElementAttributes(element);
28577      xml.enter(FHIR_NS, name);
28578      composeImmunizationImmunizationPractitionerComponentElements(element);
28579      composeElementClose(element);
28580      xml.exit(FHIR_NS, name);
28581    }
28582  }
28583
28584  protected void composeImmunizationImmunizationPractitionerComponentElements(Immunization.ImmunizationPractitionerComponent element) throws IOException {
28585      composeBackboneElements(element);
28586      if (element.hasRole()) {
28587        composeCodeableConcept("role", element.getRole());
28588      }
28589      if (element.hasActor()) {
28590        composeReference("actor", element.getActor());
28591      }
28592  }
28593
28594  protected void composeImmunizationImmunizationExplanationComponent(String name, Immunization.ImmunizationExplanationComponent element) throws IOException {
28595    if (element != null) {
28596      composeElementAttributes(element);
28597      xml.enter(FHIR_NS, name);
28598      composeImmunizationImmunizationExplanationComponentElements(element);
28599      composeElementClose(element);
28600      xml.exit(FHIR_NS, name);
28601    }
28602  }
28603
28604  protected void composeImmunizationImmunizationExplanationComponentElements(Immunization.ImmunizationExplanationComponent element) throws IOException {
28605      composeBackboneElements(element);
28606      if (element.hasReason()) { 
28607        for (CodeableConcept e : element.getReason()) 
28608          composeCodeableConcept("reason", e);
28609      }
28610      if (element.hasReasonNotGiven()) { 
28611        for (CodeableConcept e : element.getReasonNotGiven()) 
28612          composeCodeableConcept("reasonNotGiven", e);
28613      }
28614  }
28615
28616  protected void composeImmunizationImmunizationReactionComponent(String name, Immunization.ImmunizationReactionComponent element) throws IOException {
28617    if (element != null) {
28618      composeElementAttributes(element);
28619      xml.enter(FHIR_NS, name);
28620      composeImmunizationImmunizationReactionComponentElements(element);
28621      composeElementClose(element);
28622      xml.exit(FHIR_NS, name);
28623    }
28624  }
28625
28626  protected void composeImmunizationImmunizationReactionComponentElements(Immunization.ImmunizationReactionComponent element) throws IOException {
28627      composeBackboneElements(element);
28628      if (element.hasDateElement()) {
28629        composeDateTime("date", element.getDateElement());
28630      }
28631      if (element.hasDetail()) {
28632        composeReference("detail", element.getDetail());
28633      }
28634      if (element.hasReportedElement()) {
28635        composeBoolean("reported", element.getReportedElement());
28636      }
28637  }
28638
28639  protected void composeImmunizationImmunizationVaccinationProtocolComponent(String name, Immunization.ImmunizationVaccinationProtocolComponent element) throws IOException {
28640    if (element != null) {
28641      composeElementAttributes(element);
28642      xml.enter(FHIR_NS, name);
28643      composeImmunizationImmunizationVaccinationProtocolComponentElements(element);
28644      composeElementClose(element);
28645      xml.exit(FHIR_NS, name);
28646    }
28647  }
28648
28649  protected void composeImmunizationImmunizationVaccinationProtocolComponentElements(Immunization.ImmunizationVaccinationProtocolComponent element) throws IOException {
28650      composeBackboneElements(element);
28651      if (element.hasDoseSequenceElement()) {
28652        composePositiveInt("doseSequence", element.getDoseSequenceElement());
28653      }
28654      if (element.hasDescriptionElement()) {
28655        composeString("description", element.getDescriptionElement());
28656      }
28657      if (element.hasAuthority()) {
28658        composeReference("authority", element.getAuthority());
28659      }
28660      if (element.hasSeriesElement()) {
28661        composeString("series", element.getSeriesElement());
28662      }
28663      if (element.hasSeriesDosesElement()) {
28664        composePositiveInt("seriesDoses", element.getSeriesDosesElement());
28665      }
28666      if (element.hasTargetDisease()) { 
28667        for (CodeableConcept e : element.getTargetDisease()) 
28668          composeCodeableConcept("targetDisease", e);
28669      }
28670      if (element.hasDoseStatus()) {
28671        composeCodeableConcept("doseStatus", element.getDoseStatus());
28672      }
28673      if (element.hasDoseStatusReason()) {
28674        composeCodeableConcept("doseStatusReason", element.getDoseStatusReason());
28675      }
28676  }
28677
28678  protected void composeImmunizationRecommendation(String name, ImmunizationRecommendation element) throws IOException {
28679    if (element != null) {
28680      composeDomainResourceAttributes(element);
28681      xml.enter(FHIR_NS, name);
28682      composeImmunizationRecommendationElements(element);
28683      composeElementClose(element);
28684      xml.exit(FHIR_NS, name);
28685    }
28686  }
28687
28688  protected void composeImmunizationRecommendationElements(ImmunizationRecommendation element) throws IOException {
28689      composeDomainResourceElements(element);
28690      if (element.hasIdentifier()) { 
28691        for (Identifier e : element.getIdentifier()) 
28692          composeIdentifier("identifier", e);
28693      }
28694      if (element.hasPatient()) {
28695        composeReference("patient", element.getPatient());
28696      }
28697      if (element.hasRecommendation()) { 
28698        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent e : element.getRecommendation()) 
28699          composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent("recommendation", e);
28700      }
28701  }
28702
28703  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
28704    if (element != null) {
28705      composeElementAttributes(element);
28706      xml.enter(FHIR_NS, name);
28707      composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(element);
28708      composeElementClose(element);
28709      xml.exit(FHIR_NS, name);
28710    }
28711  }
28712
28713  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
28714      composeBackboneElements(element);
28715      if (element.hasDateElement()) {
28716        composeDateTime("date", element.getDateElement());
28717      }
28718      if (element.hasVaccineCode()) {
28719        composeCodeableConcept("vaccineCode", element.getVaccineCode());
28720      }
28721      if (element.hasTargetDisease()) {
28722        composeCodeableConcept("targetDisease", element.getTargetDisease());
28723      }
28724      if (element.hasDoseNumberElement()) {
28725        composePositiveInt("doseNumber", element.getDoseNumberElement());
28726      }
28727      if (element.hasForecastStatus()) {
28728        composeCodeableConcept("forecastStatus", element.getForecastStatus());
28729      }
28730      if (element.hasDateCriterion()) { 
28731        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent e : element.getDateCriterion()) 
28732          composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent("dateCriterion", e);
28733      }
28734      if (element.hasProtocol()) {
28735        composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent("protocol", element.getProtocol());
28736      }
28737      if (element.hasSupportingImmunization()) { 
28738        for (Reference e : element.getSupportingImmunization()) 
28739          composeReference("supportingImmunization", e);
28740      }
28741      if (element.hasSupportingPatientInformation()) { 
28742        for (Reference e : element.getSupportingPatientInformation()) 
28743          composeReference("supportingPatientInformation", e);
28744      }
28745  }
28746
28747  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
28748    if (element != null) {
28749      composeElementAttributes(element);
28750      xml.enter(FHIR_NS, name);
28751      composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(element);
28752      composeElementClose(element);
28753      xml.exit(FHIR_NS, name);
28754    }
28755  }
28756
28757  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
28758      composeBackboneElements(element);
28759      if (element.hasCode()) {
28760        composeCodeableConcept("code", element.getCode());
28761      }
28762      if (element.hasValueElement()) {
28763        composeDateTime("value", element.getValueElement());
28764      }
28765  }
28766
28767  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent element) throws IOException {
28768    if (element != null) {
28769      composeElementAttributes(element);
28770      xml.enter(FHIR_NS, name);
28771      composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponentElements(element);
28772      composeElementClose(element);
28773      xml.exit(FHIR_NS, name);
28774    }
28775  }
28776
28777  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationProtocolComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationProtocolComponent element) throws IOException {
28778      composeBackboneElements(element);
28779      if (element.hasDoseSequenceElement()) {
28780        composePositiveInt("doseSequence", element.getDoseSequenceElement());
28781      }
28782      if (element.hasDescriptionElement()) {
28783        composeString("description", element.getDescriptionElement());
28784      }
28785      if (element.hasAuthority()) {
28786        composeReference("authority", element.getAuthority());
28787      }
28788      if (element.hasSeriesElement()) {
28789        composeString("series", element.getSeriesElement());
28790      }
28791  }
28792
28793  protected void composeImplementationGuide(String name, ImplementationGuide element) throws IOException {
28794    if (element != null) {
28795      composeDomainResourceAttributes(element);
28796      xml.enter(FHIR_NS, name);
28797      composeImplementationGuideElements(element);
28798      composeElementClose(element);
28799      xml.exit(FHIR_NS, name);
28800    }
28801  }
28802
28803  protected void composeImplementationGuideElements(ImplementationGuide element) throws IOException {
28804      composeDomainResourceElements(element);
28805      if (element.hasUrlElement()) {
28806        composeUri("url", element.getUrlElement());
28807      }
28808      if (element.hasVersionElement()) {
28809        composeString("version", element.getVersionElement());
28810      }
28811      if (element.hasNameElement()) {
28812        composeString("name", element.getNameElement());
28813      }
28814      if (element.hasStatusElement())
28815        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
28816      if (element.hasExperimentalElement()) {
28817        composeBoolean("experimental", element.getExperimentalElement());
28818      }
28819      if (element.hasDateElement()) {
28820        composeDateTime("date", element.getDateElement());
28821      }
28822      if (element.hasPublisherElement()) {
28823        composeString("publisher", element.getPublisherElement());
28824      }
28825      if (element.hasContact()) { 
28826        for (ContactDetail e : element.getContact()) 
28827          composeContactDetail("contact", e);
28828      }
28829      if (element.hasDescriptionElement()) {
28830        composeMarkdown("description", element.getDescriptionElement());
28831      }
28832      if (element.hasUseContext()) { 
28833        for (UsageContext e : element.getUseContext()) 
28834          composeUsageContext("useContext", e);
28835      }
28836      if (element.hasJurisdiction()) { 
28837        for (CodeableConcept e : element.getJurisdiction()) 
28838          composeCodeableConcept("jurisdiction", e);
28839      }
28840      if (element.hasCopyrightElement()) {
28841        composeMarkdown("copyright", element.getCopyrightElement());
28842      }
28843      if (element.hasFhirVersionElement()) {
28844        composeId("fhirVersion", element.getFhirVersionElement());
28845      }
28846      if (element.hasDependency()) { 
28847        for (ImplementationGuide.ImplementationGuideDependencyComponent e : element.getDependency()) 
28848          composeImplementationGuideImplementationGuideDependencyComponent("dependency", e);
28849      }
28850      if (element.hasPackage()) { 
28851        for (ImplementationGuide.ImplementationGuidePackageComponent e : element.getPackage()) 
28852          composeImplementationGuideImplementationGuidePackageComponent("package", e);
28853      }
28854      if (element.hasGlobal()) { 
28855        for (ImplementationGuide.ImplementationGuideGlobalComponent e : element.getGlobal()) 
28856          composeImplementationGuideImplementationGuideGlobalComponent("global", e);
28857      }
28858      if (element.hasBinary()) { 
28859        for (UriType e : element.getBinary()) 
28860          composeUri("binary", e);
28861      }
28862      if (element.hasPage()) {
28863        composeImplementationGuideImplementationGuidePageComponent("page", element.getPage());
28864      }
28865  }
28866
28867  protected void composeImplementationGuideImplementationGuideDependencyComponent(String name, ImplementationGuide.ImplementationGuideDependencyComponent element) throws IOException {
28868    if (element != null) {
28869      composeElementAttributes(element);
28870      xml.enter(FHIR_NS, name);
28871      composeImplementationGuideImplementationGuideDependencyComponentElements(element);
28872      composeElementClose(element);
28873      xml.exit(FHIR_NS, name);
28874    }
28875  }
28876
28877  protected void composeImplementationGuideImplementationGuideDependencyComponentElements(ImplementationGuide.ImplementationGuideDependencyComponent element) throws IOException {
28878      composeBackboneElements(element);
28879      if (element.hasTypeElement())
28880        composeEnumeration("type", element.getTypeElement(), new ImplementationGuide.GuideDependencyTypeEnumFactory());
28881      if (element.hasUriElement()) {
28882        composeUri("uri", element.getUriElement());
28883      }
28884  }
28885
28886  protected void composeImplementationGuideImplementationGuidePackageComponent(String name, ImplementationGuide.ImplementationGuidePackageComponent element) throws IOException {
28887    if (element != null) {
28888      composeElementAttributes(element);
28889      xml.enter(FHIR_NS, name);
28890      composeImplementationGuideImplementationGuidePackageComponentElements(element);
28891      composeElementClose(element);
28892      xml.exit(FHIR_NS, name);
28893    }
28894  }
28895
28896  protected void composeImplementationGuideImplementationGuidePackageComponentElements(ImplementationGuide.ImplementationGuidePackageComponent element) throws IOException {
28897      composeBackboneElements(element);
28898      if (element.hasNameElement()) {
28899        composeString("name", element.getNameElement());
28900      }
28901      if (element.hasDescriptionElement()) {
28902        composeString("description", element.getDescriptionElement());
28903      }
28904      if (element.hasResource()) { 
28905        for (ImplementationGuide.ImplementationGuidePackageResourceComponent e : element.getResource()) 
28906          composeImplementationGuideImplementationGuidePackageResourceComponent("resource", e);
28907      }
28908  }
28909
28910  protected void composeImplementationGuideImplementationGuidePackageResourceComponent(String name, ImplementationGuide.ImplementationGuidePackageResourceComponent element) throws IOException {
28911    if (element != null) {
28912      composeElementAttributes(element);
28913      xml.enter(FHIR_NS, name);
28914      composeImplementationGuideImplementationGuidePackageResourceComponentElements(element);
28915      composeElementClose(element);
28916      xml.exit(FHIR_NS, name);
28917    }
28918  }
28919
28920  protected void composeImplementationGuideImplementationGuidePackageResourceComponentElements(ImplementationGuide.ImplementationGuidePackageResourceComponent element) throws IOException {
28921      composeBackboneElements(element);
28922      if (element.hasExampleElement()) {
28923        composeBoolean("example", element.getExampleElement());
28924      }
28925      if (element.hasNameElement()) {
28926        composeString("name", element.getNameElement());
28927      }
28928      if (element.hasDescriptionElement()) {
28929        composeString("description", element.getDescriptionElement());
28930      }
28931      if (element.hasAcronymElement()) {
28932        composeString("acronym", element.getAcronymElement());
28933      }
28934      if (element.hasSource()) {
28935        composeType("source", element.getSource());
28936      }      if (element.hasExampleFor()) {
28937        composeReference("exampleFor", element.getExampleFor());
28938      }
28939  }
28940
28941  protected void composeImplementationGuideImplementationGuideGlobalComponent(String name, ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
28942    if (element != null) {
28943      composeElementAttributes(element);
28944      xml.enter(FHIR_NS, name);
28945      composeImplementationGuideImplementationGuideGlobalComponentElements(element);
28946      composeElementClose(element);
28947      xml.exit(FHIR_NS, name);
28948    }
28949  }
28950
28951  protected void composeImplementationGuideImplementationGuideGlobalComponentElements(ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
28952      composeBackboneElements(element);
28953      if (element.hasTypeElement()) {
28954        composeCode("type", element.getTypeElement());
28955      }
28956      if (element.hasProfile()) {
28957        composeReference("profile", element.getProfile());
28958      }
28959  }
28960
28961  protected void composeImplementationGuideImplementationGuidePageComponent(String name, ImplementationGuide.ImplementationGuidePageComponent element) throws IOException {
28962    if (element != null) {
28963      composeElementAttributes(element);
28964      xml.enter(FHIR_NS, name);
28965      composeImplementationGuideImplementationGuidePageComponentElements(element);
28966      composeElementClose(element);
28967      xml.exit(FHIR_NS, name);
28968    }
28969  }
28970
28971  protected void composeImplementationGuideImplementationGuidePageComponentElements(ImplementationGuide.ImplementationGuidePageComponent element) throws IOException {
28972      composeBackboneElements(element);
28973      if (element.hasSourceElement()) {
28974        composeUri("source", element.getSourceElement());
28975      }
28976      if (element.hasTitleElement()) {
28977        composeString("title", element.getTitleElement());
28978      }
28979      if (element.hasKindElement())
28980        composeEnumeration("kind", element.getKindElement(), new ImplementationGuide.GuidePageKindEnumFactory());
28981      if (element.hasType()) { 
28982        for (CodeType e : element.getType()) 
28983          composeCode("type", e);
28984      }
28985      if (element.hasPackage()) { 
28986        for (StringType e : element.getPackage()) 
28987          composeString("package", e);
28988      }
28989      if (element.hasFormatElement()) {
28990        composeCode("format", element.getFormatElement());
28991      }
28992      if (element.hasPage()) { 
28993        for (ImplementationGuide.ImplementationGuidePageComponent e : element.getPage()) 
28994          composeImplementationGuideImplementationGuidePageComponent("page", e);
28995      }
28996  }
28997
28998  protected void composeLibrary(String name, Library element) throws IOException {
28999    if (element != null) {
29000      composeDomainResourceAttributes(element);
29001      xml.enter(FHIR_NS, name);
29002      composeLibraryElements(element);
29003      composeElementClose(element);
29004      xml.exit(FHIR_NS, name);
29005    }
29006  }
29007
29008  protected void composeLibraryElements(Library element) throws IOException {
29009      composeDomainResourceElements(element);
29010      if (element.hasUrlElement()) {
29011        composeUri("url", element.getUrlElement());
29012      }
29013      if (element.hasIdentifier()) { 
29014        for (Identifier e : element.getIdentifier()) 
29015          composeIdentifier("identifier", e);
29016      }
29017      if (element.hasVersionElement()) {
29018        composeString("version", element.getVersionElement());
29019      }
29020      if (element.hasNameElement()) {
29021        composeString("name", element.getNameElement());
29022      }
29023      if (element.hasTitleElement()) {
29024        composeString("title", element.getTitleElement());
29025      }
29026      if (element.hasStatusElement())
29027        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
29028      if (element.hasExperimentalElement()) {
29029        composeBoolean("experimental", element.getExperimentalElement());
29030      }
29031      if (element.hasType()) {
29032        composeCodeableConcept("type", element.getType());
29033      }
29034      if (element.hasDateElement()) {
29035        composeDateTime("date", element.getDateElement());
29036      }
29037      if (element.hasPublisherElement()) {
29038        composeString("publisher", element.getPublisherElement());
29039      }
29040      if (element.hasDescriptionElement()) {
29041        composeMarkdown("description", element.getDescriptionElement());
29042      }
29043      if (element.hasPurposeElement()) {
29044        composeMarkdown("purpose", element.getPurposeElement());
29045      }
29046      if (element.hasUsageElement()) {
29047        composeString("usage", element.getUsageElement());
29048      }
29049      if (element.hasApprovalDateElement()) {
29050        composeDate("approvalDate", element.getApprovalDateElement());
29051      }
29052      if (element.hasLastReviewDateElement()) {
29053        composeDate("lastReviewDate", element.getLastReviewDateElement());
29054      }
29055      if (element.hasEffectivePeriod()) {
29056        composePeriod("effectivePeriod", element.getEffectivePeriod());
29057      }
29058      if (element.hasUseContext()) { 
29059        for (UsageContext e : element.getUseContext()) 
29060          composeUsageContext("useContext", e);
29061      }
29062      if (element.hasJurisdiction()) { 
29063        for (CodeableConcept e : element.getJurisdiction()) 
29064          composeCodeableConcept("jurisdiction", e);
29065      }
29066      if (element.hasTopic()) { 
29067        for (CodeableConcept e : element.getTopic()) 
29068          composeCodeableConcept("topic", e);
29069      }
29070      if (element.hasContributor()) { 
29071        for (Contributor e : element.getContributor()) 
29072          composeContributor("contributor", e);
29073      }
29074      if (element.hasContact()) { 
29075        for (ContactDetail e : element.getContact()) 
29076          composeContactDetail("contact", e);
29077      }
29078      if (element.hasCopyrightElement()) {
29079        composeMarkdown("copyright", element.getCopyrightElement());
29080      }
29081      if (element.hasRelatedArtifact()) { 
29082        for (RelatedArtifact e : element.getRelatedArtifact()) 
29083          composeRelatedArtifact("relatedArtifact", e);
29084      }
29085      if (element.hasParameter()) { 
29086        for (ParameterDefinition e : element.getParameter()) 
29087          composeParameterDefinition("parameter", e);
29088      }
29089      if (element.hasDataRequirement()) { 
29090        for (DataRequirement e : element.getDataRequirement()) 
29091          composeDataRequirement("dataRequirement", e);
29092      }
29093      if (element.hasContent()) { 
29094        for (Attachment e : element.getContent()) 
29095          composeAttachment("content", e);
29096      }
29097  }
29098
29099  protected void composeLinkage(String name, Linkage element) throws IOException {
29100    if (element != null) {
29101      composeDomainResourceAttributes(element);
29102      xml.enter(FHIR_NS, name);
29103      composeLinkageElements(element);
29104      composeElementClose(element);
29105      xml.exit(FHIR_NS, name);
29106    }
29107  }
29108
29109  protected void composeLinkageElements(Linkage element) throws IOException {
29110      composeDomainResourceElements(element);
29111      if (element.hasActiveElement()) {
29112        composeBoolean("active", element.getActiveElement());
29113      }
29114      if (element.hasAuthor()) {
29115        composeReference("author", element.getAuthor());
29116      }
29117      if (element.hasItem()) { 
29118        for (Linkage.LinkageItemComponent e : element.getItem()) 
29119          composeLinkageLinkageItemComponent("item", e);
29120      }
29121  }
29122
29123  protected void composeLinkageLinkageItemComponent(String name, Linkage.LinkageItemComponent element) throws IOException {
29124    if (element != null) {
29125      composeElementAttributes(element);
29126      xml.enter(FHIR_NS, name);
29127      composeLinkageLinkageItemComponentElements(element);
29128      composeElementClose(element);
29129      xml.exit(FHIR_NS, name);
29130    }
29131  }
29132
29133  protected void composeLinkageLinkageItemComponentElements(Linkage.LinkageItemComponent element) throws IOException {
29134      composeBackboneElements(element);
29135      if (element.hasTypeElement())
29136        composeEnumeration("type", element.getTypeElement(), new Linkage.LinkageTypeEnumFactory());
29137      if (element.hasResource()) {
29138        composeReference("resource", element.getResource());
29139      }
29140  }
29141
29142  protected void composeListResource(String name, ListResource element) throws IOException {
29143    if (element != null) {
29144      composeDomainResourceAttributes(element);
29145      xml.enter(FHIR_NS, name);
29146      composeListResourceElements(element);
29147      composeElementClose(element);
29148      xml.exit(FHIR_NS, name);
29149    }
29150  }
29151
29152  protected void composeListResourceElements(ListResource element) throws IOException {
29153      composeDomainResourceElements(element);
29154      if (element.hasIdentifier()) { 
29155        for (Identifier e : element.getIdentifier()) 
29156          composeIdentifier("identifier", e);
29157      }
29158      if (element.hasStatusElement())
29159        composeEnumeration("status", element.getStatusElement(), new ListResource.ListStatusEnumFactory());
29160      if (element.hasModeElement())
29161        composeEnumeration("mode", element.getModeElement(), new ListResource.ListModeEnumFactory());
29162      if (element.hasTitleElement()) {
29163        composeString("title", element.getTitleElement());
29164      }
29165      if (element.hasCode()) {
29166        composeCodeableConcept("code", element.getCode());
29167      }
29168      if (element.hasSubject()) {
29169        composeReference("subject", element.getSubject());
29170      }
29171      if (element.hasEncounter()) {
29172        composeReference("encounter", element.getEncounter());
29173      }
29174      if (element.hasDateElement()) {
29175        composeDateTime("date", element.getDateElement());
29176      }
29177      if (element.hasSource()) {
29178        composeReference("source", element.getSource());
29179      }
29180      if (element.hasOrderedBy()) {
29181        composeCodeableConcept("orderedBy", element.getOrderedBy());
29182      }
29183      if (element.hasNote()) { 
29184        for (Annotation e : element.getNote()) 
29185          composeAnnotation("note", e);
29186      }
29187      if (element.hasEntry()) { 
29188        for (ListResource.ListEntryComponent e : element.getEntry()) 
29189          composeListResourceListEntryComponent("entry", e);
29190      }
29191      if (element.hasEmptyReason()) {
29192        composeCodeableConcept("emptyReason", element.getEmptyReason());
29193      }
29194  }
29195
29196  protected void composeListResourceListEntryComponent(String name, ListResource.ListEntryComponent element) throws IOException {
29197    if (element != null) {
29198      composeElementAttributes(element);
29199      xml.enter(FHIR_NS, name);
29200      composeListResourceListEntryComponentElements(element);
29201      composeElementClose(element);
29202      xml.exit(FHIR_NS, name);
29203    }
29204  }
29205
29206  protected void composeListResourceListEntryComponentElements(ListResource.ListEntryComponent element) throws IOException {
29207      composeBackboneElements(element);
29208      if (element.hasFlag()) {
29209        composeCodeableConcept("flag", element.getFlag());
29210      }
29211      if (element.hasDeletedElement()) {
29212        composeBoolean("deleted", element.getDeletedElement());
29213      }
29214      if (element.hasDateElement()) {
29215        composeDateTime("date", element.getDateElement());
29216      }
29217      if (element.hasItem()) {
29218        composeReference("item", element.getItem());
29219      }
29220  }
29221
29222  protected void composeLocation(String name, Location element) throws IOException {
29223    if (element != null) {
29224      composeDomainResourceAttributes(element);
29225      xml.enter(FHIR_NS, name);
29226      composeLocationElements(element);
29227      composeElementClose(element);
29228      xml.exit(FHIR_NS, name);
29229    }
29230  }
29231
29232  protected void composeLocationElements(Location element) throws IOException {
29233      composeDomainResourceElements(element);
29234      if (element.hasIdentifier()) { 
29235        for (Identifier e : element.getIdentifier()) 
29236          composeIdentifier("identifier", e);
29237      }
29238      if (element.hasStatusElement())
29239        composeEnumeration("status", element.getStatusElement(), new Location.LocationStatusEnumFactory());
29240      if (element.hasOperationalStatus()) {
29241        composeCoding("operationalStatus", element.getOperationalStatus());
29242      }
29243      if (element.hasNameElement()) {
29244        composeString("name", element.getNameElement());
29245      }
29246      if (element.hasAlias()) { 
29247        for (StringType e : element.getAlias()) 
29248          composeString("alias", e);
29249      }
29250      if (element.hasDescriptionElement()) {
29251        composeString("description", element.getDescriptionElement());
29252      }
29253      if (element.hasModeElement())
29254        composeEnumeration("mode", element.getModeElement(), new Location.LocationModeEnumFactory());
29255      if (element.hasType()) {
29256        composeCodeableConcept("type", element.getType());
29257      }
29258      if (element.hasTelecom()) { 
29259        for (ContactPoint e : element.getTelecom()) 
29260          composeContactPoint("telecom", e);
29261      }
29262      if (element.hasAddress()) {
29263        composeAddress("address", element.getAddress());
29264      }
29265      if (element.hasPhysicalType()) {
29266        composeCodeableConcept("physicalType", element.getPhysicalType());
29267      }
29268      if (element.hasPosition()) {
29269        composeLocationLocationPositionComponent("position", element.getPosition());
29270      }
29271      if (element.hasManagingOrganization()) {
29272        composeReference("managingOrganization", element.getManagingOrganization());
29273      }
29274      if (element.hasPartOf()) {
29275        composeReference("partOf", element.getPartOf());
29276      }
29277      if (element.hasEndpoint()) { 
29278        for (Reference e : element.getEndpoint()) 
29279          composeReference("endpoint", e);
29280      }
29281  }
29282
29283  protected void composeLocationLocationPositionComponent(String name, Location.LocationPositionComponent element) throws IOException {
29284    if (element != null) {
29285      composeElementAttributes(element);
29286      xml.enter(FHIR_NS, name);
29287      composeLocationLocationPositionComponentElements(element);
29288      composeElementClose(element);
29289      xml.exit(FHIR_NS, name);
29290    }
29291  }
29292
29293  protected void composeLocationLocationPositionComponentElements(Location.LocationPositionComponent element) throws IOException {
29294      composeBackboneElements(element);
29295      if (element.hasLongitudeElement()) {
29296        composeDecimal("longitude", element.getLongitudeElement());
29297      }
29298      if (element.hasLatitudeElement()) {
29299        composeDecimal("latitude", element.getLatitudeElement());
29300      }
29301      if (element.hasAltitudeElement()) {
29302        composeDecimal("altitude", element.getAltitudeElement());
29303      }
29304  }
29305
29306  protected void composeMeasure(String name, Measure element) throws IOException {
29307    if (element != null) {
29308      composeDomainResourceAttributes(element);
29309      xml.enter(FHIR_NS, name);
29310      composeMeasureElements(element);
29311      composeElementClose(element);
29312      xml.exit(FHIR_NS, name);
29313    }
29314  }
29315
29316  protected void composeMeasureElements(Measure element) throws IOException {
29317      composeDomainResourceElements(element);
29318      if (element.hasUrlElement()) {
29319        composeUri("url", element.getUrlElement());
29320      }
29321      if (element.hasIdentifier()) { 
29322        for (Identifier e : element.getIdentifier()) 
29323          composeIdentifier("identifier", e);
29324      }
29325      if (element.hasVersionElement()) {
29326        composeString("version", element.getVersionElement());
29327      }
29328      if (element.hasNameElement()) {
29329        composeString("name", element.getNameElement());
29330      }
29331      if (element.hasTitleElement()) {
29332        composeString("title", element.getTitleElement());
29333      }
29334      if (element.hasStatusElement())
29335        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
29336      if (element.hasExperimentalElement()) {
29337        composeBoolean("experimental", element.getExperimentalElement());
29338      }
29339      if (element.hasDateElement()) {
29340        composeDateTime("date", element.getDateElement());
29341      }
29342      if (element.hasPublisherElement()) {
29343        composeString("publisher", element.getPublisherElement());
29344      }
29345      if (element.hasDescriptionElement()) {
29346        composeMarkdown("description", element.getDescriptionElement());
29347      }
29348      if (element.hasPurposeElement()) {
29349        composeMarkdown("purpose", element.getPurposeElement());
29350      }
29351      if (element.hasUsageElement()) {
29352        composeString("usage", element.getUsageElement());
29353      }
29354      if (element.hasApprovalDateElement()) {
29355        composeDate("approvalDate", element.getApprovalDateElement());
29356      }
29357      if (element.hasLastReviewDateElement()) {
29358        composeDate("lastReviewDate", element.getLastReviewDateElement());
29359      }
29360      if (element.hasEffectivePeriod()) {
29361        composePeriod("effectivePeriod", element.getEffectivePeriod());
29362      }
29363      if (element.hasUseContext()) { 
29364        for (UsageContext e : element.getUseContext()) 
29365          composeUsageContext("useContext", e);
29366      }
29367      if (element.hasJurisdiction()) { 
29368        for (CodeableConcept e : element.getJurisdiction()) 
29369          composeCodeableConcept("jurisdiction", e);
29370      }
29371      if (element.hasTopic()) { 
29372        for (CodeableConcept e : element.getTopic()) 
29373          composeCodeableConcept("topic", e);
29374      }
29375      if (element.hasContributor()) { 
29376        for (Contributor e : element.getContributor()) 
29377          composeContributor("contributor", e);
29378      }
29379      if (element.hasContact()) { 
29380        for (ContactDetail e : element.getContact()) 
29381          composeContactDetail("contact", e);
29382      }
29383      if (element.hasCopyrightElement()) {
29384        composeMarkdown("copyright", element.getCopyrightElement());
29385      }
29386      if (element.hasRelatedArtifact()) { 
29387        for (RelatedArtifact e : element.getRelatedArtifact()) 
29388          composeRelatedArtifact("relatedArtifact", e);
29389      }
29390      if (element.hasLibrary()) { 
29391        for (Reference e : element.getLibrary()) 
29392          composeReference("library", e);
29393      }
29394      if (element.hasDisclaimerElement()) {
29395        composeMarkdown("disclaimer", element.getDisclaimerElement());
29396      }
29397      if (element.hasScoring()) {
29398        composeCodeableConcept("scoring", element.getScoring());
29399      }
29400      if (element.hasCompositeScoring()) {
29401        composeCodeableConcept("compositeScoring", element.getCompositeScoring());
29402      }
29403      if (element.hasType()) { 
29404        for (CodeableConcept e : element.getType()) 
29405          composeCodeableConcept("type", e);
29406      }
29407      if (element.hasRiskAdjustmentElement()) {
29408        composeString("riskAdjustment", element.getRiskAdjustmentElement());
29409      }
29410      if (element.hasRateAggregationElement()) {
29411        composeString("rateAggregation", element.getRateAggregationElement());
29412      }
29413      if (element.hasRationaleElement()) {
29414        composeMarkdown("rationale", element.getRationaleElement());
29415      }
29416      if (element.hasClinicalRecommendationStatementElement()) {
29417        composeMarkdown("clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement());
29418      }
29419      if (element.hasImprovementNotationElement()) {
29420        composeString("improvementNotation", element.getImprovementNotationElement());
29421      }
29422      if (element.hasDefinition()) { 
29423        for (MarkdownType e : element.getDefinition()) 
29424          composeMarkdown("definition", e);
29425      }
29426      if (element.hasGuidanceElement()) {
29427        composeMarkdown("guidance", element.getGuidanceElement());
29428      }
29429      if (element.hasSetElement()) {
29430        composeString("set", element.getSetElement());
29431      }
29432      if (element.hasGroup()) { 
29433        for (Measure.MeasureGroupComponent e : element.getGroup()) 
29434          composeMeasureMeasureGroupComponent("group", e);
29435      }
29436      if (element.hasSupplementalData()) { 
29437        for (Measure.MeasureSupplementalDataComponent e : element.getSupplementalData()) 
29438          composeMeasureMeasureSupplementalDataComponent("supplementalData", e);
29439      }
29440  }
29441
29442  protected void composeMeasureMeasureGroupComponent(String name, Measure.MeasureGroupComponent element) throws IOException {
29443    if (element != null) {
29444      composeElementAttributes(element);
29445      xml.enter(FHIR_NS, name);
29446      composeMeasureMeasureGroupComponentElements(element);
29447      composeElementClose(element);
29448      xml.exit(FHIR_NS, name);
29449    }
29450  }
29451
29452  protected void composeMeasureMeasureGroupComponentElements(Measure.MeasureGroupComponent element) throws IOException {
29453      composeBackboneElements(element);
29454      if (element.hasIdentifier()) {
29455        composeIdentifier("identifier", element.getIdentifier());
29456      }
29457      if (element.hasNameElement()) {
29458        composeString("name", element.getNameElement());
29459      }
29460      if (element.hasDescriptionElement()) {
29461        composeString("description", element.getDescriptionElement());
29462      }
29463      if (element.hasPopulation()) { 
29464        for (Measure.MeasureGroupPopulationComponent e : element.getPopulation()) 
29465          composeMeasureMeasureGroupPopulationComponent("population", e);
29466      }
29467      if (element.hasStratifier()) { 
29468        for (Measure.MeasureGroupStratifierComponent e : element.getStratifier()) 
29469          composeMeasureMeasureGroupStratifierComponent("stratifier", e);
29470      }
29471  }
29472
29473  protected void composeMeasureMeasureGroupPopulationComponent(String name, Measure.MeasureGroupPopulationComponent element) throws IOException {
29474    if (element != null) {
29475      composeElementAttributes(element);
29476      xml.enter(FHIR_NS, name);
29477      composeMeasureMeasureGroupPopulationComponentElements(element);
29478      composeElementClose(element);
29479      xml.exit(FHIR_NS, name);
29480    }
29481  }
29482
29483  protected void composeMeasureMeasureGroupPopulationComponentElements(Measure.MeasureGroupPopulationComponent element) throws IOException {
29484      composeBackboneElements(element);
29485      if (element.hasIdentifier()) {
29486        composeIdentifier("identifier", element.getIdentifier());
29487      }
29488      if (element.hasCode()) {
29489        composeCodeableConcept("code", element.getCode());
29490      }
29491      if (element.hasNameElement()) {
29492        composeString("name", element.getNameElement());
29493      }
29494      if (element.hasDescriptionElement()) {
29495        composeString("description", element.getDescriptionElement());
29496      }
29497      if (element.hasCriteriaElement()) {
29498        composeString("criteria", element.getCriteriaElement());
29499      }
29500  }
29501
29502  protected void composeMeasureMeasureGroupStratifierComponent(String name, Measure.MeasureGroupStratifierComponent element) throws IOException {
29503    if (element != null) {
29504      composeElementAttributes(element);
29505      xml.enter(FHIR_NS, name);
29506      composeMeasureMeasureGroupStratifierComponentElements(element);
29507      composeElementClose(element);
29508      xml.exit(FHIR_NS, name);
29509    }
29510  }
29511
29512  protected void composeMeasureMeasureGroupStratifierComponentElements(Measure.MeasureGroupStratifierComponent element) throws IOException {
29513      composeBackboneElements(element);
29514      if (element.hasIdentifier()) {
29515        composeIdentifier("identifier", element.getIdentifier());
29516      }
29517      if (element.hasCriteriaElement()) {
29518        composeString("criteria", element.getCriteriaElement());
29519      }
29520      if (element.hasPathElement()) {
29521        composeString("path", element.getPathElement());
29522      }
29523  }
29524
29525  protected void composeMeasureMeasureSupplementalDataComponent(String name, Measure.MeasureSupplementalDataComponent element) throws IOException {
29526    if (element != null) {
29527      composeElementAttributes(element);
29528      xml.enter(FHIR_NS, name);
29529      composeMeasureMeasureSupplementalDataComponentElements(element);
29530      composeElementClose(element);
29531      xml.exit(FHIR_NS, name);
29532    }
29533  }
29534
29535  protected void composeMeasureMeasureSupplementalDataComponentElements(Measure.MeasureSupplementalDataComponent element) throws IOException {
29536      composeBackboneElements(element);
29537      if (element.hasIdentifier()) {
29538        composeIdentifier("identifier", element.getIdentifier());
29539      }
29540      if (element.hasUsage()) { 
29541        for (CodeableConcept e : element.getUsage()) 
29542          composeCodeableConcept("usage", e);
29543      }
29544      if (element.hasCriteriaElement()) {
29545        composeString("criteria", element.getCriteriaElement());
29546      }
29547      if (element.hasPathElement()) {
29548        composeString("path", element.getPathElement());
29549      }
29550  }
29551
29552  protected void composeMeasureReport(String name, MeasureReport element) throws IOException {
29553    if (element != null) {
29554      composeDomainResourceAttributes(element);
29555      xml.enter(FHIR_NS, name);
29556      composeMeasureReportElements(element);
29557      composeElementClose(element);
29558      xml.exit(FHIR_NS, name);
29559    }
29560  }
29561
29562  protected void composeMeasureReportElements(MeasureReport element) throws IOException {
29563      composeDomainResourceElements(element);
29564      if (element.hasIdentifier()) {
29565        composeIdentifier("identifier", element.getIdentifier());
29566      }
29567      if (element.hasStatusElement())
29568        composeEnumeration("status", element.getStatusElement(), new MeasureReport.MeasureReportStatusEnumFactory());
29569      if (element.hasTypeElement())
29570        composeEnumeration("type", element.getTypeElement(), new MeasureReport.MeasureReportTypeEnumFactory());
29571      if (element.hasMeasure()) {
29572        composeReference("measure", element.getMeasure());
29573      }
29574      if (element.hasPatient()) {
29575        composeReference("patient", element.getPatient());
29576      }
29577      if (element.hasDateElement()) {
29578        composeDateTime("date", element.getDateElement());
29579      }
29580      if (element.hasReportingOrganization()) {
29581        composeReference("reportingOrganization", element.getReportingOrganization());
29582      }
29583      if (element.hasPeriod()) {
29584        composePeriod("period", element.getPeriod());
29585      }
29586      if (element.hasGroup()) { 
29587        for (MeasureReport.MeasureReportGroupComponent e : element.getGroup()) 
29588          composeMeasureReportMeasureReportGroupComponent("group", e);
29589      }
29590      if (element.hasEvaluatedResources()) {
29591        composeReference("evaluatedResources", element.getEvaluatedResources());
29592      }
29593  }
29594
29595  protected void composeMeasureReportMeasureReportGroupComponent(String name, MeasureReport.MeasureReportGroupComponent element) throws IOException {
29596    if (element != null) {
29597      composeElementAttributes(element);
29598      xml.enter(FHIR_NS, name);
29599      composeMeasureReportMeasureReportGroupComponentElements(element);
29600      composeElementClose(element);
29601      xml.exit(FHIR_NS, name);
29602    }
29603  }
29604
29605  protected void composeMeasureReportMeasureReportGroupComponentElements(MeasureReport.MeasureReportGroupComponent element) throws IOException {
29606      composeBackboneElements(element);
29607      if (element.hasIdentifier()) {
29608        composeIdentifier("identifier", element.getIdentifier());
29609      }
29610      if (element.hasPopulation()) { 
29611        for (MeasureReport.MeasureReportGroupPopulationComponent e : element.getPopulation()) 
29612          composeMeasureReportMeasureReportGroupPopulationComponent("population", e);
29613      }
29614      if (element.hasMeasureScoreElement()) {
29615        composeDecimal("measureScore", element.getMeasureScoreElement());
29616      }
29617      if (element.hasStratifier()) { 
29618        for (MeasureReport.MeasureReportGroupStratifierComponent e : element.getStratifier()) 
29619          composeMeasureReportMeasureReportGroupStratifierComponent("stratifier", e);
29620      }
29621  }
29622
29623  protected void composeMeasureReportMeasureReportGroupPopulationComponent(String name, MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
29624    if (element != null) {
29625      composeElementAttributes(element);
29626      xml.enter(FHIR_NS, name);
29627      composeMeasureReportMeasureReportGroupPopulationComponentElements(element);
29628      composeElementClose(element);
29629      xml.exit(FHIR_NS, name);
29630    }
29631  }
29632
29633  protected void composeMeasureReportMeasureReportGroupPopulationComponentElements(MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
29634      composeBackboneElements(element);
29635      if (element.hasIdentifier()) {
29636        composeIdentifier("identifier", element.getIdentifier());
29637      }
29638      if (element.hasCode()) {
29639        composeCodeableConcept("code", element.getCode());
29640      }
29641      if (element.hasCountElement()) {
29642        composeInteger("count", element.getCountElement());
29643      }
29644      if (element.hasPatients()) {
29645        composeReference("patients", element.getPatients());
29646      }
29647  }
29648
29649  protected void composeMeasureReportMeasureReportGroupStratifierComponent(String name, MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
29650    if (element != null) {
29651      composeElementAttributes(element);
29652      xml.enter(FHIR_NS, name);
29653      composeMeasureReportMeasureReportGroupStratifierComponentElements(element);
29654      composeElementClose(element);
29655      xml.exit(FHIR_NS, name);
29656    }
29657  }
29658
29659  protected void composeMeasureReportMeasureReportGroupStratifierComponentElements(MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
29660      composeBackboneElements(element);
29661      if (element.hasIdentifier()) {
29662        composeIdentifier("identifier", element.getIdentifier());
29663      }
29664      if (element.hasStratum()) { 
29665        for (MeasureReport.StratifierGroupComponent e : element.getStratum()) 
29666          composeMeasureReportStratifierGroupComponent("stratum", e);
29667      }
29668  }
29669
29670  protected void composeMeasureReportStratifierGroupComponent(String name, MeasureReport.StratifierGroupComponent element) throws IOException {
29671    if (element != null) {
29672      composeElementAttributes(element);
29673      xml.enter(FHIR_NS, name);
29674      composeMeasureReportStratifierGroupComponentElements(element);
29675      composeElementClose(element);
29676      xml.exit(FHIR_NS, name);
29677    }
29678  }
29679
29680  protected void composeMeasureReportStratifierGroupComponentElements(MeasureReport.StratifierGroupComponent element) throws IOException {
29681      composeBackboneElements(element);
29682      if (element.hasValueElement()) {
29683        composeString("value", element.getValueElement());
29684      }
29685      if (element.hasPopulation()) { 
29686        for (MeasureReport.StratifierGroupPopulationComponent e : element.getPopulation()) 
29687          composeMeasureReportStratifierGroupPopulationComponent("population", e);
29688      }
29689      if (element.hasMeasureScoreElement()) {
29690        composeDecimal("measureScore", element.getMeasureScoreElement());
29691      }
29692  }
29693
29694  protected void composeMeasureReportStratifierGroupPopulationComponent(String name, MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
29695    if (element != null) {
29696      composeElementAttributes(element);
29697      xml.enter(FHIR_NS, name);
29698      composeMeasureReportStratifierGroupPopulationComponentElements(element);
29699      composeElementClose(element);
29700      xml.exit(FHIR_NS, name);
29701    }
29702  }
29703
29704  protected void composeMeasureReportStratifierGroupPopulationComponentElements(MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
29705      composeBackboneElements(element);
29706      if (element.hasIdentifier()) {
29707        composeIdentifier("identifier", element.getIdentifier());
29708      }
29709      if (element.hasCode()) {
29710        composeCodeableConcept("code", element.getCode());
29711      }
29712      if (element.hasCountElement()) {
29713        composeInteger("count", element.getCountElement());
29714      }
29715      if (element.hasPatients()) {
29716        composeReference("patients", element.getPatients());
29717      }
29718  }
29719
29720  protected void composeMedia(String name, Media element) throws IOException {
29721    if (element != null) {
29722      composeDomainResourceAttributes(element);
29723      xml.enter(FHIR_NS, name);
29724      composeMediaElements(element);
29725      composeElementClose(element);
29726      xml.exit(FHIR_NS, name);
29727    }
29728  }
29729
29730  protected void composeMediaElements(Media element) throws IOException {
29731      composeDomainResourceElements(element);
29732      if (element.hasIdentifier()) { 
29733        for (Identifier e : element.getIdentifier()) 
29734          composeIdentifier("identifier", e);
29735      }
29736      if (element.hasBasedOn()) { 
29737        for (Reference e : element.getBasedOn()) 
29738          composeReference("basedOn", e);
29739      }
29740      if (element.hasTypeElement())
29741        composeEnumeration("type", element.getTypeElement(), new Media.DigitalMediaTypeEnumFactory());
29742      if (element.hasSubtype()) {
29743        composeCodeableConcept("subtype", element.getSubtype());
29744      }
29745      if (element.hasView()) {
29746        composeCodeableConcept("view", element.getView());
29747      }
29748      if (element.hasSubject()) {
29749        composeReference("subject", element.getSubject());
29750      }
29751      if (element.hasContext()) {
29752        composeReference("context", element.getContext());
29753      }
29754      if (element.hasOccurrence()) {
29755        composeType("occurrence", element.getOccurrence());
29756      }      if (element.hasOperator()) {
29757        composeReference("operator", element.getOperator());
29758      }
29759      if (element.hasReasonCode()) { 
29760        for (CodeableConcept e : element.getReasonCode()) 
29761          composeCodeableConcept("reasonCode", e);
29762      }
29763      if (element.hasBodySite()) {
29764        composeCodeableConcept("bodySite", element.getBodySite());
29765      }
29766      if (element.hasDevice()) {
29767        composeReference("device", element.getDevice());
29768      }
29769      if (element.hasHeightElement()) {
29770        composePositiveInt("height", element.getHeightElement());
29771      }
29772      if (element.hasWidthElement()) {
29773        composePositiveInt("width", element.getWidthElement());
29774      }
29775      if (element.hasFramesElement()) {
29776        composePositiveInt("frames", element.getFramesElement());
29777      }
29778      if (element.hasDurationElement()) {
29779        composeUnsignedInt("duration", element.getDurationElement());
29780      }
29781      if (element.hasContent()) {
29782        composeAttachment("content", element.getContent());
29783      }
29784      if (element.hasNote()) { 
29785        for (Annotation e : element.getNote()) 
29786          composeAnnotation("note", e);
29787      }
29788  }
29789
29790  protected void composeMedication(String name, Medication element) throws IOException {
29791    if (element != null) {
29792      composeDomainResourceAttributes(element);
29793      xml.enter(FHIR_NS, name);
29794      composeMedicationElements(element);
29795      composeElementClose(element);
29796      xml.exit(FHIR_NS, name);
29797    }
29798  }
29799
29800  protected void composeMedicationElements(Medication element) throws IOException {
29801      composeDomainResourceElements(element);
29802      if (element.hasCode()) {
29803        composeCodeableConcept("code", element.getCode());
29804      }
29805      if (element.hasStatusElement())
29806        composeEnumeration("status", element.getStatusElement(), new Medication.MedicationStatusEnumFactory());
29807      if (element.hasIsBrandElement()) {
29808        composeBoolean("isBrand", element.getIsBrandElement());
29809      }
29810      if (element.hasIsOverTheCounterElement()) {
29811        composeBoolean("isOverTheCounter", element.getIsOverTheCounterElement());
29812      }
29813      if (element.hasManufacturer()) {
29814        composeReference("manufacturer", element.getManufacturer());
29815      }
29816      if (element.hasForm()) {
29817        composeCodeableConcept("form", element.getForm());
29818      }
29819      if (element.hasIngredient()) { 
29820        for (Medication.MedicationIngredientComponent e : element.getIngredient()) 
29821          composeMedicationMedicationIngredientComponent("ingredient", e);
29822      }
29823      if (element.hasPackage()) {
29824        composeMedicationMedicationPackageComponent("package", element.getPackage());
29825      }
29826      if (element.hasImage()) { 
29827        for (Attachment e : element.getImage()) 
29828          composeAttachment("image", e);
29829      }
29830  }
29831
29832  protected void composeMedicationMedicationIngredientComponent(String name, Medication.MedicationIngredientComponent element) throws IOException {
29833    if (element != null) {
29834      composeElementAttributes(element);
29835      xml.enter(FHIR_NS, name);
29836      composeMedicationMedicationIngredientComponentElements(element);
29837      composeElementClose(element);
29838      xml.exit(FHIR_NS, name);
29839    }
29840  }
29841
29842  protected void composeMedicationMedicationIngredientComponentElements(Medication.MedicationIngredientComponent element) throws IOException {
29843      composeBackboneElements(element);
29844      if (element.hasItem()) {
29845        composeType("item", element.getItem());
29846      }      if (element.hasIsActiveElement()) {
29847        composeBoolean("isActive", element.getIsActiveElement());
29848      }
29849      if (element.hasAmount()) {
29850        composeRatio("amount", element.getAmount());
29851      }
29852  }
29853
29854  protected void composeMedicationMedicationPackageComponent(String name, Medication.MedicationPackageComponent element) throws IOException {
29855    if (element != null) {
29856      composeElementAttributes(element);
29857      xml.enter(FHIR_NS, name);
29858      composeMedicationMedicationPackageComponentElements(element);
29859      composeElementClose(element);
29860      xml.exit(FHIR_NS, name);
29861    }
29862  }
29863
29864  protected void composeMedicationMedicationPackageComponentElements(Medication.MedicationPackageComponent element) throws IOException {
29865      composeBackboneElements(element);
29866      if (element.hasContainer()) {
29867        composeCodeableConcept("container", element.getContainer());
29868      }
29869      if (element.hasContent()) { 
29870        for (Medication.MedicationPackageContentComponent e : element.getContent()) 
29871          composeMedicationMedicationPackageContentComponent("content", e);
29872      }
29873      if (element.hasBatch()) { 
29874        for (Medication.MedicationPackageBatchComponent e : element.getBatch()) 
29875          composeMedicationMedicationPackageBatchComponent("batch", e);
29876      }
29877  }
29878
29879  protected void composeMedicationMedicationPackageContentComponent(String name, Medication.MedicationPackageContentComponent element) throws IOException {
29880    if (element != null) {
29881      composeElementAttributes(element);
29882      xml.enter(FHIR_NS, name);
29883      composeMedicationMedicationPackageContentComponentElements(element);
29884      composeElementClose(element);
29885      xml.exit(FHIR_NS, name);
29886    }
29887  }
29888
29889  protected void composeMedicationMedicationPackageContentComponentElements(Medication.MedicationPackageContentComponent element) throws IOException {
29890      composeBackboneElements(element);
29891      if (element.hasItem()) {
29892        composeType("item", element.getItem());
29893      }      if (element.hasAmount()) {
29894        composeSimpleQuantity("amount", element.getAmount());
29895      }
29896  }
29897
29898  protected void composeMedicationMedicationPackageBatchComponent(String name, Medication.MedicationPackageBatchComponent element) throws IOException {
29899    if (element != null) {
29900      composeElementAttributes(element);
29901      xml.enter(FHIR_NS, name);
29902      composeMedicationMedicationPackageBatchComponentElements(element);
29903      composeElementClose(element);
29904      xml.exit(FHIR_NS, name);
29905    }
29906  }
29907
29908  protected void composeMedicationMedicationPackageBatchComponentElements(Medication.MedicationPackageBatchComponent element) throws IOException {
29909      composeBackboneElements(element);
29910      if (element.hasLotNumberElement()) {
29911        composeString("lotNumber", element.getLotNumberElement());
29912      }
29913      if (element.hasExpirationDateElement()) {
29914        composeDateTime("expirationDate", element.getExpirationDateElement());
29915      }
29916  }
29917
29918  protected void composeMedicationAdministration(String name, MedicationAdministration element) throws IOException {
29919    if (element != null) {
29920      composeDomainResourceAttributes(element);
29921      xml.enter(FHIR_NS, name);
29922      composeMedicationAdministrationElements(element);
29923      composeElementClose(element);
29924      xml.exit(FHIR_NS, name);
29925    }
29926  }
29927
29928  protected void composeMedicationAdministrationElements(MedicationAdministration element) throws IOException {
29929      composeDomainResourceElements(element);
29930      if (element.hasIdentifier()) { 
29931        for (Identifier e : element.getIdentifier()) 
29932          composeIdentifier("identifier", e);
29933      }
29934      if (element.hasDefinition()) { 
29935        for (Reference e : element.getDefinition()) 
29936          composeReference("definition", e);
29937      }
29938      if (element.hasPartOf()) { 
29939        for (Reference e : element.getPartOf()) 
29940          composeReference("partOf", e);
29941      }
29942      if (element.hasStatusElement())
29943        composeEnumeration("status", element.getStatusElement(), new MedicationAdministration.MedicationAdministrationStatusEnumFactory());
29944      if (element.hasCategory()) {
29945        composeCodeableConcept("category", element.getCategory());
29946      }
29947      if (element.hasMedication()) {
29948        composeType("medication", element.getMedication());
29949      }      if (element.hasSubject()) {
29950        composeReference("subject", element.getSubject());
29951      }
29952      if (element.hasContext()) {
29953        composeReference("context", element.getContext());
29954      }
29955      if (element.hasSupportingInformation()) { 
29956        for (Reference e : element.getSupportingInformation()) 
29957          composeReference("supportingInformation", e);
29958      }
29959      if (element.hasEffective()) {
29960        composeType("effective", element.getEffective());
29961      }      if (element.hasPerformer()) { 
29962        for (MedicationAdministration.MedicationAdministrationPerformerComponent e : element.getPerformer()) 
29963          composeMedicationAdministrationMedicationAdministrationPerformerComponent("performer", e);
29964      }
29965      if (element.hasNotGivenElement()) {
29966        composeBoolean("notGiven", element.getNotGivenElement());
29967      }
29968      if (element.hasReasonNotGiven()) { 
29969        for (CodeableConcept e : element.getReasonNotGiven()) 
29970          composeCodeableConcept("reasonNotGiven", e);
29971      }
29972      if (element.hasReasonCode()) { 
29973        for (CodeableConcept e : element.getReasonCode()) 
29974          composeCodeableConcept("reasonCode", e);
29975      }
29976      if (element.hasReasonReference()) { 
29977        for (Reference e : element.getReasonReference()) 
29978          composeReference("reasonReference", e);
29979      }
29980      if (element.hasPrescription()) {
29981        composeReference("prescription", element.getPrescription());
29982      }
29983      if (element.hasDevice()) { 
29984        for (Reference e : element.getDevice()) 
29985          composeReference("device", e);
29986      }
29987      if (element.hasNote()) { 
29988        for (Annotation e : element.getNote()) 
29989          composeAnnotation("note", e);
29990      }
29991      if (element.hasDosage()) {
29992        composeMedicationAdministrationMedicationAdministrationDosageComponent("dosage", element.getDosage());
29993      }
29994      if (element.hasEventHistory()) { 
29995        for (Reference e : element.getEventHistory()) 
29996          composeReference("eventHistory", e);
29997      }
29998  }
29999
30000  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponent(String name, MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
30001    if (element != null) {
30002      composeElementAttributes(element);
30003      xml.enter(FHIR_NS, name);
30004      composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(element);
30005      composeElementClose(element);
30006      xml.exit(FHIR_NS, name);
30007    }
30008  }
30009
30010  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
30011      composeBackboneElements(element);
30012      if (element.hasActor()) {
30013        composeReference("actor", element.getActor());
30014      }
30015      if (element.hasOnBehalfOf()) {
30016        composeReference("onBehalfOf", element.getOnBehalfOf());
30017      }
30018  }
30019
30020  protected void composeMedicationAdministrationMedicationAdministrationDosageComponent(String name, MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
30021    if (element != null) {
30022      composeElementAttributes(element);
30023      xml.enter(FHIR_NS, name);
30024      composeMedicationAdministrationMedicationAdministrationDosageComponentElements(element);
30025      composeElementClose(element);
30026      xml.exit(FHIR_NS, name);
30027    }
30028  }
30029
30030  protected void composeMedicationAdministrationMedicationAdministrationDosageComponentElements(MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
30031      composeBackboneElements(element);
30032      if (element.hasTextElement()) {
30033        composeString("text", element.getTextElement());
30034      }
30035      if (element.hasSite()) {
30036        composeCodeableConcept("site", element.getSite());
30037      }
30038      if (element.hasRoute()) {
30039        composeCodeableConcept("route", element.getRoute());
30040      }
30041      if (element.hasMethod()) {
30042        composeCodeableConcept("method", element.getMethod());
30043      }
30044      if (element.hasDose()) {
30045        composeSimpleQuantity("dose", element.getDose());
30046      }
30047      if (element.hasRate()) {
30048        composeType("rate", element.getRate());
30049      }  }
30050
30051  protected void composeMedicationDispense(String name, MedicationDispense element) throws IOException {
30052    if (element != null) {
30053      composeDomainResourceAttributes(element);
30054      xml.enter(FHIR_NS, name);
30055      composeMedicationDispenseElements(element);
30056      composeElementClose(element);
30057      xml.exit(FHIR_NS, name);
30058    }
30059  }
30060
30061  protected void composeMedicationDispenseElements(MedicationDispense element) throws IOException {
30062      composeDomainResourceElements(element);
30063      if (element.hasIdentifier()) { 
30064        for (Identifier e : element.getIdentifier()) 
30065          composeIdentifier("identifier", e);
30066      }
30067      if (element.hasPartOf()) { 
30068        for (Reference e : element.getPartOf()) 
30069          composeReference("partOf", e);
30070      }
30071      if (element.hasStatusElement())
30072        composeEnumeration("status", element.getStatusElement(), new MedicationDispense.MedicationDispenseStatusEnumFactory());
30073      if (element.hasCategory()) {
30074        composeCodeableConcept("category", element.getCategory());
30075      }
30076      if (element.hasMedication()) {
30077        composeType("medication", element.getMedication());
30078      }      if (element.hasSubject()) {
30079        composeReference("subject", element.getSubject());
30080      }
30081      if (element.hasContext()) {
30082        composeReference("context", element.getContext());
30083      }
30084      if (element.hasSupportingInformation()) { 
30085        for (Reference e : element.getSupportingInformation()) 
30086          composeReference("supportingInformation", e);
30087      }
30088      if (element.hasPerformer()) { 
30089        for (MedicationDispense.MedicationDispensePerformerComponent e : element.getPerformer()) 
30090          composeMedicationDispenseMedicationDispensePerformerComponent("performer", e);
30091      }
30092      if (element.hasAuthorizingPrescription()) { 
30093        for (Reference e : element.getAuthorizingPrescription()) 
30094          composeReference("authorizingPrescription", e);
30095      }
30096      if (element.hasType()) {
30097        composeCodeableConcept("type", element.getType());
30098      }
30099      if (element.hasQuantity()) {
30100        composeSimpleQuantity("quantity", element.getQuantity());
30101      }
30102      if (element.hasDaysSupply()) {
30103        composeSimpleQuantity("daysSupply", element.getDaysSupply());
30104      }
30105      if (element.hasWhenPreparedElement()) {
30106        composeDateTime("whenPrepared", element.getWhenPreparedElement());
30107      }
30108      if (element.hasWhenHandedOverElement()) {
30109        composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
30110      }
30111      if (element.hasDestination()) {
30112        composeReference("destination", element.getDestination());
30113      }
30114      if (element.hasReceiver()) { 
30115        for (Reference e : element.getReceiver()) 
30116          composeReference("receiver", e);
30117      }
30118      if (element.hasNote()) { 
30119        for (Annotation e : element.getNote()) 
30120          composeAnnotation("note", e);
30121      }
30122      if (element.hasDosageInstruction()) { 
30123        for (Dosage e : element.getDosageInstruction()) 
30124          composeDosage("dosageInstruction", e);
30125      }
30126      if (element.hasSubstitution()) {
30127        composeMedicationDispenseMedicationDispenseSubstitutionComponent("substitution", element.getSubstitution());
30128      }
30129      if (element.hasDetectedIssue()) { 
30130        for (Reference e : element.getDetectedIssue()) 
30131          composeReference("detectedIssue", e);
30132      }
30133      if (element.hasNotDoneElement()) {
30134        composeBoolean("notDone", element.getNotDoneElement());
30135      }
30136      if (element.hasNotDoneReason()) {
30137        composeType("notDoneReason", element.getNotDoneReason());
30138      }      if (element.hasEventHistory()) { 
30139        for (Reference e : element.getEventHistory()) 
30140          composeReference("eventHistory", e);
30141      }
30142  }
30143
30144  protected void composeMedicationDispenseMedicationDispensePerformerComponent(String name, MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
30145    if (element != null) {
30146      composeElementAttributes(element);
30147      xml.enter(FHIR_NS, name);
30148      composeMedicationDispenseMedicationDispensePerformerComponentElements(element);
30149      composeElementClose(element);
30150      xml.exit(FHIR_NS, name);
30151    }
30152  }
30153
30154  protected void composeMedicationDispenseMedicationDispensePerformerComponentElements(MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
30155      composeBackboneElements(element);
30156      if (element.hasActor()) {
30157        composeReference("actor", element.getActor());
30158      }
30159      if (element.hasOnBehalfOf()) {
30160        composeReference("onBehalfOf", element.getOnBehalfOf());
30161      }
30162  }
30163
30164  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponent(String name, MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
30165    if (element != null) {
30166      composeElementAttributes(element);
30167      xml.enter(FHIR_NS, name);
30168      composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(element);
30169      composeElementClose(element);
30170      xml.exit(FHIR_NS, name);
30171    }
30172  }
30173
30174  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
30175      composeBackboneElements(element);
30176      if (element.hasWasSubstitutedElement()) {
30177        composeBoolean("wasSubstituted", element.getWasSubstitutedElement());
30178      }
30179      if (element.hasType()) {
30180        composeCodeableConcept("type", element.getType());
30181      }
30182      if (element.hasReason()) { 
30183        for (CodeableConcept e : element.getReason()) 
30184          composeCodeableConcept("reason", e);
30185      }
30186      if (element.hasResponsibleParty()) { 
30187        for (Reference e : element.getResponsibleParty()) 
30188          composeReference("responsibleParty", e);
30189      }
30190  }
30191
30192  protected void composeMedicationRequest(String name, MedicationRequest element) throws IOException {
30193    if (element != null) {
30194      composeDomainResourceAttributes(element);
30195      xml.enter(FHIR_NS, name);
30196      composeMedicationRequestElements(element);
30197      composeElementClose(element);
30198      xml.exit(FHIR_NS, name);
30199    }
30200  }
30201
30202  protected void composeMedicationRequestElements(MedicationRequest element) throws IOException {
30203      composeDomainResourceElements(element);
30204      if (element.hasIdentifier()) { 
30205        for (Identifier e : element.getIdentifier()) 
30206          composeIdentifier("identifier", e);
30207      }
30208      if (element.hasDefinition()) { 
30209        for (Reference e : element.getDefinition()) 
30210          composeReference("definition", e);
30211      }
30212      if (element.hasBasedOn()) { 
30213        for (Reference e : element.getBasedOn()) 
30214          composeReference("basedOn", e);
30215      }
30216      if (element.hasGroupIdentifier()) {
30217        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
30218      }
30219      if (element.hasStatusElement())
30220        composeEnumeration("status", element.getStatusElement(), new MedicationRequest.MedicationRequestStatusEnumFactory());
30221      if (element.hasIntentElement())
30222        composeEnumeration("intent", element.getIntentElement(), new MedicationRequest.MedicationRequestIntentEnumFactory());
30223      if (element.hasCategory()) {
30224        composeCodeableConcept("category", element.getCategory());
30225      }
30226      if (element.hasPriorityElement())
30227        composeEnumeration("priority", element.getPriorityElement(), new MedicationRequest.MedicationRequestPriorityEnumFactory());
30228      if (element.hasMedication()) {
30229        composeType("medication", element.getMedication());
30230      }      if (element.hasSubject()) {
30231        composeReference("subject", element.getSubject());
30232      }
30233      if (element.hasContext()) {
30234        composeReference("context", element.getContext());
30235      }
30236      if (element.hasSupportingInformation()) { 
30237        for (Reference e : element.getSupportingInformation()) 
30238          composeReference("supportingInformation", e);
30239      }
30240      if (element.hasAuthoredOnElement()) {
30241        composeDateTime("authoredOn", element.getAuthoredOnElement());
30242      }
30243      if (element.hasRequester()) {
30244        composeMedicationRequestMedicationRequestRequesterComponent("requester", element.getRequester());
30245      }
30246      if (element.hasRecorder()) {
30247        composeReference("recorder", element.getRecorder());
30248      }
30249      if (element.hasReasonCode()) { 
30250        for (CodeableConcept e : element.getReasonCode()) 
30251          composeCodeableConcept("reasonCode", e);
30252      }
30253      if (element.hasReasonReference()) { 
30254        for (Reference e : element.getReasonReference()) 
30255          composeReference("reasonReference", e);
30256      }
30257      if (element.hasNote()) { 
30258        for (Annotation e : element.getNote()) 
30259          composeAnnotation("note", e);
30260      }
30261      if (element.hasDosageInstruction()) { 
30262        for (Dosage e : element.getDosageInstruction()) 
30263          composeDosage("dosageInstruction", e);
30264      }
30265      if (element.hasDispenseRequest()) {
30266        composeMedicationRequestMedicationRequestDispenseRequestComponent("dispenseRequest", element.getDispenseRequest());
30267      }
30268      if (element.hasSubstitution()) {
30269        composeMedicationRequestMedicationRequestSubstitutionComponent("substitution", element.getSubstitution());
30270      }
30271      if (element.hasPriorPrescription()) {
30272        composeReference("priorPrescription", element.getPriorPrescription());
30273      }
30274      if (element.hasDetectedIssue()) { 
30275        for (Reference e : element.getDetectedIssue()) 
30276          composeReference("detectedIssue", e);
30277      }
30278      if (element.hasEventHistory()) { 
30279        for (Reference e : element.getEventHistory()) 
30280          composeReference("eventHistory", e);
30281      }
30282  }
30283
30284  protected void composeMedicationRequestMedicationRequestRequesterComponent(String name, MedicationRequest.MedicationRequestRequesterComponent element) throws IOException {
30285    if (element != null) {
30286      composeElementAttributes(element);
30287      xml.enter(FHIR_NS, name);
30288      composeMedicationRequestMedicationRequestRequesterComponentElements(element);
30289      composeElementClose(element);
30290      xml.exit(FHIR_NS, name);
30291    }
30292  }
30293
30294  protected void composeMedicationRequestMedicationRequestRequesterComponentElements(MedicationRequest.MedicationRequestRequesterComponent element) throws IOException {
30295      composeBackboneElements(element);
30296      if (element.hasAgent()) {
30297        composeReference("agent", element.getAgent());
30298      }
30299      if (element.hasOnBehalfOf()) {
30300        composeReference("onBehalfOf", element.getOnBehalfOf());
30301      }
30302  }
30303
30304  protected void composeMedicationRequestMedicationRequestDispenseRequestComponent(String name, MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
30305    if (element != null) {
30306      composeElementAttributes(element);
30307      xml.enter(FHIR_NS, name);
30308      composeMedicationRequestMedicationRequestDispenseRequestComponentElements(element);
30309      composeElementClose(element);
30310      xml.exit(FHIR_NS, name);
30311    }
30312  }
30313
30314  protected void composeMedicationRequestMedicationRequestDispenseRequestComponentElements(MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
30315      composeBackboneElements(element);
30316      if (element.hasValidityPeriod()) {
30317        composePeriod("validityPeriod", element.getValidityPeriod());
30318      }
30319      if (element.hasNumberOfRepeatsAllowedElement()) {
30320        composePositiveInt("numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement());
30321      }
30322      if (element.hasQuantity()) {
30323        composeSimpleQuantity("quantity", element.getQuantity());
30324      }
30325      if (element.hasExpectedSupplyDuration()) {
30326        composeDuration("expectedSupplyDuration", element.getExpectedSupplyDuration());
30327      }
30328      if (element.hasPerformer()) {
30329        composeReference("performer", element.getPerformer());
30330      }
30331  }
30332
30333  protected void composeMedicationRequestMedicationRequestSubstitutionComponent(String name, MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
30334    if (element != null) {
30335      composeElementAttributes(element);
30336      xml.enter(FHIR_NS, name);
30337      composeMedicationRequestMedicationRequestSubstitutionComponentElements(element);
30338      composeElementClose(element);
30339      xml.exit(FHIR_NS, name);
30340    }
30341  }
30342
30343  protected void composeMedicationRequestMedicationRequestSubstitutionComponentElements(MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
30344      composeBackboneElements(element);
30345      if (element.hasAllowedElement()) {
30346        composeBoolean("allowed", element.getAllowedElement());
30347      }
30348      if (element.hasReason()) {
30349        composeCodeableConcept("reason", element.getReason());
30350      }
30351  }
30352
30353  protected void composeMedicationStatement(String name, MedicationStatement element) throws IOException {
30354    if (element != null) {
30355      composeDomainResourceAttributes(element);
30356      xml.enter(FHIR_NS, name);
30357      composeMedicationStatementElements(element);
30358      composeElementClose(element);
30359      xml.exit(FHIR_NS, name);
30360    }
30361  }
30362
30363  protected void composeMedicationStatementElements(MedicationStatement element) throws IOException {
30364      composeDomainResourceElements(element);
30365      if (element.hasIdentifier()) { 
30366        for (Identifier e : element.getIdentifier()) 
30367          composeIdentifier("identifier", e);
30368      }
30369      if (element.hasBasedOn()) { 
30370        for (Reference e : element.getBasedOn()) 
30371          composeReference("basedOn", e);
30372      }
30373      if (element.hasPartOf()) { 
30374        for (Reference e : element.getPartOf()) 
30375          composeReference("partOf", e);
30376      }
30377      if (element.hasContext()) {
30378        composeReference("context", element.getContext());
30379      }
30380      if (element.hasStatusElement())
30381        composeEnumeration("status", element.getStatusElement(), new MedicationStatement.MedicationStatementStatusEnumFactory());
30382      if (element.hasCategory()) {
30383        composeCodeableConcept("category", element.getCategory());
30384      }
30385      if (element.hasMedication()) {
30386        composeType("medication", element.getMedication());
30387      }      if (element.hasEffective()) {
30388        composeType("effective", element.getEffective());
30389      }      if (element.hasDateAssertedElement()) {
30390        composeDateTime("dateAsserted", element.getDateAssertedElement());
30391      }
30392      if (element.hasInformationSource()) {
30393        composeReference("informationSource", element.getInformationSource());
30394      }
30395      if (element.hasSubject()) {
30396        composeReference("subject", element.getSubject());
30397      }
30398      if (element.hasDerivedFrom()) { 
30399        for (Reference e : element.getDerivedFrom()) 
30400          composeReference("derivedFrom", e);
30401      }
30402      if (element.hasTakenElement())
30403        composeEnumeration("taken", element.getTakenElement(), new MedicationStatement.MedicationStatementTakenEnumFactory());
30404      if (element.hasReasonNotTaken()) { 
30405        for (CodeableConcept e : element.getReasonNotTaken()) 
30406          composeCodeableConcept("reasonNotTaken", e);
30407      }
30408      if (element.hasReasonCode()) { 
30409        for (CodeableConcept e : element.getReasonCode()) 
30410          composeCodeableConcept("reasonCode", e);
30411      }
30412      if (element.hasReasonReference()) { 
30413        for (Reference e : element.getReasonReference()) 
30414          composeReference("reasonReference", e);
30415      }
30416      if (element.hasNote()) { 
30417        for (Annotation e : element.getNote()) 
30418          composeAnnotation("note", e);
30419      }
30420      if (element.hasDosage()) { 
30421        for (Dosage e : element.getDosage()) 
30422          composeDosage("dosage", e);
30423      }
30424  }
30425
30426  protected void composeMessageDefinition(String name, MessageDefinition element) throws IOException {
30427    if (element != null) {
30428      composeDomainResourceAttributes(element);
30429      xml.enter(FHIR_NS, name);
30430      composeMessageDefinitionElements(element);
30431      composeElementClose(element);
30432      xml.exit(FHIR_NS, name);
30433    }
30434  }
30435
30436  protected void composeMessageDefinitionElements(MessageDefinition element) throws IOException {
30437      composeDomainResourceElements(element);
30438      if (element.hasUrlElement()) {
30439        composeUri("url", element.getUrlElement());
30440      }
30441      if (element.hasIdentifier()) {
30442        composeIdentifier("identifier", element.getIdentifier());
30443      }
30444      if (element.hasVersionElement()) {
30445        composeString("version", element.getVersionElement());
30446      }
30447      if (element.hasNameElement()) {
30448        composeString("name", element.getNameElement());
30449      }
30450      if (element.hasTitleElement()) {
30451        composeString("title", element.getTitleElement());
30452      }
30453      if (element.hasStatusElement())
30454        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30455      if (element.hasExperimentalElement()) {
30456        composeBoolean("experimental", element.getExperimentalElement());
30457      }
30458      if (element.hasDateElement()) {
30459        composeDateTime("date", element.getDateElement());
30460      }
30461      if (element.hasPublisherElement()) {
30462        composeString("publisher", element.getPublisherElement());
30463      }
30464      if (element.hasContact()) { 
30465        for (ContactDetail e : element.getContact()) 
30466          composeContactDetail("contact", e);
30467      }
30468      if (element.hasDescriptionElement()) {
30469        composeMarkdown("description", element.getDescriptionElement());
30470      }
30471      if (element.hasUseContext()) { 
30472        for (UsageContext e : element.getUseContext()) 
30473          composeUsageContext("useContext", e);
30474      }
30475      if (element.hasJurisdiction()) { 
30476        for (CodeableConcept e : element.getJurisdiction()) 
30477          composeCodeableConcept("jurisdiction", e);
30478      }
30479      if (element.hasPurposeElement()) {
30480        composeMarkdown("purpose", element.getPurposeElement());
30481      }
30482      if (element.hasCopyrightElement()) {
30483        composeMarkdown("copyright", element.getCopyrightElement());
30484      }
30485      if (element.hasBase()) {
30486        composeReference("base", element.getBase());
30487      }
30488      if (element.hasParent()) { 
30489        for (Reference e : element.getParent()) 
30490          composeReference("parent", e);
30491      }
30492      if (element.hasReplaces()) { 
30493        for (Reference e : element.getReplaces()) 
30494          composeReference("replaces", e);
30495      }
30496      if (element.hasEvent()) {
30497        composeCoding("event", element.getEvent());
30498      }
30499      if (element.hasCategoryElement())
30500        composeEnumeration("category", element.getCategoryElement(), new MessageDefinition.MessageSignificanceCategoryEnumFactory());
30501      if (element.hasFocus()) { 
30502        for (MessageDefinition.MessageDefinitionFocusComponent e : element.getFocus()) 
30503          composeMessageDefinitionMessageDefinitionFocusComponent("focus", e);
30504      }
30505      if (element.hasResponseRequiredElement()) {
30506        composeBoolean("responseRequired", element.getResponseRequiredElement());
30507      }
30508      if (element.hasAllowedResponse()) { 
30509        for (MessageDefinition.MessageDefinitionAllowedResponseComponent e : element.getAllowedResponse()) 
30510          composeMessageDefinitionMessageDefinitionAllowedResponseComponent("allowedResponse", e);
30511      }
30512  }
30513
30514  protected void composeMessageDefinitionMessageDefinitionFocusComponent(String name, MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
30515    if (element != null) {
30516      composeElementAttributes(element);
30517      xml.enter(FHIR_NS, name);
30518      composeMessageDefinitionMessageDefinitionFocusComponentElements(element);
30519      composeElementClose(element);
30520      xml.exit(FHIR_NS, name);
30521    }
30522  }
30523
30524  protected void composeMessageDefinitionMessageDefinitionFocusComponentElements(MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
30525      composeBackboneElements(element);
30526      if (element.hasCodeElement()) {
30527        composeCode("code", element.getCodeElement());
30528      }
30529      if (element.hasProfile()) {
30530        composeReference("profile", element.getProfile());
30531      }
30532      if (element.hasMinElement()) {
30533        composeUnsignedInt("min", element.getMinElement());
30534      }
30535      if (element.hasMaxElement()) {
30536        composeString("max", element.getMaxElement());
30537      }
30538  }
30539
30540  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponent(String name, MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
30541    if (element != null) {
30542      composeElementAttributes(element);
30543      xml.enter(FHIR_NS, name);
30544      composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(element);
30545      composeElementClose(element);
30546      xml.exit(FHIR_NS, name);
30547    }
30548  }
30549
30550  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
30551      composeBackboneElements(element);
30552      if (element.hasMessage()) {
30553        composeReference("message", element.getMessage());
30554      }
30555      if (element.hasSituationElement()) {
30556        composeMarkdown("situation", element.getSituationElement());
30557      }
30558  }
30559
30560  protected void composeMessageHeader(String name, MessageHeader element) throws IOException {
30561    if (element != null) {
30562      composeDomainResourceAttributes(element);
30563      xml.enter(FHIR_NS, name);
30564      composeMessageHeaderElements(element);
30565      composeElementClose(element);
30566      xml.exit(FHIR_NS, name);
30567    }
30568  }
30569
30570  protected void composeMessageHeaderElements(MessageHeader element) throws IOException {
30571      composeDomainResourceElements(element);
30572      if (element.hasEvent()) {
30573        composeCoding("event", element.getEvent());
30574      }
30575      if (element.hasDestination()) { 
30576        for (MessageHeader.MessageDestinationComponent e : element.getDestination()) 
30577          composeMessageHeaderMessageDestinationComponent("destination", e);
30578      }
30579      if (element.hasReceiver()) {
30580        composeReference("receiver", element.getReceiver());
30581      }
30582      if (element.hasSender()) {
30583        composeReference("sender", element.getSender());
30584      }
30585      if (element.hasTimestampElement()) {
30586        composeInstant("timestamp", element.getTimestampElement());
30587      }
30588      if (element.hasEnterer()) {
30589        composeReference("enterer", element.getEnterer());
30590      }
30591      if (element.hasAuthor()) {
30592        composeReference("author", element.getAuthor());
30593      }
30594      if (element.hasSource()) {
30595        composeMessageHeaderMessageSourceComponent("source", element.getSource());
30596      }
30597      if (element.hasResponsible()) {
30598        composeReference("responsible", element.getResponsible());
30599      }
30600      if (element.hasReason()) {
30601        composeCodeableConcept("reason", element.getReason());
30602      }
30603      if (element.hasResponse()) {
30604        composeMessageHeaderMessageHeaderResponseComponent("response", element.getResponse());
30605      }
30606      if (element.hasFocus()) { 
30607        for (Reference e : element.getFocus()) 
30608          composeReference("focus", e);
30609      }
30610  }
30611
30612  protected void composeMessageHeaderMessageDestinationComponent(String name, MessageHeader.MessageDestinationComponent element) throws IOException {
30613    if (element != null) {
30614      composeElementAttributes(element);
30615      xml.enter(FHIR_NS, name);
30616      composeMessageHeaderMessageDestinationComponentElements(element);
30617      composeElementClose(element);
30618      xml.exit(FHIR_NS, name);
30619    }
30620  }
30621
30622  protected void composeMessageHeaderMessageDestinationComponentElements(MessageHeader.MessageDestinationComponent element) throws IOException {
30623      composeBackboneElements(element);
30624      if (element.hasNameElement()) {
30625        composeString("name", element.getNameElement());
30626      }
30627      if (element.hasTarget()) {
30628        composeReference("target", element.getTarget());
30629      }
30630      if (element.hasEndpointElement()) {
30631        composeUri("endpoint", element.getEndpointElement());
30632      }
30633  }
30634
30635  protected void composeMessageHeaderMessageSourceComponent(String name, MessageHeader.MessageSourceComponent element) throws IOException {
30636    if (element != null) {
30637      composeElementAttributes(element);
30638      xml.enter(FHIR_NS, name);
30639      composeMessageHeaderMessageSourceComponentElements(element);
30640      composeElementClose(element);
30641      xml.exit(FHIR_NS, name);
30642    }
30643  }
30644
30645  protected void composeMessageHeaderMessageSourceComponentElements(MessageHeader.MessageSourceComponent element) throws IOException {
30646      composeBackboneElements(element);
30647      if (element.hasNameElement()) {
30648        composeString("name", element.getNameElement());
30649      }
30650      if (element.hasSoftwareElement()) {
30651        composeString("software", element.getSoftwareElement());
30652      }
30653      if (element.hasVersionElement()) {
30654        composeString("version", element.getVersionElement());
30655      }
30656      if (element.hasContact()) {
30657        composeContactPoint("contact", element.getContact());
30658      }
30659      if (element.hasEndpointElement()) {
30660        composeUri("endpoint", element.getEndpointElement());
30661      }
30662  }
30663
30664  protected void composeMessageHeaderMessageHeaderResponseComponent(String name, MessageHeader.MessageHeaderResponseComponent element) throws IOException {
30665    if (element != null) {
30666      composeElementAttributes(element);
30667      xml.enter(FHIR_NS, name);
30668      composeMessageHeaderMessageHeaderResponseComponentElements(element);
30669      composeElementClose(element);
30670      xml.exit(FHIR_NS, name);
30671    }
30672  }
30673
30674  protected void composeMessageHeaderMessageHeaderResponseComponentElements(MessageHeader.MessageHeaderResponseComponent element) throws IOException {
30675      composeBackboneElements(element);
30676      if (element.hasIdentifierElement()) {
30677        composeId("identifier", element.getIdentifierElement());
30678      }
30679      if (element.hasCodeElement())
30680        composeEnumeration("code", element.getCodeElement(), new MessageHeader.ResponseTypeEnumFactory());
30681      if (element.hasDetails()) {
30682        composeReference("details", element.getDetails());
30683      }
30684  }
30685
30686  protected void composeNamingSystem(String name, NamingSystem element) throws IOException {
30687    if (element != null) {
30688      composeDomainResourceAttributes(element);
30689      xml.enter(FHIR_NS, name);
30690      composeNamingSystemElements(element);
30691      composeElementClose(element);
30692      xml.exit(FHIR_NS, name);
30693    }
30694  }
30695
30696  protected void composeNamingSystemElements(NamingSystem element) throws IOException {
30697      composeDomainResourceElements(element);
30698      if (element.hasNameElement()) {
30699        composeString("name", element.getNameElement());
30700      }
30701      if (element.hasStatusElement())
30702        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30703      if (element.hasKindElement())
30704        composeEnumeration("kind", element.getKindElement(), new NamingSystem.NamingSystemTypeEnumFactory());
30705      if (element.hasDateElement()) {
30706        composeDateTime("date", element.getDateElement());
30707      }
30708      if (element.hasPublisherElement()) {
30709        composeString("publisher", element.getPublisherElement());
30710      }
30711      if (element.hasContact()) { 
30712        for (ContactDetail e : element.getContact()) 
30713          composeContactDetail("contact", e);
30714      }
30715      if (element.hasResponsibleElement()) {
30716        composeString("responsible", element.getResponsibleElement());
30717      }
30718      if (element.hasType()) {
30719        composeCodeableConcept("type", element.getType());
30720      }
30721      if (element.hasDescriptionElement()) {
30722        composeMarkdown("description", element.getDescriptionElement());
30723      }
30724      if (element.hasUseContext()) { 
30725        for (UsageContext e : element.getUseContext()) 
30726          composeUsageContext("useContext", e);
30727      }
30728      if (element.hasJurisdiction()) { 
30729        for (CodeableConcept e : element.getJurisdiction()) 
30730          composeCodeableConcept("jurisdiction", e);
30731      }
30732      if (element.hasUsageElement()) {
30733        composeString("usage", element.getUsageElement());
30734      }
30735      if (element.hasUniqueId()) { 
30736        for (NamingSystem.NamingSystemUniqueIdComponent e : element.getUniqueId()) 
30737          composeNamingSystemNamingSystemUniqueIdComponent("uniqueId", e);
30738      }
30739      if (element.hasReplacedBy()) {
30740        composeReference("replacedBy", element.getReplacedBy());
30741      }
30742  }
30743
30744  protected void composeNamingSystemNamingSystemUniqueIdComponent(String name, NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
30745    if (element != null) {
30746      composeElementAttributes(element);
30747      xml.enter(FHIR_NS, name);
30748      composeNamingSystemNamingSystemUniqueIdComponentElements(element);
30749      composeElementClose(element);
30750      xml.exit(FHIR_NS, name);
30751    }
30752  }
30753
30754  protected void composeNamingSystemNamingSystemUniqueIdComponentElements(NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
30755      composeBackboneElements(element);
30756      if (element.hasTypeElement())
30757        composeEnumeration("type", element.getTypeElement(), new NamingSystem.NamingSystemIdentifierTypeEnumFactory());
30758      if (element.hasValueElement()) {
30759        composeString("value", element.getValueElement());
30760      }
30761      if (element.hasPreferredElement()) {
30762        composeBoolean("preferred", element.getPreferredElement());
30763      }
30764      if (element.hasCommentElement()) {
30765        composeString("comment", element.getCommentElement());
30766      }
30767      if (element.hasPeriod()) {
30768        composePeriod("period", element.getPeriod());
30769      }
30770  }
30771
30772  protected void composeNutritionOrder(String name, NutritionOrder element) throws IOException {
30773    if (element != null) {
30774      composeDomainResourceAttributes(element);
30775      xml.enter(FHIR_NS, name);
30776      composeNutritionOrderElements(element);
30777      composeElementClose(element);
30778      xml.exit(FHIR_NS, name);
30779    }
30780  }
30781
30782  protected void composeNutritionOrderElements(NutritionOrder element) throws IOException {
30783      composeDomainResourceElements(element);
30784      if (element.hasIdentifier()) { 
30785        for (Identifier e : element.getIdentifier()) 
30786          composeIdentifier("identifier", e);
30787      }
30788      if (element.hasStatusElement())
30789        composeEnumeration("status", element.getStatusElement(), new NutritionOrder.NutritionOrderStatusEnumFactory());
30790      if (element.hasPatient()) {
30791        composeReference("patient", element.getPatient());
30792      }
30793      if (element.hasEncounter()) {
30794        composeReference("encounter", element.getEncounter());
30795      }
30796      if (element.hasDateTimeElement()) {
30797        composeDateTime("dateTime", element.getDateTimeElement());
30798      }
30799      if (element.hasOrderer()) {
30800        composeReference("orderer", element.getOrderer());
30801      }
30802      if (element.hasAllergyIntolerance()) { 
30803        for (Reference e : element.getAllergyIntolerance()) 
30804          composeReference("allergyIntolerance", e);
30805      }
30806      if (element.hasFoodPreferenceModifier()) { 
30807        for (CodeableConcept e : element.getFoodPreferenceModifier()) 
30808          composeCodeableConcept("foodPreferenceModifier", e);
30809      }
30810      if (element.hasExcludeFoodModifier()) { 
30811        for (CodeableConcept e : element.getExcludeFoodModifier()) 
30812          composeCodeableConcept("excludeFoodModifier", e);
30813      }
30814      if (element.hasOralDiet()) {
30815        composeNutritionOrderNutritionOrderOralDietComponent("oralDiet", element.getOralDiet());
30816      }
30817      if (element.hasSupplement()) { 
30818        for (NutritionOrder.NutritionOrderSupplementComponent e : element.getSupplement()) 
30819          composeNutritionOrderNutritionOrderSupplementComponent("supplement", e);
30820      }
30821      if (element.hasEnteralFormula()) {
30822        composeNutritionOrderNutritionOrderEnteralFormulaComponent("enteralFormula", element.getEnteralFormula());
30823      }
30824  }
30825
30826  protected void composeNutritionOrderNutritionOrderOralDietComponent(String name, NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
30827    if (element != null) {
30828      composeElementAttributes(element);
30829      xml.enter(FHIR_NS, name);
30830      composeNutritionOrderNutritionOrderOralDietComponentElements(element);
30831      composeElementClose(element);
30832      xml.exit(FHIR_NS, name);
30833    }
30834  }
30835
30836  protected void composeNutritionOrderNutritionOrderOralDietComponentElements(NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
30837      composeBackboneElements(element);
30838      if (element.hasType()) { 
30839        for (CodeableConcept e : element.getType()) 
30840          composeCodeableConcept("type", e);
30841      }
30842      if (element.hasSchedule()) { 
30843        for (Timing e : element.getSchedule()) 
30844          composeTiming("schedule", e);
30845      }
30846      if (element.hasNutrient()) { 
30847        for (NutritionOrder.NutritionOrderOralDietNutrientComponent e : element.getNutrient()) 
30848          composeNutritionOrderNutritionOrderOralDietNutrientComponent("nutrient", e);
30849      }
30850      if (element.hasTexture()) { 
30851        for (NutritionOrder.NutritionOrderOralDietTextureComponent e : element.getTexture()) 
30852          composeNutritionOrderNutritionOrderOralDietTextureComponent("texture", e);
30853      }
30854      if (element.hasFluidConsistencyType()) { 
30855        for (CodeableConcept e : element.getFluidConsistencyType()) 
30856          composeCodeableConcept("fluidConsistencyType", e);
30857      }
30858      if (element.hasInstructionElement()) {
30859        composeString("instruction", element.getInstructionElement());
30860      }
30861  }
30862
30863  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponent(String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
30864    if (element != null) {
30865      composeElementAttributes(element);
30866      xml.enter(FHIR_NS, name);
30867      composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(element);
30868      composeElementClose(element);
30869      xml.exit(FHIR_NS, name);
30870    }
30871  }
30872
30873  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
30874      composeBackboneElements(element);
30875      if (element.hasModifier()) {
30876        composeCodeableConcept("modifier", element.getModifier());
30877      }
30878      if (element.hasAmount()) {
30879        composeSimpleQuantity("amount", element.getAmount());
30880      }
30881  }
30882
30883  protected void composeNutritionOrderNutritionOrderOralDietTextureComponent(String name, NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
30884    if (element != null) {
30885      composeElementAttributes(element);
30886      xml.enter(FHIR_NS, name);
30887      composeNutritionOrderNutritionOrderOralDietTextureComponentElements(element);
30888      composeElementClose(element);
30889      xml.exit(FHIR_NS, name);
30890    }
30891  }
30892
30893  protected void composeNutritionOrderNutritionOrderOralDietTextureComponentElements(NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
30894      composeBackboneElements(element);
30895      if (element.hasModifier()) {
30896        composeCodeableConcept("modifier", element.getModifier());
30897      }
30898      if (element.hasFoodType()) {
30899        composeCodeableConcept("foodType", element.getFoodType());
30900      }
30901  }
30902
30903  protected void composeNutritionOrderNutritionOrderSupplementComponent(String name, NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
30904    if (element != null) {
30905      composeElementAttributes(element);
30906      xml.enter(FHIR_NS, name);
30907      composeNutritionOrderNutritionOrderSupplementComponentElements(element);
30908      composeElementClose(element);
30909      xml.exit(FHIR_NS, name);
30910    }
30911  }
30912
30913  protected void composeNutritionOrderNutritionOrderSupplementComponentElements(NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
30914      composeBackboneElements(element);
30915      if (element.hasType()) {
30916        composeCodeableConcept("type", element.getType());
30917      }
30918      if (element.hasProductNameElement()) {
30919        composeString("productName", element.getProductNameElement());
30920      }
30921      if (element.hasSchedule()) { 
30922        for (Timing e : element.getSchedule()) 
30923          composeTiming("schedule", e);
30924      }
30925      if (element.hasQuantity()) {
30926        composeSimpleQuantity("quantity", element.getQuantity());
30927      }
30928      if (element.hasInstructionElement()) {
30929        composeString("instruction", element.getInstructionElement());
30930      }
30931  }
30932
30933  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
30934    if (element != null) {
30935      composeElementAttributes(element);
30936      xml.enter(FHIR_NS, name);
30937      composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(element);
30938      composeElementClose(element);
30939      xml.exit(FHIR_NS, name);
30940    }
30941  }
30942
30943  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
30944      composeBackboneElements(element);
30945      if (element.hasBaseFormulaType()) {
30946        composeCodeableConcept("baseFormulaType", element.getBaseFormulaType());
30947      }
30948      if (element.hasBaseFormulaProductNameElement()) {
30949        composeString("baseFormulaProductName", element.getBaseFormulaProductNameElement());
30950      }
30951      if (element.hasAdditiveType()) {
30952        composeCodeableConcept("additiveType", element.getAdditiveType());
30953      }
30954      if (element.hasAdditiveProductNameElement()) {
30955        composeString("additiveProductName", element.getAdditiveProductNameElement());
30956      }
30957      if (element.hasCaloricDensity()) {
30958        composeSimpleQuantity("caloricDensity", element.getCaloricDensity());
30959      }
30960      if (element.hasRouteofAdministration()) {
30961        composeCodeableConcept("routeofAdministration", element.getRouteofAdministration());
30962      }
30963      if (element.hasAdministration()) { 
30964        for (NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent e : element.getAdministration()) 
30965          composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent("administration", e);
30966      }
30967      if (element.hasMaxVolumeToDeliver()) {
30968        composeSimpleQuantity("maxVolumeToDeliver", element.getMaxVolumeToDeliver());
30969      }
30970      if (element.hasAdministrationInstructionElement()) {
30971        composeString("administrationInstruction", element.getAdministrationInstructionElement());
30972      }
30973  }
30974
30975  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
30976    if (element != null) {
30977      composeElementAttributes(element);
30978      xml.enter(FHIR_NS, name);
30979      composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(element);
30980      composeElementClose(element);
30981      xml.exit(FHIR_NS, name);
30982    }
30983  }
30984
30985  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
30986      composeBackboneElements(element);
30987      if (element.hasSchedule()) {
30988        composeTiming("schedule", element.getSchedule());
30989      }
30990      if (element.hasQuantity()) {
30991        composeSimpleQuantity("quantity", element.getQuantity());
30992      }
30993      if (element.hasRate()) {
30994        composeType("rate", element.getRate());
30995      }  }
30996
30997  protected void composeObservation(String name, Observation element) throws IOException {
30998    if (element != null) {
30999      composeDomainResourceAttributes(element);
31000      xml.enter(FHIR_NS, name);
31001      composeObservationElements(element);
31002      composeElementClose(element);
31003      xml.exit(FHIR_NS, name);
31004    }
31005  }
31006
31007  protected void composeObservationElements(Observation element) throws IOException {
31008      composeDomainResourceElements(element);
31009      if (element.hasIdentifier()) { 
31010        for (Identifier e : element.getIdentifier()) 
31011          composeIdentifier("identifier", e);
31012      }
31013      if (element.hasBasedOn()) { 
31014        for (Reference e : element.getBasedOn()) 
31015          composeReference("basedOn", e);
31016      }
31017      if (element.hasStatusElement())
31018        composeEnumeration("status", element.getStatusElement(), new Observation.ObservationStatusEnumFactory());
31019      if (element.hasCategory()) { 
31020        for (CodeableConcept e : element.getCategory()) 
31021          composeCodeableConcept("category", e);
31022      }
31023      if (element.hasCode()) {
31024        composeCodeableConcept("code", element.getCode());
31025      }
31026      if (element.hasSubject()) {
31027        composeReference("subject", element.getSubject());
31028      }
31029      if (element.hasContext()) {
31030        composeReference("context", element.getContext());
31031      }
31032      if (element.hasEffective()) {
31033        composeType("effective", element.getEffective());
31034      }      if (element.hasIssuedElement()) {
31035        composeInstant("issued", element.getIssuedElement());
31036      }
31037      if (element.hasPerformer()) { 
31038        for (Reference e : element.getPerformer()) 
31039          composeReference("performer", e);
31040      }
31041      if (element.hasValue()) {
31042        composeType("value", element.getValue());
31043      }      if (element.hasDataAbsentReason()) {
31044        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
31045      }
31046      if (element.hasInterpretation()) {
31047        composeCodeableConcept("interpretation", element.getInterpretation());
31048      }
31049      if (element.hasCommentElement()) {
31050        composeString("comment", element.getCommentElement());
31051      }
31052      if (element.hasBodySite()) {
31053        composeCodeableConcept("bodySite", element.getBodySite());
31054      }
31055      if (element.hasMethod()) {
31056        composeCodeableConcept("method", element.getMethod());
31057      }
31058      if (element.hasSpecimen()) {
31059        composeReference("specimen", element.getSpecimen());
31060      }
31061      if (element.hasDevice()) {
31062        composeReference("device", element.getDevice());
31063      }
31064      if (element.hasReferenceRange()) { 
31065        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
31066          composeObservationObservationReferenceRangeComponent("referenceRange", e);
31067      }
31068      if (element.hasRelated()) { 
31069        for (Observation.ObservationRelatedComponent e : element.getRelated()) 
31070          composeObservationObservationRelatedComponent("related", e);
31071      }
31072      if (element.hasComponent()) { 
31073        for (Observation.ObservationComponentComponent e : element.getComponent()) 
31074          composeObservationObservationComponentComponent("component", e);
31075      }
31076  }
31077
31078  protected void composeObservationObservationReferenceRangeComponent(String name, Observation.ObservationReferenceRangeComponent element) throws IOException {
31079    if (element != null) {
31080      composeElementAttributes(element);
31081      xml.enter(FHIR_NS, name);
31082      composeObservationObservationReferenceRangeComponentElements(element);
31083      composeElementClose(element);
31084      xml.exit(FHIR_NS, name);
31085    }
31086  }
31087
31088  protected void composeObservationObservationReferenceRangeComponentElements(Observation.ObservationReferenceRangeComponent element) throws IOException {
31089      composeBackboneElements(element);
31090      if (element.hasLow()) {
31091        composeSimpleQuantity("low", element.getLow());
31092      }
31093      if (element.hasHigh()) {
31094        composeSimpleQuantity("high", element.getHigh());
31095      }
31096      if (element.hasType()) {
31097        composeCodeableConcept("type", element.getType());
31098      }
31099      if (element.hasAppliesTo()) { 
31100        for (CodeableConcept e : element.getAppliesTo()) 
31101          composeCodeableConcept("appliesTo", e);
31102      }
31103      if (element.hasAge()) {
31104        composeRange("age", element.getAge());
31105      }
31106      if (element.hasTextElement()) {
31107        composeString("text", element.getTextElement());
31108      }
31109  }
31110
31111  protected void composeObservationObservationRelatedComponent(String name, Observation.ObservationRelatedComponent element) throws IOException {
31112    if (element != null) {
31113      composeElementAttributes(element);
31114      xml.enter(FHIR_NS, name);
31115      composeObservationObservationRelatedComponentElements(element);
31116      composeElementClose(element);
31117      xml.exit(FHIR_NS, name);
31118    }
31119  }
31120
31121  protected void composeObservationObservationRelatedComponentElements(Observation.ObservationRelatedComponent element) throws IOException {
31122      composeBackboneElements(element);
31123      if (element.hasTypeElement())
31124        composeEnumeration("type", element.getTypeElement(), new Observation.ObservationRelationshipTypeEnumFactory());
31125      if (element.hasTarget()) {
31126        composeReference("target", element.getTarget());
31127      }
31128  }
31129
31130  protected void composeObservationObservationComponentComponent(String name, Observation.ObservationComponentComponent element) throws IOException {
31131    if (element != null) {
31132      composeElementAttributes(element);
31133      xml.enter(FHIR_NS, name);
31134      composeObservationObservationComponentComponentElements(element);
31135      composeElementClose(element);
31136      xml.exit(FHIR_NS, name);
31137    }
31138  }
31139
31140  protected void composeObservationObservationComponentComponentElements(Observation.ObservationComponentComponent element) throws IOException {
31141      composeBackboneElements(element);
31142      if (element.hasCode()) {
31143        composeCodeableConcept("code", element.getCode());
31144      }
31145      if (element.hasValue()) {
31146        composeType("value", element.getValue());
31147      }      if (element.hasDataAbsentReason()) {
31148        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
31149      }
31150      if (element.hasInterpretation()) {
31151        composeCodeableConcept("interpretation", element.getInterpretation());
31152      }
31153      if (element.hasReferenceRange()) { 
31154        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
31155          composeObservationObservationReferenceRangeComponent("referenceRange", e);
31156      }
31157  }
31158
31159  protected void composeOperationDefinition(String name, OperationDefinition element) throws IOException {
31160    if (element != null) {
31161      composeDomainResourceAttributes(element);
31162      xml.enter(FHIR_NS, name);
31163      composeOperationDefinitionElements(element);
31164      composeElementClose(element);
31165      xml.exit(FHIR_NS, name);
31166    }
31167  }
31168
31169  protected void composeOperationDefinitionElements(OperationDefinition element) throws IOException {
31170      composeDomainResourceElements(element);
31171      if (element.hasUrlElement()) {
31172        composeUri("url", element.getUrlElement());
31173      }
31174      if (element.hasVersionElement()) {
31175        composeString("version", element.getVersionElement());
31176      }
31177      if (element.hasNameElement()) {
31178        composeString("name", element.getNameElement());
31179      }
31180      if (element.hasStatusElement())
31181        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
31182      if (element.hasKindElement())
31183        composeEnumeration("kind", element.getKindElement(), new OperationDefinition.OperationKindEnumFactory());
31184      if (element.hasExperimentalElement()) {
31185        composeBoolean("experimental", element.getExperimentalElement());
31186      }
31187      if (element.hasDateElement()) {
31188        composeDateTime("date", element.getDateElement());
31189      }
31190      if (element.hasPublisherElement()) {
31191        composeString("publisher", element.getPublisherElement());
31192      }
31193      if (element.hasContact()) { 
31194        for (ContactDetail e : element.getContact()) 
31195          composeContactDetail("contact", e);
31196      }
31197      if (element.hasDescriptionElement()) {
31198        composeMarkdown("description", element.getDescriptionElement());
31199      }
31200      if (element.hasUseContext()) { 
31201        for (UsageContext e : element.getUseContext()) 
31202          composeUsageContext("useContext", e);
31203      }
31204      if (element.hasJurisdiction()) { 
31205        for (CodeableConcept e : element.getJurisdiction()) 
31206          composeCodeableConcept("jurisdiction", e);
31207      }
31208      if (element.hasPurposeElement()) {
31209        composeMarkdown("purpose", element.getPurposeElement());
31210      }
31211      if (element.hasIdempotentElement()) {
31212        composeBoolean("idempotent", element.getIdempotentElement());
31213      }
31214      if (element.hasCodeElement()) {
31215        composeCode("code", element.getCodeElement());
31216      }
31217      if (element.hasCommentElement()) {
31218        composeString("comment", element.getCommentElement());
31219      }
31220      if (element.hasBase()) {
31221        composeReference("base", element.getBase());
31222      }
31223      if (element.hasResource()) { 
31224        for (CodeType e : element.getResource()) 
31225          composeCode("resource", e);
31226      }
31227      if (element.hasSystemElement()) {
31228        composeBoolean("system", element.getSystemElement());
31229      }
31230      if (element.hasTypeElement()) {
31231        composeBoolean("type", element.getTypeElement());
31232      }
31233      if (element.hasInstanceElement()) {
31234        composeBoolean("instance", element.getInstanceElement());
31235      }
31236      if (element.hasParameter()) { 
31237        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getParameter()) 
31238          composeOperationDefinitionOperationDefinitionParameterComponent("parameter", e);
31239      }
31240      if (element.hasOverload()) { 
31241        for (OperationDefinition.OperationDefinitionOverloadComponent e : element.getOverload()) 
31242          composeOperationDefinitionOperationDefinitionOverloadComponent("overload", e);
31243      }
31244  }
31245
31246  protected void composeOperationDefinitionOperationDefinitionParameterComponent(String name, OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
31247    if (element != null) {
31248      composeElementAttributes(element);
31249      xml.enter(FHIR_NS, name);
31250      composeOperationDefinitionOperationDefinitionParameterComponentElements(element);
31251      composeElementClose(element);
31252      xml.exit(FHIR_NS, name);
31253    }
31254  }
31255
31256  protected void composeOperationDefinitionOperationDefinitionParameterComponentElements(OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
31257      composeBackboneElements(element);
31258      if (element.hasNameElement()) {
31259        composeCode("name", element.getNameElement());
31260      }
31261      if (element.hasUseElement())
31262        composeEnumeration("use", element.getUseElement(), new OperationDefinition.OperationParameterUseEnumFactory());
31263      if (element.hasMinElement()) {
31264        composeInteger("min", element.getMinElement());
31265      }
31266      if (element.hasMaxElement()) {
31267        composeString("max", element.getMaxElement());
31268      }
31269      if (element.hasDocumentationElement()) {
31270        composeString("documentation", element.getDocumentationElement());
31271      }
31272      if (element.hasTypeElement()) {
31273        composeCode("type", element.getTypeElement());
31274      }
31275      if (element.hasSearchTypeElement())
31276        composeEnumeration("searchType", element.getSearchTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
31277      if (element.hasProfile()) {
31278        composeReference("profile", element.getProfile());
31279      }
31280      if (element.hasBinding()) {
31281        composeOperationDefinitionOperationDefinitionParameterBindingComponent("binding", element.getBinding());
31282      }
31283      if (element.hasPart()) { 
31284        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getPart()) 
31285          composeOperationDefinitionOperationDefinitionParameterComponent("part", e);
31286      }
31287  }
31288
31289  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponent(String name, OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
31290    if (element != null) {
31291      composeElementAttributes(element);
31292      xml.enter(FHIR_NS, name);
31293      composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(element);
31294      composeElementClose(element);
31295      xml.exit(FHIR_NS, name);
31296    }
31297  }
31298
31299  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
31300      composeBackboneElements(element);
31301      if (element.hasStrengthElement())
31302        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
31303      if (element.hasValueSet()) {
31304        composeType("valueSet", element.getValueSet());
31305      }  }
31306
31307  protected void composeOperationDefinitionOperationDefinitionOverloadComponent(String name, OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
31308    if (element != null) {
31309      composeElementAttributes(element);
31310      xml.enter(FHIR_NS, name);
31311      composeOperationDefinitionOperationDefinitionOverloadComponentElements(element);
31312      composeElementClose(element);
31313      xml.exit(FHIR_NS, name);
31314    }
31315  }
31316
31317  protected void composeOperationDefinitionOperationDefinitionOverloadComponentElements(OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
31318      composeBackboneElements(element);
31319      if (element.hasParameterName()) { 
31320        for (StringType e : element.getParameterName()) 
31321          composeString("parameterName", e);
31322      }
31323      if (element.hasCommentElement()) {
31324        composeString("comment", element.getCommentElement());
31325      }
31326  }
31327
31328  protected void composeOperationOutcome(String name, OperationOutcome element) throws IOException {
31329    if (element != null) {
31330      composeDomainResourceAttributes(element);
31331      xml.enter(FHIR_NS, name);
31332      composeOperationOutcomeElements(element);
31333      composeElementClose(element);
31334      xml.exit(FHIR_NS, name);
31335    }
31336  }
31337
31338  protected void composeOperationOutcomeElements(OperationOutcome element) throws IOException {
31339      composeDomainResourceElements(element);
31340      if (element.hasIssue()) { 
31341        for (OperationOutcome.OperationOutcomeIssueComponent e : element.getIssue()) 
31342          composeOperationOutcomeOperationOutcomeIssueComponent("issue", e);
31343      }
31344  }
31345
31346  protected void composeOperationOutcomeOperationOutcomeIssueComponent(String name, OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
31347    if (element != null) {
31348      composeElementAttributes(element);
31349      xml.enter(FHIR_NS, name);
31350      composeOperationOutcomeOperationOutcomeIssueComponentElements(element);
31351      composeElementClose(element);
31352      xml.exit(FHIR_NS, name);
31353    }
31354  }
31355
31356  protected void composeOperationOutcomeOperationOutcomeIssueComponentElements(OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
31357      composeBackboneElements(element);
31358      if (element.hasSeverityElement())
31359        composeEnumeration("severity", element.getSeverityElement(), new OperationOutcome.IssueSeverityEnumFactory());
31360      if (element.hasCodeElement())
31361        composeEnumeration("code", element.getCodeElement(), new OperationOutcome.IssueTypeEnumFactory());
31362      if (element.hasDetails()) {
31363        composeCodeableConcept("details", element.getDetails());
31364      }
31365      if (element.hasDiagnosticsElement()) {
31366        composeString("diagnostics", element.getDiagnosticsElement());
31367      }
31368      if (element.hasLocation()) { 
31369        for (StringType e : element.getLocation()) 
31370          composeString("location", e);
31371      }
31372      if (element.hasExpression()) { 
31373        for (StringType e : element.getExpression()) 
31374          composeString("expression", e);
31375      }
31376  }
31377
31378  protected void composeOrganization(String name, Organization element) throws IOException {
31379    if (element != null) {
31380      composeDomainResourceAttributes(element);
31381      xml.enter(FHIR_NS, name);
31382      composeOrganizationElements(element);
31383      composeElementClose(element);
31384      xml.exit(FHIR_NS, name);
31385    }
31386  }
31387
31388  protected void composeOrganizationElements(Organization element) throws IOException {
31389      composeDomainResourceElements(element);
31390      if (element.hasIdentifier()) { 
31391        for (Identifier e : element.getIdentifier()) 
31392          composeIdentifier("identifier", e);
31393      }
31394      if (element.hasActiveElement()) {
31395        composeBoolean("active", element.getActiveElement());
31396      }
31397      if (element.hasType()) { 
31398        for (CodeableConcept e : element.getType()) 
31399          composeCodeableConcept("type", e);
31400      }
31401      if (element.hasNameElement()) {
31402        composeString("name", element.getNameElement());
31403      }
31404      if (element.hasAlias()) { 
31405        for (StringType e : element.getAlias()) 
31406          composeString("alias", e);
31407      }
31408      if (element.hasTelecom()) { 
31409        for (ContactPoint e : element.getTelecom()) 
31410          composeContactPoint("telecom", e);
31411      }
31412      if (element.hasAddress()) { 
31413        for (Address e : element.getAddress()) 
31414          composeAddress("address", e);
31415      }
31416      if (element.hasPartOf()) {
31417        composeReference("partOf", element.getPartOf());
31418      }
31419      if (element.hasContact()) { 
31420        for (Organization.OrganizationContactComponent e : element.getContact()) 
31421          composeOrganizationOrganizationContactComponent("contact", e);
31422      }
31423      if (element.hasEndpoint()) { 
31424        for (Reference e : element.getEndpoint()) 
31425          composeReference("endpoint", e);
31426      }
31427  }
31428
31429  protected void composeOrganizationOrganizationContactComponent(String name, Organization.OrganizationContactComponent element) throws IOException {
31430    if (element != null) {
31431      composeElementAttributes(element);
31432      xml.enter(FHIR_NS, name);
31433      composeOrganizationOrganizationContactComponentElements(element);
31434      composeElementClose(element);
31435      xml.exit(FHIR_NS, name);
31436    }
31437  }
31438
31439  protected void composeOrganizationOrganizationContactComponentElements(Organization.OrganizationContactComponent element) throws IOException {
31440      composeBackboneElements(element);
31441      if (element.hasPurpose()) {
31442        composeCodeableConcept("purpose", element.getPurpose());
31443      }
31444      if (element.hasName()) {
31445        composeHumanName("name", element.getName());
31446      }
31447      if (element.hasTelecom()) { 
31448        for (ContactPoint e : element.getTelecom()) 
31449          composeContactPoint("telecom", e);
31450      }
31451      if (element.hasAddress()) {
31452        composeAddress("address", element.getAddress());
31453      }
31454  }
31455
31456  protected void composePatient(String name, Patient element) throws IOException {
31457    if (element != null) {
31458      composeDomainResourceAttributes(element);
31459      xml.enter(FHIR_NS, name);
31460      composePatientElements(element);
31461      composeElementClose(element);
31462      xml.exit(FHIR_NS, name);
31463    }
31464  }
31465
31466  protected void composePatientElements(Patient element) throws IOException {
31467      composeDomainResourceElements(element);
31468      if (element.hasIdentifier()) { 
31469        for (Identifier e : element.getIdentifier()) 
31470          composeIdentifier("identifier", e);
31471      }
31472      if (element.hasActiveElement()) {
31473        composeBoolean("active", element.getActiveElement());
31474      }
31475      if (element.hasName()) { 
31476        for (HumanName e : element.getName()) 
31477          composeHumanName("name", e);
31478      }
31479      if (element.hasTelecom()) { 
31480        for (ContactPoint e : element.getTelecom()) 
31481          composeContactPoint("telecom", e);
31482      }
31483      if (element.hasGenderElement())
31484        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
31485      if (element.hasBirthDateElement()) {
31486        composeDate("birthDate", element.getBirthDateElement());
31487      }
31488      if (element.hasDeceased()) {
31489        composeType("deceased", element.getDeceased());
31490      }      if (element.hasAddress()) { 
31491        for (Address e : element.getAddress()) 
31492          composeAddress("address", e);
31493      }
31494      if (element.hasMaritalStatus()) {
31495        composeCodeableConcept("maritalStatus", element.getMaritalStatus());
31496      }
31497      if (element.hasMultipleBirth()) {
31498        composeType("multipleBirth", element.getMultipleBirth());
31499      }      if (element.hasPhoto()) { 
31500        for (Attachment e : element.getPhoto()) 
31501          composeAttachment("photo", e);
31502      }
31503      if (element.hasContact()) { 
31504        for (Patient.ContactComponent e : element.getContact()) 
31505          composePatientContactComponent("contact", e);
31506      }
31507      if (element.hasAnimal()) {
31508        composePatientAnimalComponent("animal", element.getAnimal());
31509      }
31510      if (element.hasCommunication()) { 
31511        for (Patient.PatientCommunicationComponent e : element.getCommunication()) 
31512          composePatientPatientCommunicationComponent("communication", e);
31513      }
31514      if (element.hasGeneralPractitioner()) { 
31515        for (Reference e : element.getGeneralPractitioner()) 
31516          composeReference("generalPractitioner", e);
31517      }
31518      if (element.hasManagingOrganization()) {
31519        composeReference("managingOrganization", element.getManagingOrganization());
31520      }
31521      if (element.hasLink()) { 
31522        for (Patient.PatientLinkComponent e : element.getLink()) 
31523          composePatientPatientLinkComponent("link", e);
31524      }
31525  }
31526
31527  protected void composePatientContactComponent(String name, Patient.ContactComponent element) throws IOException {
31528    if (element != null) {
31529      composeElementAttributes(element);
31530      xml.enter(FHIR_NS, name);
31531      composePatientContactComponentElements(element);
31532      composeElementClose(element);
31533      xml.exit(FHIR_NS, name);
31534    }
31535  }
31536
31537  protected void composePatientContactComponentElements(Patient.ContactComponent element) throws IOException {
31538      composeBackboneElements(element);
31539      if (element.hasRelationship()) { 
31540        for (CodeableConcept e : element.getRelationship()) 
31541          composeCodeableConcept("relationship", e);
31542      }
31543      if (element.hasName()) {
31544        composeHumanName("name", element.getName());
31545      }
31546      if (element.hasTelecom()) { 
31547        for (ContactPoint e : element.getTelecom()) 
31548          composeContactPoint("telecom", e);
31549      }
31550      if (element.hasAddress()) {
31551        composeAddress("address", element.getAddress());
31552      }
31553      if (element.hasGenderElement())
31554        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
31555      if (element.hasOrganization()) {
31556        composeReference("organization", element.getOrganization());
31557      }
31558      if (element.hasPeriod()) {
31559        composePeriod("period", element.getPeriod());
31560      }
31561  }
31562
31563  protected void composePatientAnimalComponent(String name, Patient.AnimalComponent element) throws IOException {
31564    if (element != null) {
31565      composeElementAttributes(element);
31566      xml.enter(FHIR_NS, name);
31567      composePatientAnimalComponentElements(element);
31568      composeElementClose(element);
31569      xml.exit(FHIR_NS, name);
31570    }
31571  }
31572
31573  protected void composePatientAnimalComponentElements(Patient.AnimalComponent element) throws IOException {
31574      composeBackboneElements(element);
31575      if (element.hasSpecies()) {
31576        composeCodeableConcept("species", element.getSpecies());
31577      }
31578      if (element.hasBreed()) {
31579        composeCodeableConcept("breed", element.getBreed());
31580      }
31581      if (element.hasGenderStatus()) {
31582        composeCodeableConcept("genderStatus", element.getGenderStatus());
31583      }
31584  }
31585
31586  protected void composePatientPatientCommunicationComponent(String name, Patient.PatientCommunicationComponent element) throws IOException {
31587    if (element != null) {
31588      composeElementAttributes(element);
31589      xml.enter(FHIR_NS, name);
31590      composePatientPatientCommunicationComponentElements(element);
31591      composeElementClose(element);
31592      xml.exit(FHIR_NS, name);
31593    }
31594  }
31595
31596  protected void composePatientPatientCommunicationComponentElements(Patient.PatientCommunicationComponent element) throws IOException {
31597      composeBackboneElements(element);
31598      if (element.hasLanguage()) {
31599        composeCodeableConcept("language", element.getLanguage());
31600      }
31601      if (element.hasPreferredElement()) {
31602        composeBoolean("preferred", element.getPreferredElement());
31603      }
31604  }
31605
31606  protected void composePatientPatientLinkComponent(String name, Patient.PatientLinkComponent element) throws IOException {
31607    if (element != null) {
31608      composeElementAttributes(element);
31609      xml.enter(FHIR_NS, name);
31610      composePatientPatientLinkComponentElements(element);
31611      composeElementClose(element);
31612      xml.exit(FHIR_NS, name);
31613    }
31614  }
31615
31616  protected void composePatientPatientLinkComponentElements(Patient.PatientLinkComponent element) throws IOException {
31617      composeBackboneElements(element);
31618      if (element.hasOther()) {
31619        composeReference("other", element.getOther());
31620      }
31621      if (element.hasTypeElement())
31622        composeEnumeration("type", element.getTypeElement(), new Patient.LinkTypeEnumFactory());
31623  }
31624
31625  protected void composePaymentNotice(String name, PaymentNotice element) throws IOException {
31626    if (element != null) {
31627      composeDomainResourceAttributes(element);
31628      xml.enter(FHIR_NS, name);
31629      composePaymentNoticeElements(element);
31630      composeElementClose(element);
31631      xml.exit(FHIR_NS, name);
31632    }
31633  }
31634
31635  protected void composePaymentNoticeElements(PaymentNotice element) throws IOException {
31636      composeDomainResourceElements(element);
31637      if (element.hasIdentifier()) { 
31638        for (Identifier e : element.getIdentifier()) 
31639          composeIdentifier("identifier", e);
31640      }
31641      if (element.hasStatusElement())
31642        composeEnumeration("status", element.getStatusElement(), new PaymentNotice.PaymentNoticeStatusEnumFactory());
31643      if (element.hasRequest()) {
31644        composeReference("request", element.getRequest());
31645      }
31646      if (element.hasResponse()) {
31647        composeReference("response", element.getResponse());
31648      }
31649      if (element.hasStatusDateElement()) {
31650        composeDate("statusDate", element.getStatusDateElement());
31651      }
31652      if (element.hasCreatedElement()) {
31653        composeDateTime("created", element.getCreatedElement());
31654      }
31655      if (element.hasTarget()) {
31656        composeReference("target", element.getTarget());
31657      }
31658      if (element.hasProvider()) {
31659        composeReference("provider", element.getProvider());
31660      }
31661      if (element.hasOrganization()) {
31662        composeReference("organization", element.getOrganization());
31663      }
31664      if (element.hasPaymentStatus()) {
31665        composeCodeableConcept("paymentStatus", element.getPaymentStatus());
31666      }
31667  }
31668
31669  protected void composePaymentReconciliation(String name, PaymentReconciliation element) throws IOException {
31670    if (element != null) {
31671      composeDomainResourceAttributes(element);
31672      xml.enter(FHIR_NS, name);
31673      composePaymentReconciliationElements(element);
31674      composeElementClose(element);
31675      xml.exit(FHIR_NS, name);
31676    }
31677  }
31678
31679  protected void composePaymentReconciliationElements(PaymentReconciliation element) throws IOException {
31680      composeDomainResourceElements(element);
31681      if (element.hasIdentifier()) { 
31682        for (Identifier e : element.getIdentifier()) 
31683          composeIdentifier("identifier", e);
31684      }
31685      if (element.hasStatusElement())
31686        composeEnumeration("status", element.getStatusElement(), new PaymentReconciliation.PaymentReconciliationStatusEnumFactory());
31687      if (element.hasPeriod()) {
31688        composePeriod("period", element.getPeriod());
31689      }
31690      if (element.hasCreatedElement()) {
31691        composeDateTime("created", element.getCreatedElement());
31692      }
31693      if (element.hasOrganization()) {
31694        composeReference("organization", element.getOrganization());
31695      }
31696      if (element.hasRequest()) {
31697        composeReference("request", element.getRequest());
31698      }
31699      if (element.hasOutcome()) {
31700        composeCodeableConcept("outcome", element.getOutcome());
31701      }
31702      if (element.hasDispositionElement()) {
31703        composeString("disposition", element.getDispositionElement());
31704      }
31705      if (element.hasRequestProvider()) {
31706        composeReference("requestProvider", element.getRequestProvider());
31707      }
31708      if (element.hasRequestOrganization()) {
31709        composeReference("requestOrganization", element.getRequestOrganization());
31710      }
31711      if (element.hasDetail()) { 
31712        for (PaymentReconciliation.DetailsComponent e : element.getDetail()) 
31713          composePaymentReconciliationDetailsComponent("detail", e);
31714      }
31715      if (element.hasForm()) {
31716        composeCodeableConcept("form", element.getForm());
31717      }
31718      if (element.hasTotal()) {
31719        composeMoney("total", element.getTotal());
31720      }
31721      if (element.hasProcessNote()) { 
31722        for (PaymentReconciliation.NotesComponent e : element.getProcessNote()) 
31723          composePaymentReconciliationNotesComponent("processNote", e);
31724      }
31725  }
31726
31727  protected void composePaymentReconciliationDetailsComponent(String name, PaymentReconciliation.DetailsComponent element) throws IOException {
31728    if (element != null) {
31729      composeElementAttributes(element);
31730      xml.enter(FHIR_NS, name);
31731      composePaymentReconciliationDetailsComponentElements(element);
31732      composeElementClose(element);
31733      xml.exit(FHIR_NS, name);
31734    }
31735  }
31736
31737  protected void composePaymentReconciliationDetailsComponentElements(PaymentReconciliation.DetailsComponent element) throws IOException {
31738      composeBackboneElements(element);
31739      if (element.hasType()) {
31740        composeCodeableConcept("type", element.getType());
31741      }
31742      if (element.hasRequest()) {
31743        composeReference("request", element.getRequest());
31744      }
31745      if (element.hasResponse()) {
31746        composeReference("response", element.getResponse());
31747      }
31748      if (element.hasSubmitter()) {
31749        composeReference("submitter", element.getSubmitter());
31750      }
31751      if (element.hasPayee()) {
31752        composeReference("payee", element.getPayee());
31753      }
31754      if (element.hasDateElement()) {
31755        composeDate("date", element.getDateElement());
31756      }
31757      if (element.hasAmount()) {
31758        composeMoney("amount", element.getAmount());
31759      }
31760  }
31761
31762  protected void composePaymentReconciliationNotesComponent(String name, PaymentReconciliation.NotesComponent element) throws IOException {
31763    if (element != null) {
31764      composeElementAttributes(element);
31765      xml.enter(FHIR_NS, name);
31766      composePaymentReconciliationNotesComponentElements(element);
31767      composeElementClose(element);
31768      xml.exit(FHIR_NS, name);
31769    }
31770  }
31771
31772  protected void composePaymentReconciliationNotesComponentElements(PaymentReconciliation.NotesComponent element) throws IOException {
31773      composeBackboneElements(element);
31774      if (element.hasType()) {
31775        composeCodeableConcept("type", element.getType());
31776      }
31777      if (element.hasTextElement()) {
31778        composeString("text", element.getTextElement());
31779      }
31780  }
31781
31782  protected void composePerson(String name, Person element) throws IOException {
31783    if (element != null) {
31784      composeDomainResourceAttributes(element);
31785      xml.enter(FHIR_NS, name);
31786      composePersonElements(element);
31787      composeElementClose(element);
31788      xml.exit(FHIR_NS, name);
31789    }
31790  }
31791
31792  protected void composePersonElements(Person element) throws IOException {
31793      composeDomainResourceElements(element);
31794      if (element.hasIdentifier()) { 
31795        for (Identifier e : element.getIdentifier()) 
31796          composeIdentifier("identifier", e);
31797      }
31798      if (element.hasName()) { 
31799        for (HumanName e : element.getName()) 
31800          composeHumanName("name", e);
31801      }
31802      if (element.hasTelecom()) { 
31803        for (ContactPoint e : element.getTelecom()) 
31804          composeContactPoint("telecom", e);
31805      }
31806      if (element.hasGenderElement())
31807        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
31808      if (element.hasBirthDateElement()) {
31809        composeDate("birthDate", element.getBirthDateElement());
31810      }
31811      if (element.hasAddress()) { 
31812        for (Address e : element.getAddress()) 
31813          composeAddress("address", e);
31814      }
31815      if (element.hasPhoto()) {
31816        composeAttachment("photo", element.getPhoto());
31817      }
31818      if (element.hasManagingOrganization()) {
31819        composeReference("managingOrganization", element.getManagingOrganization());
31820      }
31821      if (element.hasActiveElement()) {
31822        composeBoolean("active", element.getActiveElement());
31823      }
31824      if (element.hasLink()) { 
31825        for (Person.PersonLinkComponent e : element.getLink()) 
31826          composePersonPersonLinkComponent("link", e);
31827      }
31828  }
31829
31830  protected void composePersonPersonLinkComponent(String name, Person.PersonLinkComponent element) throws IOException {
31831    if (element != null) {
31832      composeElementAttributes(element);
31833      xml.enter(FHIR_NS, name);
31834      composePersonPersonLinkComponentElements(element);
31835      composeElementClose(element);
31836      xml.exit(FHIR_NS, name);
31837    }
31838  }
31839
31840  protected void composePersonPersonLinkComponentElements(Person.PersonLinkComponent element) throws IOException {
31841      composeBackboneElements(element);
31842      if (element.hasTarget()) {
31843        composeReference("target", element.getTarget());
31844      }
31845      if (element.hasAssuranceElement())
31846        composeEnumeration("assurance", element.getAssuranceElement(), new Person.IdentityAssuranceLevelEnumFactory());
31847  }
31848
31849  protected void composePlanDefinition(String name, PlanDefinition element) throws IOException {
31850    if (element != null) {
31851      composeDomainResourceAttributes(element);
31852      xml.enter(FHIR_NS, name);
31853      composePlanDefinitionElements(element);
31854      composeElementClose(element);
31855      xml.exit(FHIR_NS, name);
31856    }
31857  }
31858
31859  protected void composePlanDefinitionElements(PlanDefinition element) throws IOException {
31860      composeDomainResourceElements(element);
31861      if (element.hasUrlElement()) {
31862        composeUri("url", element.getUrlElement());
31863      }
31864      if (element.hasIdentifier()) { 
31865        for (Identifier e : element.getIdentifier()) 
31866          composeIdentifier("identifier", e);
31867      }
31868      if (element.hasVersionElement()) {
31869        composeString("version", element.getVersionElement());
31870      }
31871      if (element.hasNameElement()) {
31872        composeString("name", element.getNameElement());
31873      }
31874      if (element.hasTitleElement()) {
31875        composeString("title", element.getTitleElement());
31876      }
31877      if (element.hasType()) {
31878        composeCodeableConcept("type", element.getType());
31879      }
31880      if (element.hasStatusElement())
31881        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
31882      if (element.hasExperimentalElement()) {
31883        composeBoolean("experimental", element.getExperimentalElement());
31884      }
31885      if (element.hasDateElement()) {
31886        composeDateTime("date", element.getDateElement());
31887      }
31888      if (element.hasPublisherElement()) {
31889        composeString("publisher", element.getPublisherElement());
31890      }
31891      if (element.hasDescriptionElement()) {
31892        composeMarkdown("description", element.getDescriptionElement());
31893      }
31894      if (element.hasPurposeElement()) {
31895        composeMarkdown("purpose", element.getPurposeElement());
31896      }
31897      if (element.hasUsageElement()) {
31898        composeString("usage", element.getUsageElement());
31899      }
31900      if (element.hasApprovalDateElement()) {
31901        composeDate("approvalDate", element.getApprovalDateElement());
31902      }
31903      if (element.hasLastReviewDateElement()) {
31904        composeDate("lastReviewDate", element.getLastReviewDateElement());
31905      }
31906      if (element.hasEffectivePeriod()) {
31907        composePeriod("effectivePeriod", element.getEffectivePeriod());
31908      }
31909      if (element.hasUseContext()) { 
31910        for (UsageContext e : element.getUseContext()) 
31911          composeUsageContext("useContext", e);
31912      }
31913      if (element.hasJurisdiction()) { 
31914        for (CodeableConcept e : element.getJurisdiction()) 
31915          composeCodeableConcept("jurisdiction", e);
31916      }
31917      if (element.hasTopic()) { 
31918        for (CodeableConcept e : element.getTopic()) 
31919          composeCodeableConcept("topic", e);
31920      }
31921      if (element.hasContributor()) { 
31922        for (Contributor e : element.getContributor()) 
31923          composeContributor("contributor", e);
31924      }
31925      if (element.hasContact()) { 
31926        for (ContactDetail e : element.getContact()) 
31927          composeContactDetail("contact", e);
31928      }
31929      if (element.hasCopyrightElement()) {
31930        composeMarkdown("copyright", element.getCopyrightElement());
31931      }
31932      if (element.hasRelatedArtifact()) { 
31933        for (RelatedArtifact e : element.getRelatedArtifact()) 
31934          composeRelatedArtifact("relatedArtifact", e);
31935      }
31936      if (element.hasLibrary()) { 
31937        for (Reference e : element.getLibrary()) 
31938          composeReference("library", e);
31939      }
31940      if (element.hasGoal()) { 
31941        for (PlanDefinition.PlanDefinitionGoalComponent e : element.getGoal()) 
31942          composePlanDefinitionPlanDefinitionGoalComponent("goal", e);
31943      }
31944      if (element.hasAction()) { 
31945        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
31946          composePlanDefinitionPlanDefinitionActionComponent("action", e);
31947      }
31948  }
31949
31950  protected void composePlanDefinitionPlanDefinitionGoalComponent(String name, PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
31951    if (element != null) {
31952      composeElementAttributes(element);
31953      xml.enter(FHIR_NS, name);
31954      composePlanDefinitionPlanDefinitionGoalComponentElements(element);
31955      composeElementClose(element);
31956      xml.exit(FHIR_NS, name);
31957    }
31958  }
31959
31960  protected void composePlanDefinitionPlanDefinitionGoalComponentElements(PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
31961      composeBackboneElements(element);
31962      if (element.hasCategory()) {
31963        composeCodeableConcept("category", element.getCategory());
31964      }
31965      if (element.hasDescription()) {
31966        composeCodeableConcept("description", element.getDescription());
31967      }
31968      if (element.hasPriority()) {
31969        composeCodeableConcept("priority", element.getPriority());
31970      }
31971      if (element.hasStart()) {
31972        composeCodeableConcept("start", element.getStart());
31973      }
31974      if (element.hasAddresses()) { 
31975        for (CodeableConcept e : element.getAddresses()) 
31976          composeCodeableConcept("addresses", e);
31977      }
31978      if (element.hasDocumentation()) { 
31979        for (RelatedArtifact e : element.getDocumentation()) 
31980          composeRelatedArtifact("documentation", e);
31981      }
31982      if (element.hasTarget()) { 
31983        for (PlanDefinition.PlanDefinitionGoalTargetComponent e : element.getTarget()) 
31984          composePlanDefinitionPlanDefinitionGoalTargetComponent("target", e);
31985      }
31986  }
31987
31988  protected void composePlanDefinitionPlanDefinitionGoalTargetComponent(String name, PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
31989    if (element != null) {
31990      composeElementAttributes(element);
31991      xml.enter(FHIR_NS, name);
31992      composePlanDefinitionPlanDefinitionGoalTargetComponentElements(element);
31993      composeElementClose(element);
31994      xml.exit(FHIR_NS, name);
31995    }
31996  }
31997
31998  protected void composePlanDefinitionPlanDefinitionGoalTargetComponentElements(PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
31999      composeBackboneElements(element);
32000      if (element.hasMeasure()) {
32001        composeCodeableConcept("measure", element.getMeasure());
32002      }
32003      if (element.hasDetail()) {
32004        composeType("detail", element.getDetail());
32005      }      if (element.hasDue()) {
32006        composeDuration("due", element.getDue());
32007      }
32008  }
32009
32010  protected void composePlanDefinitionPlanDefinitionActionComponent(String name, PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
32011    if (element != null) {
32012      composeElementAttributes(element);
32013      xml.enter(FHIR_NS, name);
32014      composePlanDefinitionPlanDefinitionActionComponentElements(element);
32015      composeElementClose(element);
32016      xml.exit(FHIR_NS, name);
32017    }
32018  }
32019
32020  protected void composePlanDefinitionPlanDefinitionActionComponentElements(PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
32021      composeBackboneElements(element);
32022      if (element.hasLabelElement()) {
32023        composeString("label", element.getLabelElement());
32024      }
32025      if (element.hasTitleElement()) {
32026        composeString("title", element.getTitleElement());
32027      }
32028      if (element.hasDescriptionElement()) {
32029        composeString("description", element.getDescriptionElement());
32030      }
32031      if (element.hasTextEquivalentElement()) {
32032        composeString("textEquivalent", element.getTextEquivalentElement());
32033      }
32034      if (element.hasCode()) { 
32035        for (CodeableConcept e : element.getCode()) 
32036          composeCodeableConcept("code", e);
32037      }
32038      if (element.hasReason()) { 
32039        for (CodeableConcept e : element.getReason()) 
32040          composeCodeableConcept("reason", e);
32041      }
32042      if (element.hasDocumentation()) { 
32043        for (RelatedArtifact e : element.getDocumentation()) 
32044          composeRelatedArtifact("documentation", e);
32045      }
32046      if (element.hasGoalId()) { 
32047        for (IdType e : element.getGoalId()) 
32048          composeId("goalId", e);
32049      }
32050      if (element.hasTriggerDefinition()) { 
32051        for (TriggerDefinition e : element.getTriggerDefinition()) 
32052          composeTriggerDefinition("triggerDefinition", e);
32053      }
32054      if (element.hasCondition()) { 
32055        for (PlanDefinition.PlanDefinitionActionConditionComponent e : element.getCondition()) 
32056          composePlanDefinitionPlanDefinitionActionConditionComponent("condition", e);
32057      }
32058      if (element.hasInput()) { 
32059        for (DataRequirement e : element.getInput()) 
32060          composeDataRequirement("input", e);
32061      }
32062      if (element.hasOutput()) { 
32063        for (DataRequirement e : element.getOutput()) 
32064          composeDataRequirement("output", e);
32065      }
32066      if (element.hasRelatedAction()) { 
32067        for (PlanDefinition.PlanDefinitionActionRelatedActionComponent e : element.getRelatedAction()) 
32068          composePlanDefinitionPlanDefinitionActionRelatedActionComponent("relatedAction", e);
32069      }
32070      if (element.hasTiming()) {
32071        composeType("timing", element.getTiming());
32072      }      if (element.hasParticipant()) { 
32073        for (PlanDefinition.PlanDefinitionActionParticipantComponent e : element.getParticipant()) 
32074          composePlanDefinitionPlanDefinitionActionParticipantComponent("participant", e);
32075      }
32076      if (element.hasType()) {
32077        composeCoding("type", element.getType());
32078      }
32079      if (element.hasGroupingBehaviorElement())
32080        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new PlanDefinition.ActionGroupingBehaviorEnumFactory());
32081      if (element.hasSelectionBehaviorElement())
32082        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new PlanDefinition.ActionSelectionBehaviorEnumFactory());
32083      if (element.hasRequiredBehaviorElement())
32084        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new PlanDefinition.ActionRequiredBehaviorEnumFactory());
32085      if (element.hasPrecheckBehaviorElement())
32086        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new PlanDefinition.ActionPrecheckBehaviorEnumFactory());
32087      if (element.hasCardinalityBehaviorElement())
32088        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new PlanDefinition.ActionCardinalityBehaviorEnumFactory());
32089      if (element.hasDefinition()) {
32090        composeReference("definition", element.getDefinition());
32091      }
32092      if (element.hasTransform()) {
32093        composeReference("transform", element.getTransform());
32094      }
32095      if (element.hasDynamicValue()) { 
32096        for (PlanDefinition.PlanDefinitionActionDynamicValueComponent e : element.getDynamicValue()) 
32097          composePlanDefinitionPlanDefinitionActionDynamicValueComponent("dynamicValue", e);
32098      }
32099      if (element.hasAction()) { 
32100        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
32101          composePlanDefinitionPlanDefinitionActionComponent("action", e);
32102      }
32103  }
32104
32105  protected void composePlanDefinitionPlanDefinitionActionConditionComponent(String name, PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
32106    if (element != null) {
32107      composeElementAttributes(element);
32108      xml.enter(FHIR_NS, name);
32109      composePlanDefinitionPlanDefinitionActionConditionComponentElements(element);
32110      composeElementClose(element);
32111      xml.exit(FHIR_NS, name);
32112    }
32113  }
32114
32115  protected void composePlanDefinitionPlanDefinitionActionConditionComponentElements(PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
32116      composeBackboneElements(element);
32117      if (element.hasKindElement())
32118        composeEnumeration("kind", element.getKindElement(), new PlanDefinition.ActionConditionKindEnumFactory());
32119      if (element.hasDescriptionElement()) {
32120        composeString("description", element.getDescriptionElement());
32121      }
32122      if (element.hasLanguageElement()) {
32123        composeString("language", element.getLanguageElement());
32124      }
32125      if (element.hasExpressionElement()) {
32126        composeString("expression", element.getExpressionElement());
32127      }
32128  }
32129
32130  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponent(String name, PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
32131    if (element != null) {
32132      composeElementAttributes(element);
32133      xml.enter(FHIR_NS, name);
32134      composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(element);
32135      composeElementClose(element);
32136      xml.exit(FHIR_NS, name);
32137    }
32138  }
32139
32140  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
32141      composeBackboneElements(element);
32142      if (element.hasActionIdElement()) {
32143        composeId("actionId", element.getActionIdElement());
32144      }
32145      if (element.hasRelationshipElement())
32146        composeEnumeration("relationship", element.getRelationshipElement(), new PlanDefinition.ActionRelationshipTypeEnumFactory());
32147      if (element.hasOffset()) {
32148        composeType("offset", element.getOffset());
32149      }  }
32150
32151  protected void composePlanDefinitionPlanDefinitionActionParticipantComponent(String name, PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
32152    if (element != null) {
32153      composeElementAttributes(element);
32154      xml.enter(FHIR_NS, name);
32155      composePlanDefinitionPlanDefinitionActionParticipantComponentElements(element);
32156      composeElementClose(element);
32157      xml.exit(FHIR_NS, name);
32158    }
32159  }
32160
32161  protected void composePlanDefinitionPlanDefinitionActionParticipantComponentElements(PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
32162      composeBackboneElements(element);
32163      if (element.hasTypeElement())
32164        composeEnumeration("type", element.getTypeElement(), new PlanDefinition.ActionParticipantTypeEnumFactory());
32165      if (element.hasRole()) {
32166        composeCodeableConcept("role", element.getRole());
32167      }
32168  }
32169
32170  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponent(String name, PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
32171    if (element != null) {
32172      composeElementAttributes(element);
32173      xml.enter(FHIR_NS, name);
32174      composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(element);
32175      composeElementClose(element);
32176      xml.exit(FHIR_NS, name);
32177    }
32178  }
32179
32180  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
32181      composeBackboneElements(element);
32182      if (element.hasDescriptionElement()) {
32183        composeString("description", element.getDescriptionElement());
32184      }
32185      if (element.hasPathElement()) {
32186        composeString("path", element.getPathElement());
32187      }
32188      if (element.hasLanguageElement()) {
32189        composeString("language", element.getLanguageElement());
32190      }
32191      if (element.hasExpressionElement()) {
32192        composeString("expression", element.getExpressionElement());
32193      }
32194  }
32195
32196  protected void composePractitioner(String name, Practitioner element) throws IOException {
32197    if (element != null) {
32198      composeDomainResourceAttributes(element);
32199      xml.enter(FHIR_NS, name);
32200      composePractitionerElements(element);
32201      composeElementClose(element);
32202      xml.exit(FHIR_NS, name);
32203    }
32204  }
32205
32206  protected void composePractitionerElements(Practitioner element) throws IOException {
32207      composeDomainResourceElements(element);
32208      if (element.hasIdentifier()) { 
32209        for (Identifier e : element.getIdentifier()) 
32210          composeIdentifier("identifier", e);
32211      }
32212      if (element.hasActiveElement()) {
32213        composeBoolean("active", element.getActiveElement());
32214      }
32215      if (element.hasName()) { 
32216        for (HumanName e : element.getName()) 
32217          composeHumanName("name", e);
32218      }
32219      if (element.hasTelecom()) { 
32220        for (ContactPoint e : element.getTelecom()) 
32221          composeContactPoint("telecom", e);
32222      }
32223      if (element.hasAddress()) { 
32224        for (Address e : element.getAddress()) 
32225          composeAddress("address", e);
32226      }
32227      if (element.hasGenderElement())
32228        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
32229      if (element.hasBirthDateElement()) {
32230        composeDate("birthDate", element.getBirthDateElement());
32231      }
32232      if (element.hasPhoto()) { 
32233        for (Attachment e : element.getPhoto()) 
32234          composeAttachment("photo", e);
32235      }
32236      if (element.hasQualification()) { 
32237        for (Practitioner.PractitionerQualificationComponent e : element.getQualification()) 
32238          composePractitionerPractitionerQualificationComponent("qualification", e);
32239      }
32240      if (element.hasCommunication()) { 
32241        for (CodeableConcept e : element.getCommunication()) 
32242          composeCodeableConcept("communication", e);
32243      }
32244  }
32245
32246  protected void composePractitionerPractitionerQualificationComponent(String name, Practitioner.PractitionerQualificationComponent element) throws IOException {
32247    if (element != null) {
32248      composeElementAttributes(element);
32249      xml.enter(FHIR_NS, name);
32250      composePractitionerPractitionerQualificationComponentElements(element);
32251      composeElementClose(element);
32252      xml.exit(FHIR_NS, name);
32253    }
32254  }
32255
32256  protected void composePractitionerPractitionerQualificationComponentElements(Practitioner.PractitionerQualificationComponent element) throws IOException {
32257      composeBackboneElements(element);
32258      if (element.hasIdentifier()) { 
32259        for (Identifier e : element.getIdentifier()) 
32260          composeIdentifier("identifier", e);
32261      }
32262      if (element.hasCode()) {
32263        composeCodeableConcept("code", element.getCode());
32264      }
32265      if (element.hasPeriod()) {
32266        composePeriod("period", element.getPeriod());
32267      }
32268      if (element.hasIssuer()) {
32269        composeReference("issuer", element.getIssuer());
32270      }
32271  }
32272
32273  protected void composePractitionerRole(String name, PractitionerRole element) throws IOException {
32274    if (element != null) {
32275      composeDomainResourceAttributes(element);
32276      xml.enter(FHIR_NS, name);
32277      composePractitionerRoleElements(element);
32278      composeElementClose(element);
32279      xml.exit(FHIR_NS, name);
32280    }
32281  }
32282
32283  protected void composePractitionerRoleElements(PractitionerRole element) throws IOException {
32284      composeDomainResourceElements(element);
32285      if (element.hasIdentifier()) { 
32286        for (Identifier e : element.getIdentifier()) 
32287          composeIdentifier("identifier", e);
32288      }
32289      if (element.hasActiveElement()) {
32290        composeBoolean("active", element.getActiveElement());
32291      }
32292      if (element.hasPeriod()) {
32293        composePeriod("period", element.getPeriod());
32294      }
32295      if (element.hasPractitioner()) {
32296        composeReference("practitioner", element.getPractitioner());
32297      }
32298      if (element.hasOrganization()) {
32299        composeReference("organization", element.getOrganization());
32300      }
32301      if (element.hasCode()) { 
32302        for (CodeableConcept e : element.getCode()) 
32303          composeCodeableConcept("code", e);
32304      }
32305      if (element.hasSpecialty()) { 
32306        for (CodeableConcept e : element.getSpecialty()) 
32307          composeCodeableConcept("specialty", e);
32308      }
32309      if (element.hasLocation()) { 
32310        for (Reference e : element.getLocation()) 
32311          composeReference("location", e);
32312      }
32313      if (element.hasHealthcareService()) { 
32314        for (Reference e : element.getHealthcareService()) 
32315          composeReference("healthcareService", e);
32316      }
32317      if (element.hasTelecom()) { 
32318        for (ContactPoint e : element.getTelecom()) 
32319          composeContactPoint("telecom", e);
32320      }
32321      if (element.hasAvailableTime()) { 
32322        for (PractitionerRole.PractitionerRoleAvailableTimeComponent e : element.getAvailableTime()) 
32323          composePractitionerRolePractitionerRoleAvailableTimeComponent("availableTime", e);
32324      }
32325      if (element.hasNotAvailable()) { 
32326        for (PractitionerRole.PractitionerRoleNotAvailableComponent e : element.getNotAvailable()) 
32327          composePractitionerRolePractitionerRoleNotAvailableComponent("notAvailable", e);
32328      }
32329      if (element.hasAvailabilityExceptionsElement()) {
32330        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
32331      }
32332      if (element.hasEndpoint()) { 
32333        for (Reference e : element.getEndpoint()) 
32334          composeReference("endpoint", e);
32335      }
32336  }
32337
32338  protected void composePractitionerRolePractitionerRoleAvailableTimeComponent(String name, PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
32339    if (element != null) {
32340      composeElementAttributes(element);
32341      xml.enter(FHIR_NS, name);
32342      composePractitionerRolePractitionerRoleAvailableTimeComponentElements(element);
32343      composeElementClose(element);
32344      xml.exit(FHIR_NS, name);
32345    }
32346  }
32347
32348  protected void composePractitionerRolePractitionerRoleAvailableTimeComponentElements(PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
32349      composeBackboneElements(element);
32350        if (element.hasDaysOfWeek()) 
32351          for (Enumeration<PractitionerRole.DaysOfWeek> e : element.getDaysOfWeek()) 
32352            composeEnumeration("daysOfWeek", e, new PractitionerRole.DaysOfWeekEnumFactory());
32353      if (element.hasAllDayElement()) {
32354        composeBoolean("allDay", element.getAllDayElement());
32355      }
32356      if (element.hasAvailableStartTimeElement()) {
32357        composeTime("availableStartTime", element.getAvailableStartTimeElement());
32358      }
32359      if (element.hasAvailableEndTimeElement()) {
32360        composeTime("availableEndTime", element.getAvailableEndTimeElement());
32361      }
32362  }
32363
32364  protected void composePractitionerRolePractitionerRoleNotAvailableComponent(String name, PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
32365    if (element != null) {
32366      composeElementAttributes(element);
32367      xml.enter(FHIR_NS, name);
32368      composePractitionerRolePractitionerRoleNotAvailableComponentElements(element);
32369      composeElementClose(element);
32370      xml.exit(FHIR_NS, name);
32371    }
32372  }
32373
32374  protected void composePractitionerRolePractitionerRoleNotAvailableComponentElements(PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
32375      composeBackboneElements(element);
32376      if (element.hasDescriptionElement()) {
32377        composeString("description", element.getDescriptionElement());
32378      }
32379      if (element.hasDuring()) {
32380        composePeriod("during", element.getDuring());
32381      }
32382  }
32383
32384  protected void composeProcedure(String name, Procedure element) throws IOException {
32385    if (element != null) {
32386      composeDomainResourceAttributes(element);
32387      xml.enter(FHIR_NS, name);
32388      composeProcedureElements(element);
32389      composeElementClose(element);
32390      xml.exit(FHIR_NS, name);
32391    }
32392  }
32393
32394  protected void composeProcedureElements(Procedure element) throws IOException {
32395      composeDomainResourceElements(element);
32396      if (element.hasIdentifier()) { 
32397        for (Identifier e : element.getIdentifier()) 
32398          composeIdentifier("identifier", e);
32399      }
32400      if (element.hasDefinition()) { 
32401        for (Reference e : element.getDefinition()) 
32402          composeReference("definition", e);
32403      }
32404      if (element.hasBasedOn()) { 
32405        for (Reference e : element.getBasedOn()) 
32406          composeReference("basedOn", e);
32407      }
32408      if (element.hasPartOf()) { 
32409        for (Reference e : element.getPartOf()) 
32410          composeReference("partOf", e);
32411      }
32412      if (element.hasStatusElement())
32413        composeEnumeration("status", element.getStatusElement(), new Procedure.ProcedureStatusEnumFactory());
32414      if (element.hasNotDoneElement()) {
32415        composeBoolean("notDone", element.getNotDoneElement());
32416      }
32417      if (element.hasNotDoneReason()) {
32418        composeCodeableConcept("notDoneReason", element.getNotDoneReason());
32419      }
32420      if (element.hasCategory()) {
32421        composeCodeableConcept("category", element.getCategory());
32422      }
32423      if (element.hasCode()) {
32424        composeCodeableConcept("code", element.getCode());
32425      }
32426      if (element.hasSubject()) {
32427        composeReference("subject", element.getSubject());
32428      }
32429      if (element.hasContext()) {
32430        composeReference("context", element.getContext());
32431      }
32432      if (element.hasPerformed()) {
32433        composeType("performed", element.getPerformed());
32434      }      if (element.hasPerformer()) { 
32435        for (Procedure.ProcedurePerformerComponent e : element.getPerformer()) 
32436          composeProcedureProcedurePerformerComponent("performer", e);
32437      }
32438      if (element.hasLocation()) {
32439        composeReference("location", element.getLocation());
32440      }
32441      if (element.hasReasonCode()) { 
32442        for (CodeableConcept e : element.getReasonCode()) 
32443          composeCodeableConcept("reasonCode", e);
32444      }
32445      if (element.hasReasonReference()) { 
32446        for (Reference e : element.getReasonReference()) 
32447          composeReference("reasonReference", e);
32448      }
32449      if (element.hasBodySite()) { 
32450        for (CodeableConcept e : element.getBodySite()) 
32451          composeCodeableConcept("bodySite", e);
32452      }
32453      if (element.hasOutcome()) {
32454        composeCodeableConcept("outcome", element.getOutcome());
32455      }
32456      if (element.hasReport()) { 
32457        for (Reference e : element.getReport()) 
32458          composeReference("report", e);
32459      }
32460      if (element.hasComplication()) { 
32461        for (CodeableConcept e : element.getComplication()) 
32462          composeCodeableConcept("complication", e);
32463      }
32464      if (element.hasComplicationDetail()) { 
32465        for (Reference e : element.getComplicationDetail()) 
32466          composeReference("complicationDetail", e);
32467      }
32468      if (element.hasFollowUp()) { 
32469        for (CodeableConcept e : element.getFollowUp()) 
32470          composeCodeableConcept("followUp", e);
32471      }
32472      if (element.hasNote()) { 
32473        for (Annotation e : element.getNote()) 
32474          composeAnnotation("note", e);
32475      }
32476      if (element.hasFocalDevice()) { 
32477        for (Procedure.ProcedureFocalDeviceComponent e : element.getFocalDevice()) 
32478          composeProcedureProcedureFocalDeviceComponent("focalDevice", e);
32479      }
32480      if (element.hasUsedReference()) { 
32481        for (Reference e : element.getUsedReference()) 
32482          composeReference("usedReference", e);
32483      }
32484      if (element.hasUsedCode()) { 
32485        for (CodeableConcept e : element.getUsedCode()) 
32486          composeCodeableConcept("usedCode", e);
32487      }
32488  }
32489
32490  protected void composeProcedureProcedurePerformerComponent(String name, Procedure.ProcedurePerformerComponent element) throws IOException {
32491    if (element != null) {
32492      composeElementAttributes(element);
32493      xml.enter(FHIR_NS, name);
32494      composeProcedureProcedurePerformerComponentElements(element);
32495      composeElementClose(element);
32496      xml.exit(FHIR_NS, name);
32497    }
32498  }
32499
32500  protected void composeProcedureProcedurePerformerComponentElements(Procedure.ProcedurePerformerComponent element) throws IOException {
32501      composeBackboneElements(element);
32502      if (element.hasRole()) {
32503        composeCodeableConcept("role", element.getRole());
32504      }
32505      if (element.hasActor()) {
32506        composeReference("actor", element.getActor());
32507      }
32508      if (element.hasOnBehalfOf()) {
32509        composeReference("onBehalfOf", element.getOnBehalfOf());
32510      }
32511  }
32512
32513  protected void composeProcedureProcedureFocalDeviceComponent(String name, Procedure.ProcedureFocalDeviceComponent element) throws IOException {
32514    if (element != null) {
32515      composeElementAttributes(element);
32516      xml.enter(FHIR_NS, name);
32517      composeProcedureProcedureFocalDeviceComponentElements(element);
32518      composeElementClose(element);
32519      xml.exit(FHIR_NS, name);
32520    }
32521  }
32522
32523  protected void composeProcedureProcedureFocalDeviceComponentElements(Procedure.ProcedureFocalDeviceComponent element) throws IOException {
32524      composeBackboneElements(element);
32525      if (element.hasAction()) {
32526        composeCodeableConcept("action", element.getAction());
32527      }
32528      if (element.hasManipulated()) {
32529        composeReference("manipulated", element.getManipulated());
32530      }
32531  }
32532
32533  protected void composeProcedureRequest(String name, ProcedureRequest element) throws IOException {
32534    if (element != null) {
32535      composeDomainResourceAttributes(element);
32536      xml.enter(FHIR_NS, name);
32537      composeProcedureRequestElements(element);
32538      composeElementClose(element);
32539      xml.exit(FHIR_NS, name);
32540    }
32541  }
32542
32543  protected void composeProcedureRequestElements(ProcedureRequest element) throws IOException {
32544      composeDomainResourceElements(element);
32545      if (element.hasIdentifier()) { 
32546        for (Identifier e : element.getIdentifier()) 
32547          composeIdentifier("identifier", e);
32548      }
32549      if (element.hasDefinition()) { 
32550        for (Reference e : element.getDefinition()) 
32551          composeReference("definition", e);
32552      }
32553      if (element.hasBasedOn()) { 
32554        for (Reference e : element.getBasedOn()) 
32555          composeReference("basedOn", e);
32556      }
32557      if (element.hasReplaces()) { 
32558        for (Reference e : element.getReplaces()) 
32559          composeReference("replaces", e);
32560      }
32561      if (element.hasRequisition()) {
32562        composeIdentifier("requisition", element.getRequisition());
32563      }
32564      if (element.hasStatusElement())
32565        composeEnumeration("status", element.getStatusElement(), new ProcedureRequest.ProcedureRequestStatusEnumFactory());
32566      if (element.hasIntentElement())
32567        composeEnumeration("intent", element.getIntentElement(), new ProcedureRequest.ProcedureRequestIntentEnumFactory());
32568      if (element.hasPriorityElement())
32569        composeEnumeration("priority", element.getPriorityElement(), new ProcedureRequest.ProcedureRequestPriorityEnumFactory());
32570      if (element.hasDoNotPerformElement()) {
32571        composeBoolean("doNotPerform", element.getDoNotPerformElement());
32572      }
32573      if (element.hasCategory()) { 
32574        for (CodeableConcept e : element.getCategory()) 
32575          composeCodeableConcept("category", e);
32576      }
32577      if (element.hasCode()) {
32578        composeCodeableConcept("code", element.getCode());
32579      }
32580      if (element.hasSubject()) {
32581        composeReference("subject", element.getSubject());
32582      }
32583      if (element.hasContext()) {
32584        composeReference("context", element.getContext());
32585      }
32586      if (element.hasOccurrence()) {
32587        composeType("occurrence", element.getOccurrence());
32588      }      if (element.hasAsNeeded()) {
32589        composeType("asNeeded", element.getAsNeeded());
32590      }      if (element.hasAuthoredOnElement()) {
32591        composeDateTime("authoredOn", element.getAuthoredOnElement());
32592      }
32593      if (element.hasRequester()) {
32594        composeProcedureRequestProcedureRequestRequesterComponent("requester", element.getRequester());
32595      }
32596      if (element.hasPerformerType()) {
32597        composeCodeableConcept("performerType", element.getPerformerType());
32598      }
32599      if (element.hasPerformer()) {
32600        composeReference("performer", element.getPerformer());
32601      }
32602      if (element.hasReasonCode()) { 
32603        for (CodeableConcept e : element.getReasonCode()) 
32604          composeCodeableConcept("reasonCode", e);
32605      }
32606      if (element.hasReasonReference()) { 
32607        for (Reference e : element.getReasonReference()) 
32608          composeReference("reasonReference", e);
32609      }
32610      if (element.hasSupportingInfo()) { 
32611        for (Reference e : element.getSupportingInfo()) 
32612          composeReference("supportingInfo", e);
32613      }
32614      if (element.hasSpecimen()) { 
32615        for (Reference e : element.getSpecimen()) 
32616          composeReference("specimen", e);
32617      }
32618      if (element.hasBodySite()) { 
32619        for (CodeableConcept e : element.getBodySite()) 
32620          composeCodeableConcept("bodySite", e);
32621      }
32622      if (element.hasNote()) { 
32623        for (Annotation e : element.getNote()) 
32624          composeAnnotation("note", e);
32625      }
32626      if (element.hasRelevantHistory()) { 
32627        for (Reference e : element.getRelevantHistory()) 
32628          composeReference("relevantHistory", e);
32629      }
32630  }
32631
32632  protected void composeProcedureRequestProcedureRequestRequesterComponent(String name, ProcedureRequest.ProcedureRequestRequesterComponent element) throws IOException {
32633    if (element != null) {
32634      composeElementAttributes(element);
32635      xml.enter(FHIR_NS, name);
32636      composeProcedureRequestProcedureRequestRequesterComponentElements(element);
32637      composeElementClose(element);
32638      xml.exit(FHIR_NS, name);
32639    }
32640  }
32641
32642  protected void composeProcedureRequestProcedureRequestRequesterComponentElements(ProcedureRequest.ProcedureRequestRequesterComponent element) throws IOException {
32643      composeBackboneElements(element);
32644      if (element.hasAgent()) {
32645        composeReference("agent", element.getAgent());
32646      }
32647      if (element.hasOnBehalfOf()) {
32648        composeReference("onBehalfOf", element.getOnBehalfOf());
32649      }
32650  }
32651
32652  protected void composeProcessRequest(String name, ProcessRequest element) throws IOException {
32653    if (element != null) {
32654      composeDomainResourceAttributes(element);
32655      xml.enter(FHIR_NS, name);
32656      composeProcessRequestElements(element);
32657      composeElementClose(element);
32658      xml.exit(FHIR_NS, name);
32659    }
32660  }
32661
32662  protected void composeProcessRequestElements(ProcessRequest element) throws IOException {
32663      composeDomainResourceElements(element);
32664      if (element.hasIdentifier()) { 
32665        for (Identifier e : element.getIdentifier()) 
32666          composeIdentifier("identifier", e);
32667      }
32668      if (element.hasStatusElement())
32669        composeEnumeration("status", element.getStatusElement(), new ProcessRequest.ProcessRequestStatusEnumFactory());
32670      if (element.hasActionElement())
32671        composeEnumeration("action", element.getActionElement(), new ProcessRequest.ActionListEnumFactory());
32672      if (element.hasTarget()) {
32673        composeReference("target", element.getTarget());
32674      }
32675      if (element.hasCreatedElement()) {
32676        composeDateTime("created", element.getCreatedElement());
32677      }
32678      if (element.hasProvider()) {
32679        composeReference("provider", element.getProvider());
32680      }
32681      if (element.hasOrganization()) {
32682        composeReference("organization", element.getOrganization());
32683      }
32684      if (element.hasRequest()) {
32685        composeReference("request", element.getRequest());
32686      }
32687      if (element.hasResponse()) {
32688        composeReference("response", element.getResponse());
32689      }
32690      if (element.hasNullifyElement()) {
32691        composeBoolean("nullify", element.getNullifyElement());
32692      }
32693      if (element.hasReferenceElement()) {
32694        composeString("reference", element.getReferenceElement());
32695      }
32696      if (element.hasItem()) { 
32697        for (ProcessRequest.ItemsComponent e : element.getItem()) 
32698          composeProcessRequestItemsComponent("item", e);
32699      }
32700      if (element.hasInclude()) { 
32701        for (StringType e : element.getInclude()) 
32702          composeString("include", e);
32703      }
32704      if (element.hasExclude()) { 
32705        for (StringType e : element.getExclude()) 
32706          composeString("exclude", e);
32707      }
32708      if (element.hasPeriod()) {
32709        composePeriod("period", element.getPeriod());
32710      }
32711  }
32712
32713  protected void composeProcessRequestItemsComponent(String name, ProcessRequest.ItemsComponent element) throws IOException {
32714    if (element != null) {
32715      composeElementAttributes(element);
32716      xml.enter(FHIR_NS, name);
32717      composeProcessRequestItemsComponentElements(element);
32718      composeElementClose(element);
32719      xml.exit(FHIR_NS, name);
32720    }
32721  }
32722
32723  protected void composeProcessRequestItemsComponentElements(ProcessRequest.ItemsComponent element) throws IOException {
32724      composeBackboneElements(element);
32725      if (element.hasSequenceLinkIdElement()) {
32726        composeInteger("sequenceLinkId", element.getSequenceLinkIdElement());
32727      }
32728  }
32729
32730  protected void composeProcessResponse(String name, ProcessResponse element) throws IOException {
32731    if (element != null) {
32732      composeDomainResourceAttributes(element);
32733      xml.enter(FHIR_NS, name);
32734      composeProcessResponseElements(element);
32735      composeElementClose(element);
32736      xml.exit(FHIR_NS, name);
32737    }
32738  }
32739
32740  protected void composeProcessResponseElements(ProcessResponse element) throws IOException {
32741      composeDomainResourceElements(element);
32742      if (element.hasIdentifier()) { 
32743        for (Identifier e : element.getIdentifier()) 
32744          composeIdentifier("identifier", e);
32745      }
32746      if (element.hasStatusElement())
32747        composeEnumeration("status", element.getStatusElement(), new ProcessResponse.ProcessResponseStatusEnumFactory());
32748      if (element.hasCreatedElement()) {
32749        composeDateTime("created", element.getCreatedElement());
32750      }
32751      if (element.hasOrganization()) {
32752        composeReference("organization", element.getOrganization());
32753      }
32754      if (element.hasRequest()) {
32755        composeReference("request", element.getRequest());
32756      }
32757      if (element.hasOutcome()) {
32758        composeCodeableConcept("outcome", element.getOutcome());
32759      }
32760      if (element.hasDispositionElement()) {
32761        composeString("disposition", element.getDispositionElement());
32762      }
32763      if (element.hasRequestProvider()) {
32764        composeReference("requestProvider", element.getRequestProvider());
32765      }
32766      if (element.hasRequestOrganization()) {
32767        composeReference("requestOrganization", element.getRequestOrganization());
32768      }
32769      if (element.hasForm()) {
32770        composeCodeableConcept("form", element.getForm());
32771      }
32772      if (element.hasProcessNote()) { 
32773        for (ProcessResponse.ProcessResponseProcessNoteComponent e : element.getProcessNote()) 
32774          composeProcessResponseProcessResponseProcessNoteComponent("processNote", e);
32775      }
32776      if (element.hasError()) { 
32777        for (CodeableConcept e : element.getError()) 
32778          composeCodeableConcept("error", e);
32779      }
32780      if (element.hasCommunicationRequest()) { 
32781        for (Reference e : element.getCommunicationRequest()) 
32782          composeReference("communicationRequest", e);
32783      }
32784  }
32785
32786  protected void composeProcessResponseProcessResponseProcessNoteComponent(String name, ProcessResponse.ProcessResponseProcessNoteComponent element) throws IOException {
32787    if (element != null) {
32788      composeElementAttributes(element);
32789      xml.enter(FHIR_NS, name);
32790      composeProcessResponseProcessResponseProcessNoteComponentElements(element);
32791      composeElementClose(element);
32792      xml.exit(FHIR_NS, name);
32793    }
32794  }
32795
32796  protected void composeProcessResponseProcessResponseProcessNoteComponentElements(ProcessResponse.ProcessResponseProcessNoteComponent element) throws IOException {
32797      composeBackboneElements(element);
32798      if (element.hasType()) {
32799        composeCodeableConcept("type", element.getType());
32800      }
32801      if (element.hasTextElement()) {
32802        composeString("text", element.getTextElement());
32803      }
32804  }
32805
32806  protected void composeProvenance(String name, Provenance element) throws IOException {
32807    if (element != null) {
32808      composeDomainResourceAttributes(element);
32809      xml.enter(FHIR_NS, name);
32810      composeProvenanceElements(element);
32811      composeElementClose(element);
32812      xml.exit(FHIR_NS, name);
32813    }
32814  }
32815
32816  protected void composeProvenanceElements(Provenance element) throws IOException {
32817      composeDomainResourceElements(element);
32818      if (element.hasTarget()) { 
32819        for (Reference e : element.getTarget()) 
32820          composeReference("target", e);
32821      }
32822      if (element.hasPeriod()) {
32823        composePeriod("period", element.getPeriod());
32824      }
32825      if (element.hasRecordedElement()) {
32826        composeInstant("recorded", element.getRecordedElement());
32827      }
32828      if (element.hasPolicy()) { 
32829        for (UriType e : element.getPolicy()) 
32830          composeUri("policy", e);
32831      }
32832      if (element.hasLocation()) {
32833        composeReference("location", element.getLocation());
32834      }
32835      if (element.hasReason()) { 
32836        for (Coding e : element.getReason()) 
32837          composeCoding("reason", e);
32838      }
32839      if (element.hasActivity()) {
32840        composeCoding("activity", element.getActivity());
32841      }
32842      if (element.hasAgent()) { 
32843        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
32844          composeProvenanceProvenanceAgentComponent("agent", e);
32845      }
32846      if (element.hasEntity()) { 
32847        for (Provenance.ProvenanceEntityComponent e : element.getEntity()) 
32848          composeProvenanceProvenanceEntityComponent("entity", e);
32849      }
32850      if (element.hasSignature()) { 
32851        for (Signature e : element.getSignature()) 
32852          composeSignature("signature", e);
32853      }
32854  }
32855
32856  protected void composeProvenanceProvenanceAgentComponent(String name, Provenance.ProvenanceAgentComponent element) throws IOException {
32857    if (element != null) {
32858      composeElementAttributes(element);
32859      xml.enter(FHIR_NS, name);
32860      composeProvenanceProvenanceAgentComponentElements(element);
32861      composeElementClose(element);
32862      xml.exit(FHIR_NS, name);
32863    }
32864  }
32865
32866  protected void composeProvenanceProvenanceAgentComponentElements(Provenance.ProvenanceAgentComponent element) throws IOException {
32867      composeBackboneElements(element);
32868      if (element.hasRole()) { 
32869        for (CodeableConcept e : element.getRole()) 
32870          composeCodeableConcept("role", e);
32871      }
32872      if (element.hasWho()) {
32873        composeType("who", element.getWho());
32874      }      if (element.hasOnBehalfOf()) {
32875        composeType("onBehalfOf", element.getOnBehalfOf());
32876      }      if (element.hasRelatedAgentType()) {
32877        composeCodeableConcept("relatedAgentType", element.getRelatedAgentType());
32878      }
32879  }
32880
32881  protected void composeProvenanceProvenanceEntityComponent(String name, Provenance.ProvenanceEntityComponent element) throws IOException {
32882    if (element != null) {
32883      composeElementAttributes(element);
32884      xml.enter(FHIR_NS, name);
32885      composeProvenanceProvenanceEntityComponentElements(element);
32886      composeElementClose(element);
32887      xml.exit(FHIR_NS, name);
32888    }
32889  }
32890
32891  protected void composeProvenanceProvenanceEntityComponentElements(Provenance.ProvenanceEntityComponent element) throws IOException {
32892      composeBackboneElements(element);
32893      if (element.hasRoleElement())
32894        composeEnumeration("role", element.getRoleElement(), new Provenance.ProvenanceEntityRoleEnumFactory());
32895      if (element.hasWhat()) {
32896        composeType("what", element.getWhat());
32897      }      if (element.hasAgent()) { 
32898        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
32899          composeProvenanceProvenanceAgentComponent("agent", e);
32900      }
32901  }
32902
32903  protected void composeQuestionnaire(String name, Questionnaire element) throws IOException {
32904    if (element != null) {
32905      composeDomainResourceAttributes(element);
32906      xml.enter(FHIR_NS, name);
32907      composeQuestionnaireElements(element);
32908      composeElementClose(element);
32909      xml.exit(FHIR_NS, name);
32910    }
32911  }
32912
32913  protected void composeQuestionnaireElements(Questionnaire element) throws IOException {
32914      composeDomainResourceElements(element);
32915      if (element.hasUrlElement()) {
32916        composeUri("url", element.getUrlElement());
32917      }
32918      if (element.hasIdentifier()) { 
32919        for (Identifier e : element.getIdentifier()) 
32920          composeIdentifier("identifier", e);
32921      }
32922      if (element.hasVersionElement()) {
32923        composeString("version", element.getVersionElement());
32924      }
32925      if (element.hasNameElement()) {
32926        composeString("name", element.getNameElement());
32927      }
32928      if (element.hasTitleElement()) {
32929        composeString("title", element.getTitleElement());
32930      }
32931      if (element.hasStatusElement())
32932        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
32933      if (element.hasExperimentalElement()) {
32934        composeBoolean("experimental", element.getExperimentalElement());
32935      }
32936      if (element.hasDateElement()) {
32937        composeDateTime("date", element.getDateElement());
32938      }
32939      if (element.hasPublisherElement()) {
32940        composeString("publisher", element.getPublisherElement());
32941      }
32942      if (element.hasDescriptionElement()) {
32943        composeMarkdown("description", element.getDescriptionElement());
32944      }
32945      if (element.hasPurposeElement()) {
32946        composeMarkdown("purpose", element.getPurposeElement());
32947      }
32948      if (element.hasApprovalDateElement()) {
32949        composeDate("approvalDate", element.getApprovalDateElement());
32950      }
32951      if (element.hasLastReviewDateElement()) {
32952        composeDate("lastReviewDate", element.getLastReviewDateElement());
32953      }
32954      if (element.hasEffectivePeriod()) {
32955        composePeriod("effectivePeriod", element.getEffectivePeriod());
32956      }
32957      if (element.hasUseContext()) { 
32958        for (UsageContext e : element.getUseContext()) 
32959          composeUsageContext("useContext", e);
32960      }
32961      if (element.hasJurisdiction()) { 
32962        for (CodeableConcept e : element.getJurisdiction()) 
32963          composeCodeableConcept("jurisdiction", e);
32964      }
32965      if (element.hasContact()) { 
32966        for (ContactDetail e : element.getContact()) 
32967          composeContactDetail("contact", e);
32968      }
32969      if (element.hasCopyrightElement()) {
32970        composeMarkdown("copyright", element.getCopyrightElement());
32971      }
32972      if (element.hasCode()) { 
32973        for (Coding e : element.getCode()) 
32974          composeCoding("code", e);
32975      }
32976      if (element.hasSubjectType()) { 
32977        for (CodeType e : element.getSubjectType()) 
32978          composeCode("subjectType", e);
32979      }
32980      if (element.hasItem()) { 
32981        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
32982          composeQuestionnaireQuestionnaireItemComponent("item", e);
32983      }
32984  }
32985
32986  protected void composeQuestionnaireQuestionnaireItemComponent(String name, Questionnaire.QuestionnaireItemComponent element) throws IOException {
32987    if (element != null) {
32988      composeElementAttributes(element);
32989      xml.enter(FHIR_NS, name);
32990      composeQuestionnaireQuestionnaireItemComponentElements(element);
32991      composeElementClose(element);
32992      xml.exit(FHIR_NS, name);
32993    }
32994  }
32995
32996  protected void composeQuestionnaireQuestionnaireItemComponentElements(Questionnaire.QuestionnaireItemComponent element) throws IOException {
32997      composeBackboneElements(element);
32998      if (element.hasLinkIdElement()) {
32999        composeString("linkId", element.getLinkIdElement());
33000      }
33001      if (element.hasDefinitionElement()) {
33002        composeUri("definition", element.getDefinitionElement());
33003      }
33004      if (element.hasCode()) { 
33005        for (Coding e : element.getCode()) 
33006          composeCoding("code", e);
33007      }
33008      if (element.hasPrefixElement()) {
33009        composeString("prefix", element.getPrefixElement());
33010      }
33011      if (element.hasTextElement()) {
33012        composeString("text", element.getTextElement());
33013      }
33014      if (element.hasTypeElement())
33015        composeEnumeration("type", element.getTypeElement(), new Questionnaire.QuestionnaireItemTypeEnumFactory());
33016      if (element.hasEnableWhen()) { 
33017        for (Questionnaire.QuestionnaireItemEnableWhenComponent e : element.getEnableWhen()) 
33018          composeQuestionnaireQuestionnaireItemEnableWhenComponent("enableWhen", e);
33019      }
33020      if (element.hasRequiredElement()) {
33021        composeBoolean("required", element.getRequiredElement());
33022      }
33023      if (element.hasRepeatsElement()) {
33024        composeBoolean("repeats", element.getRepeatsElement());
33025      }
33026      if (element.hasReadOnlyElement()) {
33027        composeBoolean("readOnly", element.getReadOnlyElement());
33028      }
33029      if (element.hasMaxLengthElement()) {
33030        composeInteger("maxLength", element.getMaxLengthElement());
33031      }
33032      if (element.hasOptions()) {
33033        composeReference("options", element.getOptions());
33034      }
33035      if (element.hasOption()) { 
33036        for (Questionnaire.QuestionnaireItemOptionComponent e : element.getOption()) 
33037          composeQuestionnaireQuestionnaireItemOptionComponent("option", e);
33038      }
33039      if (element.hasInitial()) {
33040        composeType("initial", element.getInitial());
33041      }      if (element.hasItem()) { 
33042        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
33043          composeQuestionnaireQuestionnaireItemComponent("item", e);
33044      }
33045  }
33046
33047  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponent(String name, Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
33048    if (element != null) {
33049      composeElementAttributes(element);
33050      xml.enter(FHIR_NS, name);
33051      composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(element);
33052      composeElementClose(element);
33053      xml.exit(FHIR_NS, name);
33054    }
33055  }
33056
33057  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
33058      composeBackboneElements(element);
33059      if (element.hasQuestionElement()) {
33060        composeString("question", element.getQuestionElement());
33061      }
33062      if (element.hasHasAnswerElement()) {
33063        composeBoolean("hasAnswer", element.getHasAnswerElement());
33064      }
33065      if (element.hasAnswer()) {
33066        composeType("answer", element.getAnswer());
33067      }  }
33068
33069  protected void composeQuestionnaireQuestionnaireItemOptionComponent(String name, Questionnaire.QuestionnaireItemOptionComponent element) throws IOException {
33070    if (element != null) {
33071      composeElementAttributes(element);
33072      xml.enter(FHIR_NS, name);
33073      composeQuestionnaireQuestionnaireItemOptionComponentElements(element);
33074      composeElementClose(element);
33075      xml.exit(FHIR_NS, name);
33076    }
33077  }
33078
33079  protected void composeQuestionnaireQuestionnaireItemOptionComponentElements(Questionnaire.QuestionnaireItemOptionComponent element) throws IOException {
33080      composeBackboneElements(element);
33081      if (element.hasValue()) {
33082        composeType("value", element.getValue());
33083      }  }
33084
33085  protected void composeQuestionnaireResponse(String name, QuestionnaireResponse element) throws IOException {
33086    if (element != null) {
33087      composeDomainResourceAttributes(element);
33088      xml.enter(FHIR_NS, name);
33089      composeQuestionnaireResponseElements(element);
33090      composeElementClose(element);
33091      xml.exit(FHIR_NS, name);
33092    }
33093  }
33094
33095  protected void composeQuestionnaireResponseElements(QuestionnaireResponse element) throws IOException {
33096      composeDomainResourceElements(element);
33097      if (element.hasIdentifier()) {
33098        composeIdentifier("identifier", element.getIdentifier());
33099      }
33100      if (element.hasBasedOn()) { 
33101        for (Reference e : element.getBasedOn()) 
33102          composeReference("basedOn", e);
33103      }
33104      if (element.hasParent()) { 
33105        for (Reference e : element.getParent()) 
33106          composeReference("parent", e);
33107      }
33108      if (element.hasQuestionnaire()) {
33109        composeReference("questionnaire", element.getQuestionnaire());
33110      }
33111      if (element.hasStatusElement())
33112        composeEnumeration("status", element.getStatusElement(), new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory());
33113      if (element.hasSubject()) {
33114        composeReference("subject", element.getSubject());
33115      }
33116      if (element.hasContext()) {
33117        composeReference("context", element.getContext());
33118      }
33119      if (element.hasAuthoredElement()) {
33120        composeDateTime("authored", element.getAuthoredElement());
33121      }
33122      if (element.hasAuthor()) {
33123        composeReference("author", element.getAuthor());
33124      }
33125      if (element.hasSource()) {
33126        composeReference("source", element.getSource());
33127      }
33128      if (element.hasItem()) { 
33129        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
33130          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
33131      }
33132  }
33133
33134  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
33135    if (element != null) {
33136      composeElementAttributes(element);
33137      xml.enter(FHIR_NS, name);
33138      composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(element);
33139      composeElementClose(element);
33140      xml.exit(FHIR_NS, name);
33141    }
33142  }
33143
33144  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
33145      composeBackboneElements(element);
33146      if (element.hasLinkIdElement()) {
33147        composeString("linkId", element.getLinkIdElement());
33148      }
33149      if (element.hasDefinitionElement()) {
33150        composeUri("definition", element.getDefinitionElement());
33151      }
33152      if (element.hasTextElement()) {
33153        composeString("text", element.getTextElement());
33154      }
33155      if (element.hasSubject()) {
33156        composeReference("subject", element.getSubject());
33157      }
33158      if (element.hasAnswer()) { 
33159        for (QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent e : element.getAnswer()) 
33160          composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent("answer", e);
33161      }
33162      if (element.hasItem()) { 
33163        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
33164          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
33165      }
33166  }
33167
33168  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
33169    if (element != null) {
33170      composeElementAttributes(element);
33171      xml.enter(FHIR_NS, name);
33172      composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(element);
33173      composeElementClose(element);
33174      xml.exit(FHIR_NS, name);
33175    }
33176  }
33177
33178  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
33179      composeBackboneElements(element);
33180      if (element.hasValue()) {
33181        composeType("value", element.getValue());
33182      }      if (element.hasItem()) { 
33183        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
33184          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
33185      }
33186  }
33187
33188  protected void composeReferralRequest(String name, ReferralRequest element) throws IOException {
33189    if (element != null) {
33190      composeDomainResourceAttributes(element);
33191      xml.enter(FHIR_NS, name);
33192      composeReferralRequestElements(element);
33193      composeElementClose(element);
33194      xml.exit(FHIR_NS, name);
33195    }
33196  }
33197
33198  protected void composeReferralRequestElements(ReferralRequest element) throws IOException {
33199      composeDomainResourceElements(element);
33200      if (element.hasIdentifier()) { 
33201        for (Identifier e : element.getIdentifier()) 
33202          composeIdentifier("identifier", e);
33203      }
33204      if (element.hasDefinition()) { 
33205        for (Reference e : element.getDefinition()) 
33206          composeReference("definition", e);
33207      }
33208      if (element.hasBasedOn()) { 
33209        for (Reference e : element.getBasedOn()) 
33210          composeReference("basedOn", e);
33211      }
33212      if (element.hasReplaces()) { 
33213        for (Reference e : element.getReplaces()) 
33214          composeReference("replaces", e);
33215      }
33216      if (element.hasGroupIdentifier()) {
33217        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
33218      }
33219      if (element.hasStatusElement())
33220        composeEnumeration("status", element.getStatusElement(), new ReferralRequest.ReferralRequestStatusEnumFactory());
33221      if (element.hasIntentElement())
33222        composeEnumeration("intent", element.getIntentElement(), new ReferralRequest.ReferralCategoryEnumFactory());
33223      if (element.hasType()) {
33224        composeCodeableConcept("type", element.getType());
33225      }
33226      if (element.hasPriorityElement())
33227        composeEnumeration("priority", element.getPriorityElement(), new ReferralRequest.ReferralPriorityEnumFactory());
33228      if (element.hasServiceRequested()) { 
33229        for (CodeableConcept e : element.getServiceRequested()) 
33230          composeCodeableConcept("serviceRequested", e);
33231      }
33232      if (element.hasSubject()) {
33233        composeReference("subject", element.getSubject());
33234      }
33235      if (element.hasContext()) {
33236        composeReference("context", element.getContext());
33237      }
33238      if (element.hasOccurrence()) {
33239        composeType("occurrence", element.getOccurrence());
33240      }      if (element.hasAuthoredOnElement()) {
33241        composeDateTime("authoredOn", element.getAuthoredOnElement());
33242      }
33243      if (element.hasRequester()) {
33244        composeReferralRequestReferralRequestRequesterComponent("requester", element.getRequester());
33245      }
33246      if (element.hasSpecialty()) {
33247        composeCodeableConcept("specialty", element.getSpecialty());
33248      }
33249      if (element.hasRecipient()) { 
33250        for (Reference e : element.getRecipient()) 
33251          composeReference("recipient", e);
33252      }
33253      if (element.hasReasonCode()) { 
33254        for (CodeableConcept e : element.getReasonCode()) 
33255          composeCodeableConcept("reasonCode", e);
33256      }
33257      if (element.hasReasonReference()) { 
33258        for (Reference e : element.getReasonReference()) 
33259          composeReference("reasonReference", e);
33260      }
33261      if (element.hasDescriptionElement()) {
33262        composeString("description", element.getDescriptionElement());
33263      }
33264      if (element.hasSupportingInfo()) { 
33265        for (Reference e : element.getSupportingInfo()) 
33266          composeReference("supportingInfo", e);
33267      }
33268      if (element.hasNote()) { 
33269        for (Annotation e : element.getNote()) 
33270          composeAnnotation("note", e);
33271      }
33272      if (element.hasRelevantHistory()) { 
33273        for (Reference e : element.getRelevantHistory()) 
33274          composeReference("relevantHistory", e);
33275      }
33276  }
33277
33278  protected void composeReferralRequestReferralRequestRequesterComponent(String name, ReferralRequest.ReferralRequestRequesterComponent element) throws IOException {
33279    if (element != null) {
33280      composeElementAttributes(element);
33281      xml.enter(FHIR_NS, name);
33282      composeReferralRequestReferralRequestRequesterComponentElements(element);
33283      composeElementClose(element);
33284      xml.exit(FHIR_NS, name);
33285    }
33286  }
33287
33288  protected void composeReferralRequestReferralRequestRequesterComponentElements(ReferralRequest.ReferralRequestRequesterComponent element) throws IOException {
33289      composeBackboneElements(element);
33290      if (element.hasAgent()) {
33291        composeReference("agent", element.getAgent());
33292      }
33293      if (element.hasOnBehalfOf()) {
33294        composeReference("onBehalfOf", element.getOnBehalfOf());
33295      }
33296  }
33297
33298  protected void composeRelatedPerson(String name, RelatedPerson element) throws IOException {
33299    if (element != null) {
33300      composeDomainResourceAttributes(element);
33301      xml.enter(FHIR_NS, name);
33302      composeRelatedPersonElements(element);
33303      composeElementClose(element);
33304      xml.exit(FHIR_NS, name);
33305    }
33306  }
33307
33308  protected void composeRelatedPersonElements(RelatedPerson element) throws IOException {
33309      composeDomainResourceElements(element);
33310      if (element.hasIdentifier()) { 
33311        for (Identifier e : element.getIdentifier()) 
33312          composeIdentifier("identifier", e);
33313      }
33314      if (element.hasActiveElement()) {
33315        composeBoolean("active", element.getActiveElement());
33316      }
33317      if (element.hasPatient()) {
33318        composeReference("patient", element.getPatient());
33319      }
33320      if (element.hasRelationship()) {
33321        composeCodeableConcept("relationship", element.getRelationship());
33322      }
33323      if (element.hasName()) { 
33324        for (HumanName e : element.getName()) 
33325          composeHumanName("name", e);
33326      }
33327      if (element.hasTelecom()) { 
33328        for (ContactPoint e : element.getTelecom()) 
33329          composeContactPoint("telecom", e);
33330      }
33331      if (element.hasGenderElement())
33332        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
33333      if (element.hasBirthDateElement()) {
33334        composeDate("birthDate", element.getBirthDateElement());
33335      }
33336      if (element.hasAddress()) { 
33337        for (Address e : element.getAddress()) 
33338          composeAddress("address", e);
33339      }
33340      if (element.hasPhoto()) { 
33341        for (Attachment e : element.getPhoto()) 
33342          composeAttachment("photo", e);
33343      }
33344      if (element.hasPeriod()) {
33345        composePeriod("period", element.getPeriod());
33346      }
33347  }
33348
33349  protected void composeRequestGroup(String name, RequestGroup element) throws IOException {
33350    if (element != null) {
33351      composeDomainResourceAttributes(element);
33352      xml.enter(FHIR_NS, name);
33353      composeRequestGroupElements(element);
33354      composeElementClose(element);
33355      xml.exit(FHIR_NS, name);
33356    }
33357  }
33358
33359  protected void composeRequestGroupElements(RequestGroup element) throws IOException {
33360      composeDomainResourceElements(element);
33361      if (element.hasIdentifier()) { 
33362        for (Identifier e : element.getIdentifier()) 
33363          composeIdentifier("identifier", e);
33364      }
33365      if (element.hasDefinition()) { 
33366        for (Reference e : element.getDefinition()) 
33367          composeReference("definition", e);
33368      }
33369      if (element.hasBasedOn()) { 
33370        for (Reference e : element.getBasedOn()) 
33371          composeReference("basedOn", e);
33372      }
33373      if (element.hasReplaces()) { 
33374        for (Reference e : element.getReplaces()) 
33375          composeReference("replaces", e);
33376      }
33377      if (element.hasGroupIdentifier()) {
33378        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
33379      }
33380      if (element.hasStatusElement())
33381        composeEnumeration("status", element.getStatusElement(), new RequestGroup.RequestStatusEnumFactory());
33382      if (element.hasIntentElement())
33383        composeEnumeration("intent", element.getIntentElement(), new RequestGroup.RequestIntentEnumFactory());
33384      if (element.hasPriorityElement())
33385        composeEnumeration("priority", element.getPriorityElement(), new RequestGroup.RequestPriorityEnumFactory());
33386      if (element.hasSubject()) {
33387        composeReference("subject", element.getSubject());
33388      }
33389      if (element.hasContext()) {
33390        composeReference("context", element.getContext());
33391      }
33392      if (element.hasAuthoredOnElement()) {
33393        composeDateTime("authoredOn", element.getAuthoredOnElement());
33394      }
33395      if (element.hasAuthor()) {
33396        composeReference("author", element.getAuthor());
33397      }
33398      if (element.hasReason()) {
33399        composeType("reason", element.getReason());
33400      }      if (element.hasNote()) { 
33401        for (Annotation e : element.getNote()) 
33402          composeAnnotation("note", e);
33403      }
33404      if (element.hasAction()) { 
33405        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
33406          composeRequestGroupRequestGroupActionComponent("action", e);
33407      }
33408  }
33409
33410  protected void composeRequestGroupRequestGroupActionComponent(String name, RequestGroup.RequestGroupActionComponent element) throws IOException {
33411    if (element != null) {
33412      composeElementAttributes(element);
33413      xml.enter(FHIR_NS, name);
33414      composeRequestGroupRequestGroupActionComponentElements(element);
33415      composeElementClose(element);
33416      xml.exit(FHIR_NS, name);
33417    }
33418  }
33419
33420  protected void composeRequestGroupRequestGroupActionComponentElements(RequestGroup.RequestGroupActionComponent element) throws IOException {
33421      composeBackboneElements(element);
33422      if (element.hasLabelElement()) {
33423        composeString("label", element.getLabelElement());
33424      }
33425      if (element.hasTitleElement()) {
33426        composeString("title", element.getTitleElement());
33427      }
33428      if (element.hasDescriptionElement()) {
33429        composeString("description", element.getDescriptionElement());
33430      }
33431      if (element.hasTextEquivalentElement()) {
33432        composeString("textEquivalent", element.getTextEquivalentElement());
33433      }
33434      if (element.hasCode()) { 
33435        for (CodeableConcept e : element.getCode()) 
33436          composeCodeableConcept("code", e);
33437      }
33438      if (element.hasDocumentation()) { 
33439        for (RelatedArtifact e : element.getDocumentation()) 
33440          composeRelatedArtifact("documentation", e);
33441      }
33442      if (element.hasCondition()) { 
33443        for (RequestGroup.RequestGroupActionConditionComponent e : element.getCondition()) 
33444          composeRequestGroupRequestGroupActionConditionComponent("condition", e);
33445      }
33446      if (element.hasRelatedAction()) { 
33447        for (RequestGroup.RequestGroupActionRelatedActionComponent e : element.getRelatedAction()) 
33448          composeRequestGroupRequestGroupActionRelatedActionComponent("relatedAction", e);
33449      }
33450      if (element.hasTiming()) {
33451        composeType("timing", element.getTiming());
33452      }      if (element.hasParticipant()) { 
33453        for (Reference e : element.getParticipant()) 
33454          composeReference("participant", e);
33455      }
33456      if (element.hasType()) {
33457        composeCoding("type", element.getType());
33458      }
33459      if (element.hasGroupingBehaviorElement())
33460        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new RequestGroup.ActionGroupingBehaviorEnumFactory());
33461      if (element.hasSelectionBehaviorElement())
33462        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new RequestGroup.ActionSelectionBehaviorEnumFactory());
33463      if (element.hasRequiredBehaviorElement())
33464        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new RequestGroup.ActionRequiredBehaviorEnumFactory());
33465      if (element.hasPrecheckBehaviorElement())
33466        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new RequestGroup.ActionPrecheckBehaviorEnumFactory());
33467      if (element.hasCardinalityBehaviorElement())
33468        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new RequestGroup.ActionCardinalityBehaviorEnumFactory());
33469      if (element.hasResource()) {
33470        composeReference("resource", element.getResource());
33471      }
33472      if (element.hasAction()) { 
33473        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
33474          composeRequestGroupRequestGroupActionComponent("action", e);
33475      }
33476  }
33477
33478  protected void composeRequestGroupRequestGroupActionConditionComponent(String name, RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
33479    if (element != null) {
33480      composeElementAttributes(element);
33481      xml.enter(FHIR_NS, name);
33482      composeRequestGroupRequestGroupActionConditionComponentElements(element);
33483      composeElementClose(element);
33484      xml.exit(FHIR_NS, name);
33485    }
33486  }
33487
33488  protected void composeRequestGroupRequestGroupActionConditionComponentElements(RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
33489      composeBackboneElements(element);
33490      if (element.hasKindElement())
33491        composeEnumeration("kind", element.getKindElement(), new RequestGroup.ActionConditionKindEnumFactory());
33492      if (element.hasDescriptionElement()) {
33493        composeString("description", element.getDescriptionElement());
33494      }
33495      if (element.hasLanguageElement()) {
33496        composeString("language", element.getLanguageElement());
33497      }
33498      if (element.hasExpressionElement()) {
33499        composeString("expression", element.getExpressionElement());
33500      }
33501  }
33502
33503  protected void composeRequestGroupRequestGroupActionRelatedActionComponent(String name, RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
33504    if (element != null) {
33505      composeElementAttributes(element);
33506      xml.enter(FHIR_NS, name);
33507      composeRequestGroupRequestGroupActionRelatedActionComponentElements(element);
33508      composeElementClose(element);
33509      xml.exit(FHIR_NS, name);
33510    }
33511  }
33512
33513  protected void composeRequestGroupRequestGroupActionRelatedActionComponentElements(RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
33514      composeBackboneElements(element);
33515      if (element.hasActionIdElement()) {
33516        composeId("actionId", element.getActionIdElement());
33517      }
33518      if (element.hasRelationshipElement())
33519        composeEnumeration("relationship", element.getRelationshipElement(), new RequestGroup.ActionRelationshipTypeEnumFactory());
33520      if (element.hasOffset()) {
33521        composeType("offset", element.getOffset());
33522      }  }
33523
33524  protected void composeResearchStudy(String name, ResearchStudy element) throws IOException {
33525    if (element != null) {
33526      composeDomainResourceAttributes(element);
33527      xml.enter(FHIR_NS, name);
33528      composeResearchStudyElements(element);
33529      composeElementClose(element);
33530      xml.exit(FHIR_NS, name);
33531    }
33532  }
33533
33534  protected void composeResearchStudyElements(ResearchStudy element) throws IOException {
33535      composeDomainResourceElements(element);
33536      if (element.hasIdentifier()) { 
33537        for (Identifier e : element.getIdentifier()) 
33538          composeIdentifier("identifier", e);
33539      }
33540      if (element.hasTitleElement()) {
33541        composeString("title", element.getTitleElement());
33542      }
33543      if (element.hasProtocol()) { 
33544        for (Reference e : element.getProtocol()) 
33545          composeReference("protocol", e);
33546      }
33547      if (element.hasPartOf()) { 
33548        for (Reference e : element.getPartOf()) 
33549          composeReference("partOf", e);
33550      }
33551      if (element.hasStatusElement())
33552        composeEnumeration("status", element.getStatusElement(), new ResearchStudy.ResearchStudyStatusEnumFactory());
33553      if (element.hasCategory()) { 
33554        for (CodeableConcept e : element.getCategory()) 
33555          composeCodeableConcept("category", e);
33556      }
33557      if (element.hasFocus()) { 
33558        for (CodeableConcept e : element.getFocus()) 
33559          composeCodeableConcept("focus", e);
33560      }
33561      if (element.hasContact()) { 
33562        for (ContactDetail e : element.getContact()) 
33563          composeContactDetail("contact", e);
33564      }
33565      if (element.hasRelatedArtifact()) { 
33566        for (RelatedArtifact e : element.getRelatedArtifact()) 
33567          composeRelatedArtifact("relatedArtifact", e);
33568      }
33569      if (element.hasKeyword()) { 
33570        for (CodeableConcept e : element.getKeyword()) 
33571          composeCodeableConcept("keyword", e);
33572      }
33573      if (element.hasJurisdiction()) { 
33574        for (CodeableConcept e : element.getJurisdiction()) 
33575          composeCodeableConcept("jurisdiction", e);
33576      }
33577      if (element.hasDescriptionElement()) {
33578        composeMarkdown("description", element.getDescriptionElement());
33579      }
33580      if (element.hasEnrollment()) { 
33581        for (Reference e : element.getEnrollment()) 
33582          composeReference("enrollment", e);
33583      }
33584      if (element.hasPeriod()) {
33585        composePeriod("period", element.getPeriod());
33586      }
33587      if (element.hasSponsor()) {
33588        composeReference("sponsor", element.getSponsor());
33589      }
33590      if (element.hasPrincipalInvestigator()) {
33591        composeReference("principalInvestigator", element.getPrincipalInvestigator());
33592      }
33593      if (element.hasSite()) { 
33594        for (Reference e : element.getSite()) 
33595          composeReference("site", e);
33596      }
33597      if (element.hasReasonStopped()) {
33598        composeCodeableConcept("reasonStopped", element.getReasonStopped());
33599      }
33600      if (element.hasNote()) { 
33601        for (Annotation e : element.getNote()) 
33602          composeAnnotation("note", e);
33603      }
33604      if (element.hasArm()) { 
33605        for (ResearchStudy.ResearchStudyArmComponent e : element.getArm()) 
33606          composeResearchStudyResearchStudyArmComponent("arm", e);
33607      }
33608  }
33609
33610  protected void composeResearchStudyResearchStudyArmComponent(String name, ResearchStudy.ResearchStudyArmComponent element) throws IOException {
33611    if (element != null) {
33612      composeElementAttributes(element);
33613      xml.enter(FHIR_NS, name);
33614      composeResearchStudyResearchStudyArmComponentElements(element);
33615      composeElementClose(element);
33616      xml.exit(FHIR_NS, name);
33617    }
33618  }
33619
33620  protected void composeResearchStudyResearchStudyArmComponentElements(ResearchStudy.ResearchStudyArmComponent element) throws IOException {
33621      composeBackboneElements(element);
33622      if (element.hasNameElement()) {
33623        composeString("name", element.getNameElement());
33624      }
33625      if (element.hasCode()) {
33626        composeCodeableConcept("code", element.getCode());
33627      }
33628      if (element.hasDescriptionElement()) {
33629        composeString("description", element.getDescriptionElement());
33630      }
33631  }
33632
33633  protected void composeResearchSubject(String name, ResearchSubject element) throws IOException {
33634    if (element != null) {
33635      composeDomainResourceAttributes(element);
33636      xml.enter(FHIR_NS, name);
33637      composeResearchSubjectElements(element);
33638      composeElementClose(element);
33639      xml.exit(FHIR_NS, name);
33640    }
33641  }
33642
33643  protected void composeResearchSubjectElements(ResearchSubject element) throws IOException {
33644      composeDomainResourceElements(element);
33645      if (element.hasIdentifier()) {
33646        composeIdentifier("identifier", element.getIdentifier());
33647      }
33648      if (element.hasStatusElement())
33649        composeEnumeration("status", element.getStatusElement(), new ResearchSubject.ResearchSubjectStatusEnumFactory());
33650      if (element.hasPeriod()) {
33651        composePeriod("period", element.getPeriod());
33652      }
33653      if (element.hasStudy()) {
33654        composeReference("study", element.getStudy());
33655      }
33656      if (element.hasIndividual()) {
33657        composeReference("individual", element.getIndividual());
33658      }
33659      if (element.hasAssignedArmElement()) {
33660        composeString("assignedArm", element.getAssignedArmElement());
33661      }
33662      if (element.hasActualArmElement()) {
33663        composeString("actualArm", element.getActualArmElement());
33664      }
33665      if (element.hasConsent()) {
33666        composeReference("consent", element.getConsent());
33667      }
33668  }
33669
33670  protected void composeRiskAssessment(String name, RiskAssessment element) throws IOException {
33671    if (element != null) {
33672      composeDomainResourceAttributes(element);
33673      xml.enter(FHIR_NS, name);
33674      composeRiskAssessmentElements(element);
33675      composeElementClose(element);
33676      xml.exit(FHIR_NS, name);
33677    }
33678  }
33679
33680  protected void composeRiskAssessmentElements(RiskAssessment element) throws IOException {
33681      composeDomainResourceElements(element);
33682      if (element.hasIdentifier()) {
33683        composeIdentifier("identifier", element.getIdentifier());
33684      }
33685      if (element.hasBasedOn()) {
33686        composeReference("basedOn", element.getBasedOn());
33687      }
33688      if (element.hasParent()) {
33689        composeReference("parent", element.getParent());
33690      }
33691      if (element.hasStatusElement())
33692        composeEnumeration("status", element.getStatusElement(), new RiskAssessment.RiskAssessmentStatusEnumFactory());
33693      if (element.hasMethod()) {
33694        composeCodeableConcept("method", element.getMethod());
33695      }
33696      if (element.hasCode()) {
33697        composeCodeableConcept("code", element.getCode());
33698      }
33699      if (element.hasSubject()) {
33700        composeReference("subject", element.getSubject());
33701      }
33702      if (element.hasContext()) {
33703        composeReference("context", element.getContext());
33704      }
33705      if (element.hasOccurrence()) {
33706        composeType("occurrence", element.getOccurrence());
33707      }      if (element.hasCondition()) {
33708        composeReference("condition", element.getCondition());
33709      }
33710      if (element.hasPerformer()) {
33711        composeReference("performer", element.getPerformer());
33712      }
33713      if (element.hasReason()) {
33714        composeType("reason", element.getReason());
33715      }      if (element.hasBasis()) { 
33716        for (Reference e : element.getBasis()) 
33717          composeReference("basis", e);
33718      }
33719      if (element.hasPrediction()) { 
33720        for (RiskAssessment.RiskAssessmentPredictionComponent e : element.getPrediction()) 
33721          composeRiskAssessmentRiskAssessmentPredictionComponent("prediction", e);
33722      }
33723      if (element.hasMitigationElement()) {
33724        composeString("mitigation", element.getMitigationElement());
33725      }
33726      if (element.hasCommentElement()) {
33727        composeString("comment", element.getCommentElement());
33728      }
33729  }
33730
33731  protected void composeRiskAssessmentRiskAssessmentPredictionComponent(String name, RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
33732    if (element != null) {
33733      composeElementAttributes(element);
33734      xml.enter(FHIR_NS, name);
33735      composeRiskAssessmentRiskAssessmentPredictionComponentElements(element);
33736      composeElementClose(element);
33737      xml.exit(FHIR_NS, name);
33738    }
33739  }
33740
33741  protected void composeRiskAssessmentRiskAssessmentPredictionComponentElements(RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
33742      composeBackboneElements(element);
33743      if (element.hasOutcome()) {
33744        composeCodeableConcept("outcome", element.getOutcome());
33745      }
33746      if (element.hasProbability()) {
33747        composeType("probability", element.getProbability());
33748      }      if (element.hasQualitativeRisk()) {
33749        composeCodeableConcept("qualitativeRisk", element.getQualitativeRisk());
33750      }
33751      if (element.hasRelativeRiskElement()) {
33752        composeDecimal("relativeRisk", element.getRelativeRiskElement());
33753      }
33754      if (element.hasWhen()) {
33755        composeType("when", element.getWhen());
33756      }      if (element.hasRationaleElement()) {
33757        composeString("rationale", element.getRationaleElement());
33758      }
33759  }
33760
33761  protected void composeSchedule(String name, Schedule element) throws IOException {
33762    if (element != null) {
33763      composeDomainResourceAttributes(element);
33764      xml.enter(FHIR_NS, name);
33765      composeScheduleElements(element);
33766      composeElementClose(element);
33767      xml.exit(FHIR_NS, name);
33768    }
33769  }
33770
33771  protected void composeScheduleElements(Schedule element) throws IOException {
33772      composeDomainResourceElements(element);
33773      if (element.hasIdentifier()) { 
33774        for (Identifier e : element.getIdentifier()) 
33775          composeIdentifier("identifier", e);
33776      }
33777      if (element.hasActiveElement()) {
33778        composeBoolean("active", element.getActiveElement());
33779      }
33780      if (element.hasServiceCategory()) {
33781        composeCodeableConcept("serviceCategory", element.getServiceCategory());
33782      }
33783      if (element.hasServiceType()) { 
33784        for (CodeableConcept e : element.getServiceType()) 
33785          composeCodeableConcept("serviceType", e);
33786      }
33787      if (element.hasSpecialty()) { 
33788        for (CodeableConcept e : element.getSpecialty()) 
33789          composeCodeableConcept("specialty", e);
33790      }
33791      if (element.hasActor()) { 
33792        for (Reference e : element.getActor()) 
33793          composeReference("actor", e);
33794      }
33795      if (element.hasPlanningHorizon()) {
33796        composePeriod("planningHorizon", element.getPlanningHorizon());
33797      }
33798      if (element.hasCommentElement()) {
33799        composeString("comment", element.getCommentElement());
33800      }
33801  }
33802
33803  protected void composeSearchParameter(String name, SearchParameter element) throws IOException {
33804    if (element != null) {
33805      composeDomainResourceAttributes(element);
33806      xml.enter(FHIR_NS, name);
33807      composeSearchParameterElements(element);
33808      composeElementClose(element);
33809      xml.exit(FHIR_NS, name);
33810    }
33811  }
33812
33813  protected void composeSearchParameterElements(SearchParameter element) throws IOException {
33814      composeDomainResourceElements(element);
33815      if (element.hasUrlElement()) {
33816        composeUri("url", element.getUrlElement());
33817      }
33818      if (element.hasVersionElement()) {
33819        composeString("version", element.getVersionElement());
33820      }
33821      if (element.hasNameElement()) {
33822        composeString("name", element.getNameElement());
33823      }
33824      if (element.hasStatusElement())
33825        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
33826      if (element.hasExperimentalElement()) {
33827        composeBoolean("experimental", element.getExperimentalElement());
33828      }
33829      if (element.hasDateElement()) {
33830        composeDateTime("date", element.getDateElement());
33831      }
33832      if (element.hasPublisherElement()) {
33833        composeString("publisher", element.getPublisherElement());
33834      }
33835      if (element.hasContact()) { 
33836        for (ContactDetail e : element.getContact()) 
33837          composeContactDetail("contact", e);
33838      }
33839      if (element.hasUseContext()) { 
33840        for (UsageContext e : element.getUseContext()) 
33841          composeUsageContext("useContext", e);
33842      }
33843      if (element.hasJurisdiction()) { 
33844        for (CodeableConcept e : element.getJurisdiction()) 
33845          composeCodeableConcept("jurisdiction", e);
33846      }
33847      if (element.hasPurposeElement()) {
33848        composeMarkdown("purpose", element.getPurposeElement());
33849      }
33850      if (element.hasCodeElement()) {
33851        composeCode("code", element.getCodeElement());
33852      }
33853      if (element.hasBase()) { 
33854        for (CodeType e : element.getBase()) 
33855          composeCode("base", e);
33856      }
33857      if (element.hasTypeElement())
33858        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
33859      if (element.hasDerivedFromElement()) {
33860        composeUri("derivedFrom", element.getDerivedFromElement());
33861      }
33862      if (element.hasDescriptionElement()) {
33863        composeMarkdown("description", element.getDescriptionElement());
33864      }
33865      if (element.hasExpressionElement()) {
33866        composeString("expression", element.getExpressionElement());
33867      }
33868      if (element.hasXpathElement()) {
33869        composeString("xpath", element.getXpathElement());
33870      }
33871      if (element.hasXpathUsageElement())
33872        composeEnumeration("xpathUsage", element.getXpathUsageElement(), new SearchParameter.XPathUsageTypeEnumFactory());
33873      if (element.hasTarget()) { 
33874        for (CodeType e : element.getTarget()) 
33875          composeCode("target", e);
33876      }
33877        if (element.hasComparator()) 
33878          for (Enumeration<SearchParameter.SearchComparator> e : element.getComparator()) 
33879            composeEnumeration("comparator", e, new SearchParameter.SearchComparatorEnumFactory());
33880        if (element.hasModifier()) 
33881          for (Enumeration<SearchParameter.SearchModifierCode> e : element.getModifier()) 
33882            composeEnumeration("modifier", e, new SearchParameter.SearchModifierCodeEnumFactory());
33883      if (element.hasChain()) { 
33884        for (StringType e : element.getChain()) 
33885          composeString("chain", e);
33886      }
33887      if (element.hasComponent()) { 
33888        for (SearchParameter.SearchParameterComponentComponent e : element.getComponent()) 
33889          composeSearchParameterSearchParameterComponentComponent("component", e);
33890      }
33891  }
33892
33893  protected void composeSearchParameterSearchParameterComponentComponent(String name, SearchParameter.SearchParameterComponentComponent element) throws IOException {
33894    if (element != null) {
33895      composeElementAttributes(element);
33896      xml.enter(FHIR_NS, name);
33897      composeSearchParameterSearchParameterComponentComponentElements(element);
33898      composeElementClose(element);
33899      xml.exit(FHIR_NS, name);
33900    }
33901  }
33902
33903  protected void composeSearchParameterSearchParameterComponentComponentElements(SearchParameter.SearchParameterComponentComponent element) throws IOException {
33904      composeBackboneElements(element);
33905      if (element.hasDefinition()) {
33906        composeReference("definition", element.getDefinition());
33907      }
33908      if (element.hasExpressionElement()) {
33909        composeString("expression", element.getExpressionElement());
33910      }
33911  }
33912
33913  protected void composeSequence(String name, Sequence element) throws IOException {
33914    if (element != null) {
33915      composeDomainResourceAttributes(element);
33916      xml.enter(FHIR_NS, name);
33917      composeSequenceElements(element);
33918      composeElementClose(element);
33919      xml.exit(FHIR_NS, name);
33920    }
33921  }
33922
33923  protected void composeSequenceElements(Sequence element) throws IOException {
33924      composeDomainResourceElements(element);
33925      if (element.hasIdentifier()) { 
33926        for (Identifier e : element.getIdentifier()) 
33927          composeIdentifier("identifier", e);
33928      }
33929      if (element.hasTypeElement())
33930        composeEnumeration("type", element.getTypeElement(), new Sequence.SequenceTypeEnumFactory());
33931      if (element.hasCoordinateSystemElement()) {
33932        composeInteger("coordinateSystem", element.getCoordinateSystemElement());
33933      }
33934      if (element.hasPatient()) {
33935        composeReference("patient", element.getPatient());
33936      }
33937      if (element.hasSpecimen()) {
33938        composeReference("specimen", element.getSpecimen());
33939      }
33940      if (element.hasDevice()) {
33941        composeReference("device", element.getDevice());
33942      }
33943      if (element.hasPerformer()) {
33944        composeReference("performer", element.getPerformer());
33945      }
33946      if (element.hasQuantity()) {
33947        composeQuantity("quantity", element.getQuantity());
33948      }
33949      if (element.hasReferenceSeq()) {
33950        composeSequenceSequenceReferenceSeqComponent("referenceSeq", element.getReferenceSeq());
33951      }
33952      if (element.hasVariant()) { 
33953        for (Sequence.SequenceVariantComponent e : element.getVariant()) 
33954          composeSequenceSequenceVariantComponent("variant", e);
33955      }
33956      if (element.hasObservedSeqElement()) {
33957        composeString("observedSeq", element.getObservedSeqElement());
33958      }
33959      if (element.hasQuality()) { 
33960        for (Sequence.SequenceQualityComponent e : element.getQuality()) 
33961          composeSequenceSequenceQualityComponent("quality", e);
33962      }
33963      if (element.hasReadCoverageElement()) {
33964        composeInteger("readCoverage", element.getReadCoverageElement());
33965      }
33966      if (element.hasRepository()) { 
33967        for (Sequence.SequenceRepositoryComponent e : element.getRepository()) 
33968          composeSequenceSequenceRepositoryComponent("repository", e);
33969      }
33970      if (element.hasPointer()) { 
33971        for (Reference e : element.getPointer()) 
33972          composeReference("pointer", e);
33973      }
33974  }
33975
33976  protected void composeSequenceSequenceReferenceSeqComponent(String name, Sequence.SequenceReferenceSeqComponent element) throws IOException {
33977    if (element != null) {
33978      composeElementAttributes(element);
33979      xml.enter(FHIR_NS, name);
33980      composeSequenceSequenceReferenceSeqComponentElements(element);
33981      composeElementClose(element);
33982      xml.exit(FHIR_NS, name);
33983    }
33984  }
33985
33986  protected void composeSequenceSequenceReferenceSeqComponentElements(Sequence.SequenceReferenceSeqComponent element) throws IOException {
33987      composeBackboneElements(element);
33988      if (element.hasChromosome()) {
33989        composeCodeableConcept("chromosome", element.getChromosome());
33990      }
33991      if (element.hasGenomeBuildElement()) {
33992        composeString("genomeBuild", element.getGenomeBuildElement());
33993      }
33994      if (element.hasReferenceSeqId()) {
33995        composeCodeableConcept("referenceSeqId", element.getReferenceSeqId());
33996      }
33997      if (element.hasReferenceSeqPointer()) {
33998        composeReference("referenceSeqPointer", element.getReferenceSeqPointer());
33999      }
34000      if (element.hasReferenceSeqStringElement()) {
34001        composeString("referenceSeqString", element.getReferenceSeqStringElement());
34002      }
34003      if (element.hasStrandElement()) {
34004        composeInteger("strand", element.getStrandElement());
34005      }
34006      if (element.hasWindowStartElement()) {
34007        composeInteger("windowStart", element.getWindowStartElement());
34008      }
34009      if (element.hasWindowEndElement()) {
34010        composeInteger("windowEnd", element.getWindowEndElement());
34011      }
34012  }
34013
34014  protected void composeSequenceSequenceVariantComponent(String name, Sequence.SequenceVariantComponent element) throws IOException {
34015    if (element != null) {
34016      composeElementAttributes(element);
34017      xml.enter(FHIR_NS, name);
34018      composeSequenceSequenceVariantComponentElements(element);
34019      composeElementClose(element);
34020      xml.exit(FHIR_NS, name);
34021    }
34022  }
34023
34024  protected void composeSequenceSequenceVariantComponentElements(Sequence.SequenceVariantComponent element) throws IOException {
34025      composeBackboneElements(element);
34026      if (element.hasStartElement()) {
34027        composeInteger("start", element.getStartElement());
34028      }
34029      if (element.hasEndElement()) {
34030        composeInteger("end", element.getEndElement());
34031      }
34032      if (element.hasObservedAlleleElement()) {
34033        composeString("observedAllele", element.getObservedAlleleElement());
34034      }
34035      if (element.hasReferenceAlleleElement()) {
34036        composeString("referenceAllele", element.getReferenceAlleleElement());
34037      }
34038      if (element.hasCigarElement()) {
34039        composeString("cigar", element.getCigarElement());
34040      }
34041      if (element.hasVariantPointer()) {
34042        composeReference("variantPointer", element.getVariantPointer());
34043      }
34044  }
34045
34046  protected void composeSequenceSequenceQualityComponent(String name, Sequence.SequenceQualityComponent element) throws IOException {
34047    if (element != null) {
34048      composeElementAttributes(element);
34049      xml.enter(FHIR_NS, name);
34050      composeSequenceSequenceQualityComponentElements(element);
34051      composeElementClose(element);
34052      xml.exit(FHIR_NS, name);
34053    }
34054  }
34055
34056  protected void composeSequenceSequenceQualityComponentElements(Sequence.SequenceQualityComponent element) throws IOException {
34057      composeBackboneElements(element);
34058      if (element.hasTypeElement())
34059        composeEnumeration("type", element.getTypeElement(), new Sequence.QualityTypeEnumFactory());
34060      if (element.hasStandardSequence()) {
34061        composeCodeableConcept("standardSequence", element.getStandardSequence());
34062      }
34063      if (element.hasStartElement()) {
34064        composeInteger("start", element.getStartElement());
34065      }
34066      if (element.hasEndElement()) {
34067        composeInteger("end", element.getEndElement());
34068      }
34069      if (element.hasScore()) {
34070        composeQuantity("score", element.getScore());
34071      }
34072      if (element.hasMethod()) {
34073        composeCodeableConcept("method", element.getMethod());
34074      }
34075      if (element.hasTruthTPElement()) {
34076        composeDecimal("truthTP", element.getTruthTPElement());
34077      }
34078      if (element.hasQueryTPElement()) {
34079        composeDecimal("queryTP", element.getQueryTPElement());
34080      }
34081      if (element.hasTruthFNElement()) {
34082        composeDecimal("truthFN", element.getTruthFNElement());
34083      }
34084      if (element.hasQueryFPElement()) {
34085        composeDecimal("queryFP", element.getQueryFPElement());
34086      }
34087      if (element.hasGtFPElement()) {
34088        composeDecimal("gtFP", element.getGtFPElement());
34089      }
34090      if (element.hasPrecisionElement()) {
34091        composeDecimal("precision", element.getPrecisionElement());
34092      }
34093      if (element.hasRecallElement()) {
34094        composeDecimal("recall", element.getRecallElement());
34095      }
34096      if (element.hasFScoreElement()) {
34097        composeDecimal("fScore", element.getFScoreElement());
34098      }
34099  }
34100
34101  protected void composeSequenceSequenceRepositoryComponent(String name, Sequence.SequenceRepositoryComponent element) throws IOException {
34102    if (element != null) {
34103      composeElementAttributes(element);
34104      xml.enter(FHIR_NS, name);
34105      composeSequenceSequenceRepositoryComponentElements(element);
34106      composeElementClose(element);
34107      xml.exit(FHIR_NS, name);
34108    }
34109  }
34110
34111  protected void composeSequenceSequenceRepositoryComponentElements(Sequence.SequenceRepositoryComponent element) throws IOException {
34112      composeBackboneElements(element);
34113      if (element.hasTypeElement())
34114        composeEnumeration("type", element.getTypeElement(), new Sequence.RepositoryTypeEnumFactory());
34115      if (element.hasUrlElement()) {
34116        composeUri("url", element.getUrlElement());
34117      }
34118      if (element.hasNameElement()) {
34119        composeString("name", element.getNameElement());
34120      }
34121      if (element.hasDatasetIdElement()) {
34122        composeString("datasetId", element.getDatasetIdElement());
34123      }
34124      if (element.hasVariantsetIdElement()) {
34125        composeString("variantsetId", element.getVariantsetIdElement());
34126      }
34127      if (element.hasReadsetIdElement()) {
34128        composeString("readsetId", element.getReadsetIdElement());
34129      }
34130  }
34131
34132  protected void composeServiceDefinition(String name, ServiceDefinition element) throws IOException {
34133    if (element != null) {
34134      composeDomainResourceAttributes(element);
34135      xml.enter(FHIR_NS, name);
34136      composeServiceDefinitionElements(element);
34137      composeElementClose(element);
34138      xml.exit(FHIR_NS, name);
34139    }
34140  }
34141
34142  protected void composeServiceDefinitionElements(ServiceDefinition element) throws IOException {
34143      composeDomainResourceElements(element);
34144      if (element.hasUrlElement()) {
34145        composeUri("url", element.getUrlElement());
34146      }
34147      if (element.hasIdentifier()) { 
34148        for (Identifier e : element.getIdentifier()) 
34149          composeIdentifier("identifier", e);
34150      }
34151      if (element.hasVersionElement()) {
34152        composeString("version", element.getVersionElement());
34153      }
34154      if (element.hasNameElement()) {
34155        composeString("name", element.getNameElement());
34156      }
34157      if (element.hasTitleElement()) {
34158        composeString("title", element.getTitleElement());
34159      }
34160      if (element.hasStatusElement())
34161        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34162      if (element.hasExperimentalElement()) {
34163        composeBoolean("experimental", element.getExperimentalElement());
34164      }
34165      if (element.hasDateElement()) {
34166        composeDateTime("date", element.getDateElement());
34167      }
34168      if (element.hasPublisherElement()) {
34169        composeString("publisher", element.getPublisherElement());
34170      }
34171      if (element.hasDescriptionElement()) {
34172        composeMarkdown("description", element.getDescriptionElement());
34173      }
34174      if (element.hasPurposeElement()) {
34175        composeMarkdown("purpose", element.getPurposeElement());
34176      }
34177      if (element.hasUsageElement()) {
34178        composeString("usage", element.getUsageElement());
34179      }
34180      if (element.hasApprovalDateElement()) {
34181        composeDate("approvalDate", element.getApprovalDateElement());
34182      }
34183      if (element.hasLastReviewDateElement()) {
34184        composeDate("lastReviewDate", element.getLastReviewDateElement());
34185      }
34186      if (element.hasEffectivePeriod()) {
34187        composePeriod("effectivePeriod", element.getEffectivePeriod());
34188      }
34189      if (element.hasUseContext()) { 
34190        for (UsageContext e : element.getUseContext()) 
34191          composeUsageContext("useContext", e);
34192      }
34193      if (element.hasJurisdiction()) { 
34194        for (CodeableConcept e : element.getJurisdiction()) 
34195          composeCodeableConcept("jurisdiction", e);
34196      }
34197      if (element.hasTopic()) { 
34198        for (CodeableConcept e : element.getTopic()) 
34199          composeCodeableConcept("topic", e);
34200      }
34201      if (element.hasContributor()) { 
34202        for (Contributor e : element.getContributor()) 
34203          composeContributor("contributor", e);
34204      }
34205      if (element.hasContact()) { 
34206        for (ContactDetail e : element.getContact()) 
34207          composeContactDetail("contact", e);
34208      }
34209      if (element.hasCopyrightElement()) {
34210        composeMarkdown("copyright", element.getCopyrightElement());
34211      }
34212      if (element.hasRelatedArtifact()) { 
34213        for (RelatedArtifact e : element.getRelatedArtifact()) 
34214          composeRelatedArtifact("relatedArtifact", e);
34215      }
34216      if (element.hasTrigger()) { 
34217        for (TriggerDefinition e : element.getTrigger()) 
34218          composeTriggerDefinition("trigger", e);
34219      }
34220      if (element.hasDataRequirement()) { 
34221        for (DataRequirement e : element.getDataRequirement()) 
34222          composeDataRequirement("dataRequirement", e);
34223      }
34224      if (element.hasOperationDefinition()) {
34225        composeReference("operationDefinition", element.getOperationDefinition());
34226      }
34227  }
34228
34229  protected void composeSlot(String name, Slot element) throws IOException {
34230    if (element != null) {
34231      composeDomainResourceAttributes(element);
34232      xml.enter(FHIR_NS, name);
34233      composeSlotElements(element);
34234      composeElementClose(element);
34235      xml.exit(FHIR_NS, name);
34236    }
34237  }
34238
34239  protected void composeSlotElements(Slot element) throws IOException {
34240      composeDomainResourceElements(element);
34241      if (element.hasIdentifier()) { 
34242        for (Identifier e : element.getIdentifier()) 
34243          composeIdentifier("identifier", e);
34244      }
34245      if (element.hasServiceCategory()) {
34246        composeCodeableConcept("serviceCategory", element.getServiceCategory());
34247      }
34248      if (element.hasServiceType()) { 
34249        for (CodeableConcept e : element.getServiceType()) 
34250          composeCodeableConcept("serviceType", e);
34251      }
34252      if (element.hasSpecialty()) { 
34253        for (CodeableConcept e : element.getSpecialty()) 
34254          composeCodeableConcept("specialty", e);
34255      }
34256      if (element.hasAppointmentType()) {
34257        composeCodeableConcept("appointmentType", element.getAppointmentType());
34258      }
34259      if (element.hasSchedule()) {
34260        composeReference("schedule", element.getSchedule());
34261      }
34262      if (element.hasStatusElement())
34263        composeEnumeration("status", element.getStatusElement(), new Slot.SlotStatusEnumFactory());
34264      if (element.hasStartElement()) {
34265        composeInstant("start", element.getStartElement());
34266      }
34267      if (element.hasEndElement()) {
34268        composeInstant("end", element.getEndElement());
34269      }
34270      if (element.hasOverbookedElement()) {
34271        composeBoolean("overbooked", element.getOverbookedElement());
34272      }
34273      if (element.hasCommentElement()) {
34274        composeString("comment", element.getCommentElement());
34275      }
34276  }
34277
34278  protected void composeSpecimen(String name, Specimen element) throws IOException {
34279    if (element != null) {
34280      composeDomainResourceAttributes(element);
34281      xml.enter(FHIR_NS, name);
34282      composeSpecimenElements(element);
34283      composeElementClose(element);
34284      xml.exit(FHIR_NS, name);
34285    }
34286  }
34287
34288  protected void composeSpecimenElements(Specimen element) throws IOException {
34289      composeDomainResourceElements(element);
34290      if (element.hasIdentifier()) { 
34291        for (Identifier e : element.getIdentifier()) 
34292          composeIdentifier("identifier", e);
34293      }
34294      if (element.hasAccessionIdentifier()) {
34295        composeIdentifier("accessionIdentifier", element.getAccessionIdentifier());
34296      }
34297      if (element.hasStatusElement())
34298        composeEnumeration("status", element.getStatusElement(), new Specimen.SpecimenStatusEnumFactory());
34299      if (element.hasType()) {
34300        composeCodeableConcept("type", element.getType());
34301      }
34302      if (element.hasSubject()) {
34303        composeReference("subject", element.getSubject());
34304      }
34305      if (element.hasReceivedTimeElement()) {
34306        composeDateTime("receivedTime", element.getReceivedTimeElement());
34307      }
34308      if (element.hasParent()) { 
34309        for (Reference e : element.getParent()) 
34310          composeReference("parent", e);
34311      }
34312      if (element.hasRequest()) { 
34313        for (Reference e : element.getRequest()) 
34314          composeReference("request", e);
34315      }
34316      if (element.hasCollection()) {
34317        composeSpecimenSpecimenCollectionComponent("collection", element.getCollection());
34318      }
34319      if (element.hasProcessing()) { 
34320        for (Specimen.SpecimenProcessingComponent e : element.getProcessing()) 
34321          composeSpecimenSpecimenProcessingComponent("processing", e);
34322      }
34323      if (element.hasContainer()) { 
34324        for (Specimen.SpecimenContainerComponent e : element.getContainer()) 
34325          composeSpecimenSpecimenContainerComponent("container", e);
34326      }
34327      if (element.hasNote()) { 
34328        for (Annotation e : element.getNote()) 
34329          composeAnnotation("note", e);
34330      }
34331  }
34332
34333  protected void composeSpecimenSpecimenCollectionComponent(String name, Specimen.SpecimenCollectionComponent element) throws IOException {
34334    if (element != null) {
34335      composeElementAttributes(element);
34336      xml.enter(FHIR_NS, name);
34337      composeSpecimenSpecimenCollectionComponentElements(element);
34338      composeElementClose(element);
34339      xml.exit(FHIR_NS, name);
34340    }
34341  }
34342
34343  protected void composeSpecimenSpecimenCollectionComponentElements(Specimen.SpecimenCollectionComponent element) throws IOException {
34344      composeBackboneElements(element);
34345      if (element.hasCollector()) {
34346        composeReference("collector", element.getCollector());
34347      }
34348      if (element.hasCollected()) {
34349        composeType("collected", element.getCollected());
34350      }      if (element.hasQuantity()) {
34351        composeSimpleQuantity("quantity", element.getQuantity());
34352      }
34353      if (element.hasMethod()) {
34354        composeCodeableConcept("method", element.getMethod());
34355      }
34356      if (element.hasBodySite()) {
34357        composeCodeableConcept("bodySite", element.getBodySite());
34358      }
34359  }
34360
34361  protected void composeSpecimenSpecimenProcessingComponent(String name, Specimen.SpecimenProcessingComponent element) throws IOException {
34362    if (element != null) {
34363      composeElementAttributes(element);
34364      xml.enter(FHIR_NS, name);
34365      composeSpecimenSpecimenProcessingComponentElements(element);
34366      composeElementClose(element);
34367      xml.exit(FHIR_NS, name);
34368    }
34369  }
34370
34371  protected void composeSpecimenSpecimenProcessingComponentElements(Specimen.SpecimenProcessingComponent element) throws IOException {
34372      composeBackboneElements(element);
34373      if (element.hasDescriptionElement()) {
34374        composeString("description", element.getDescriptionElement());
34375      }
34376      if (element.hasProcedure()) {
34377        composeCodeableConcept("procedure", element.getProcedure());
34378      }
34379      if (element.hasAdditive()) { 
34380        for (Reference e : element.getAdditive()) 
34381          composeReference("additive", e);
34382      }
34383      if (element.hasTime()) {
34384        composeType("time", element.getTime());
34385      }  }
34386
34387  protected void composeSpecimenSpecimenContainerComponent(String name, Specimen.SpecimenContainerComponent element) throws IOException {
34388    if (element != null) {
34389      composeElementAttributes(element);
34390      xml.enter(FHIR_NS, name);
34391      composeSpecimenSpecimenContainerComponentElements(element);
34392      composeElementClose(element);
34393      xml.exit(FHIR_NS, name);
34394    }
34395  }
34396
34397  protected void composeSpecimenSpecimenContainerComponentElements(Specimen.SpecimenContainerComponent element) throws IOException {
34398      composeBackboneElements(element);
34399      if (element.hasIdentifier()) { 
34400        for (Identifier e : element.getIdentifier()) 
34401          composeIdentifier("identifier", e);
34402      }
34403      if (element.hasDescriptionElement()) {
34404        composeString("description", element.getDescriptionElement());
34405      }
34406      if (element.hasType()) {
34407        composeCodeableConcept("type", element.getType());
34408      }
34409      if (element.hasCapacity()) {
34410        composeSimpleQuantity("capacity", element.getCapacity());
34411      }
34412      if (element.hasSpecimenQuantity()) {
34413        composeSimpleQuantity("specimenQuantity", element.getSpecimenQuantity());
34414      }
34415      if (element.hasAdditive()) {
34416        composeType("additive", element.getAdditive());
34417      }  }
34418
34419  protected void composeStructureDefinition(String name, StructureDefinition element) throws IOException {
34420    if (element != null) {
34421      composeDomainResourceAttributes(element);
34422      xml.enter(FHIR_NS, name);
34423      composeStructureDefinitionElements(element);
34424      composeElementClose(element);
34425      xml.exit(FHIR_NS, name);
34426    }
34427  }
34428
34429  protected void composeStructureDefinitionElements(StructureDefinition element) throws IOException {
34430      composeDomainResourceElements(element);
34431      if (element.hasUrlElement()) {
34432        composeUri("url", element.getUrlElement());
34433      }
34434      if (element.hasIdentifier()) { 
34435        for (Identifier e : element.getIdentifier()) 
34436          composeIdentifier("identifier", e);
34437      }
34438      if (element.hasVersionElement()) {
34439        composeString("version", element.getVersionElement());
34440      }
34441      if (element.hasNameElement()) {
34442        composeString("name", element.getNameElement());
34443      }
34444      if (element.hasTitleElement()) {
34445        composeString("title", element.getTitleElement());
34446      }
34447      if (element.hasStatusElement())
34448        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34449      if (element.hasExperimentalElement()) {
34450        composeBoolean("experimental", element.getExperimentalElement());
34451      }
34452      if (element.hasDateElement()) {
34453        composeDateTime("date", element.getDateElement());
34454      }
34455      if (element.hasPublisherElement()) {
34456        composeString("publisher", element.getPublisherElement());
34457      }
34458      if (element.hasContact()) { 
34459        for (ContactDetail e : element.getContact()) 
34460          composeContactDetail("contact", e);
34461      }
34462      if (element.hasDescriptionElement()) {
34463        composeMarkdown("description", element.getDescriptionElement());
34464      }
34465      if (element.hasUseContext()) { 
34466        for (UsageContext e : element.getUseContext()) 
34467          composeUsageContext("useContext", e);
34468      }
34469      if (element.hasJurisdiction()) { 
34470        for (CodeableConcept e : element.getJurisdiction()) 
34471          composeCodeableConcept("jurisdiction", e);
34472      }
34473      if (element.hasPurposeElement()) {
34474        composeMarkdown("purpose", element.getPurposeElement());
34475      }
34476      if (element.hasCopyrightElement()) {
34477        composeMarkdown("copyright", element.getCopyrightElement());
34478      }
34479      if (element.hasKeyword()) { 
34480        for (Coding e : element.getKeyword()) 
34481          composeCoding("keyword", e);
34482      }
34483      if (element.hasFhirVersionElement()) {
34484        composeId("fhirVersion", element.getFhirVersionElement());
34485      }
34486      if (element.hasMapping()) { 
34487        for (StructureDefinition.StructureDefinitionMappingComponent e : element.getMapping()) 
34488          composeStructureDefinitionStructureDefinitionMappingComponent("mapping", e);
34489      }
34490      if (element.hasKindElement())
34491        composeEnumeration("kind", element.getKindElement(), new StructureDefinition.StructureDefinitionKindEnumFactory());
34492      if (element.hasAbstractElement()) {
34493        composeBoolean("abstract", element.getAbstractElement());
34494      }
34495      if (element.hasContextTypeElement())
34496        composeEnumeration("contextType", element.getContextTypeElement(), new StructureDefinition.ExtensionContextEnumFactory());
34497      if (element.hasContext()) { 
34498        for (StringType e : element.getContext()) 
34499          composeString("context", e);
34500      }
34501      if (element.hasContextInvariant()) { 
34502        for (StringType e : element.getContextInvariant()) 
34503          composeString("contextInvariant", e);
34504      }
34505      if (element.hasTypeElement()) {
34506        composeCode("type", element.getTypeElement());
34507      }
34508      if (element.hasBaseDefinitionElement()) {
34509        composeUri("baseDefinition", element.getBaseDefinitionElement());
34510      }
34511      if (element.hasDerivationElement())
34512        composeEnumeration("derivation", element.getDerivationElement(), new StructureDefinition.TypeDerivationRuleEnumFactory());
34513      if (element.hasSnapshot()) {
34514        composeStructureDefinitionStructureDefinitionSnapshotComponent("snapshot", element.getSnapshot());
34515      }
34516      if (element.hasDifferential()) {
34517        composeStructureDefinitionStructureDefinitionDifferentialComponent("differential", element.getDifferential());
34518      }
34519  }
34520
34521  protected void composeStructureDefinitionStructureDefinitionMappingComponent(String name, StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
34522    if (element != null) {
34523      composeElementAttributes(element);
34524      xml.enter(FHIR_NS, name);
34525      composeStructureDefinitionStructureDefinitionMappingComponentElements(element);
34526      composeElementClose(element);
34527      xml.exit(FHIR_NS, name);
34528    }
34529  }
34530
34531  protected void composeStructureDefinitionStructureDefinitionMappingComponentElements(StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
34532      composeBackboneElements(element);
34533      if (element.hasIdentityElement()) {
34534        composeId("identity", element.getIdentityElement());
34535      }
34536      if (element.hasUriElement()) {
34537        composeUri("uri", element.getUriElement());
34538      }
34539      if (element.hasNameElement()) {
34540        composeString("name", element.getNameElement());
34541      }
34542      if (element.hasCommentElement()) {
34543        composeString("comment", element.getCommentElement());
34544      }
34545  }
34546
34547  protected void composeStructureDefinitionStructureDefinitionSnapshotComponent(String name, StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
34548    if (element != null) {
34549      composeElementAttributes(element);
34550      xml.enter(FHIR_NS, name);
34551      composeStructureDefinitionStructureDefinitionSnapshotComponentElements(element);
34552      composeElementClose(element);
34553      xml.exit(FHIR_NS, name);
34554    }
34555  }
34556
34557  protected void composeStructureDefinitionStructureDefinitionSnapshotComponentElements(StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
34558      composeBackboneElements(element);
34559      if (element.hasElement()) { 
34560        for (ElementDefinition e : element.getElement()) 
34561          composeElementDefinition("element", e);
34562      }
34563  }
34564
34565  protected void composeStructureDefinitionStructureDefinitionDifferentialComponent(String name, StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
34566    if (element != null) {
34567      composeElementAttributes(element);
34568      xml.enter(FHIR_NS, name);
34569      composeStructureDefinitionStructureDefinitionDifferentialComponentElements(element);
34570      composeElementClose(element);
34571      xml.exit(FHIR_NS, name);
34572    }
34573  }
34574
34575  protected void composeStructureDefinitionStructureDefinitionDifferentialComponentElements(StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
34576      composeBackboneElements(element);
34577      if (element.hasElement()) { 
34578        for (ElementDefinition e : element.getElement()) 
34579          composeElementDefinition("element", e);
34580      }
34581  }
34582
34583  protected void composeStructureMap(String name, StructureMap element) throws IOException {
34584    if (element != null) {
34585      composeDomainResourceAttributes(element);
34586      xml.enter(FHIR_NS, name);
34587      composeStructureMapElements(element);
34588      composeElementClose(element);
34589      xml.exit(FHIR_NS, name);
34590    }
34591  }
34592
34593  protected void composeStructureMapElements(StructureMap element) throws IOException {
34594      composeDomainResourceElements(element);
34595      if (element.hasUrlElement()) {
34596        composeUri("url", element.getUrlElement());
34597      }
34598      if (element.hasIdentifier()) { 
34599        for (Identifier e : element.getIdentifier()) 
34600          composeIdentifier("identifier", e);
34601      }
34602      if (element.hasVersionElement()) {
34603        composeString("version", element.getVersionElement());
34604      }
34605      if (element.hasNameElement()) {
34606        composeString("name", element.getNameElement());
34607      }
34608      if (element.hasTitleElement()) {
34609        composeString("title", element.getTitleElement());
34610      }
34611      if (element.hasStatusElement())
34612        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34613      if (element.hasExperimentalElement()) {
34614        composeBoolean("experimental", element.getExperimentalElement());
34615      }
34616      if (element.hasDateElement()) {
34617        composeDateTime("date", element.getDateElement());
34618      }
34619      if (element.hasPublisherElement()) {
34620        composeString("publisher", element.getPublisherElement());
34621      }
34622      if (element.hasContact()) { 
34623        for (ContactDetail e : element.getContact()) 
34624          composeContactDetail("contact", e);
34625      }
34626      if (element.hasDescriptionElement()) {
34627        composeMarkdown("description", element.getDescriptionElement());
34628      }
34629      if (element.hasUseContext()) { 
34630        for (UsageContext e : element.getUseContext()) 
34631          composeUsageContext("useContext", e);
34632      }
34633      if (element.hasJurisdiction()) { 
34634        for (CodeableConcept e : element.getJurisdiction()) 
34635          composeCodeableConcept("jurisdiction", e);
34636      }
34637      if (element.hasPurposeElement()) {
34638        composeMarkdown("purpose", element.getPurposeElement());
34639      }
34640      if (element.hasCopyrightElement()) {
34641        composeMarkdown("copyright", element.getCopyrightElement());
34642      }
34643      if (element.hasStructure()) { 
34644        for (StructureMap.StructureMapStructureComponent e : element.getStructure()) 
34645          composeStructureMapStructureMapStructureComponent("structure", e);
34646      }
34647      if (element.hasImport()) { 
34648        for (UriType e : element.getImport()) 
34649          composeUri("import", e);
34650      }
34651      if (element.hasGroup()) { 
34652        for (StructureMap.StructureMapGroupComponent e : element.getGroup()) 
34653          composeStructureMapStructureMapGroupComponent("group", e);
34654      }
34655  }
34656
34657  protected void composeStructureMapStructureMapStructureComponent(String name, StructureMap.StructureMapStructureComponent element) throws IOException {
34658    if (element != null) {
34659      composeElementAttributes(element);
34660      xml.enter(FHIR_NS, name);
34661      composeStructureMapStructureMapStructureComponentElements(element);
34662      composeElementClose(element);
34663      xml.exit(FHIR_NS, name);
34664    }
34665  }
34666
34667  protected void composeStructureMapStructureMapStructureComponentElements(StructureMap.StructureMapStructureComponent element) throws IOException {
34668      composeBackboneElements(element);
34669      if (element.hasUrlElement()) {
34670        composeUri("url", element.getUrlElement());
34671      }
34672      if (element.hasModeElement())
34673        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapModelModeEnumFactory());
34674      if (element.hasAliasElement()) {
34675        composeString("alias", element.getAliasElement());
34676      }
34677      if (element.hasDocumentationElement()) {
34678        composeString("documentation", element.getDocumentationElement());
34679      }
34680  }
34681
34682  protected void composeStructureMapStructureMapGroupComponent(String name, StructureMap.StructureMapGroupComponent element) throws IOException {
34683    if (element != null) {
34684      composeElementAttributes(element);
34685      xml.enter(FHIR_NS, name);
34686      composeStructureMapStructureMapGroupComponentElements(element);
34687      composeElementClose(element);
34688      xml.exit(FHIR_NS, name);
34689    }
34690  }
34691
34692  protected void composeStructureMapStructureMapGroupComponentElements(StructureMap.StructureMapGroupComponent element) throws IOException {
34693      composeBackboneElements(element);
34694      if (element.hasNameElement()) {
34695        composeId("name", element.getNameElement());
34696      }
34697      if (element.hasExtendsElement()) {
34698        composeId("extends", element.getExtendsElement());
34699      }
34700      if (element.hasTypeModeElement())
34701        composeEnumeration("typeMode", element.getTypeModeElement(), new StructureMap.StructureMapGroupTypeModeEnumFactory());
34702      if (element.hasDocumentationElement()) {
34703        composeString("documentation", element.getDocumentationElement());
34704      }
34705      if (element.hasInput()) { 
34706        for (StructureMap.StructureMapGroupInputComponent e : element.getInput()) 
34707          composeStructureMapStructureMapGroupInputComponent("input", e);
34708      }
34709      if (element.hasRule()) { 
34710        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
34711          composeStructureMapStructureMapGroupRuleComponent("rule", e);
34712      }
34713  }
34714
34715  protected void composeStructureMapStructureMapGroupInputComponent(String name, StructureMap.StructureMapGroupInputComponent element) throws IOException {
34716    if (element != null) {
34717      composeElementAttributes(element);
34718      xml.enter(FHIR_NS, name);
34719      composeStructureMapStructureMapGroupInputComponentElements(element);
34720      composeElementClose(element);
34721      xml.exit(FHIR_NS, name);
34722    }
34723  }
34724
34725  protected void composeStructureMapStructureMapGroupInputComponentElements(StructureMap.StructureMapGroupInputComponent element) throws IOException {
34726      composeBackboneElements(element);
34727      if (element.hasNameElement()) {
34728        composeId("name", element.getNameElement());
34729      }
34730      if (element.hasTypeElement()) {
34731        composeString("type", element.getTypeElement());
34732      }
34733      if (element.hasModeElement())
34734        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapInputModeEnumFactory());
34735      if (element.hasDocumentationElement()) {
34736        composeString("documentation", element.getDocumentationElement());
34737      }
34738  }
34739
34740  protected void composeStructureMapStructureMapGroupRuleComponent(String name, StructureMap.StructureMapGroupRuleComponent element) throws IOException {
34741    if (element != null) {
34742      composeElementAttributes(element);
34743      xml.enter(FHIR_NS, name);
34744      composeStructureMapStructureMapGroupRuleComponentElements(element);
34745      composeElementClose(element);
34746      xml.exit(FHIR_NS, name);
34747    }
34748  }
34749
34750  protected void composeStructureMapStructureMapGroupRuleComponentElements(StructureMap.StructureMapGroupRuleComponent element) throws IOException {
34751      composeBackboneElements(element);
34752      if (element.hasNameElement()) {
34753        composeId("name", element.getNameElement());
34754      }
34755      if (element.hasSource()) { 
34756        for (StructureMap.StructureMapGroupRuleSourceComponent e : element.getSource()) 
34757          composeStructureMapStructureMapGroupRuleSourceComponent("source", e);
34758      }
34759      if (element.hasTarget()) { 
34760        for (StructureMap.StructureMapGroupRuleTargetComponent e : element.getTarget()) 
34761          composeStructureMapStructureMapGroupRuleTargetComponent("target", e);
34762      }
34763      if (element.hasRule()) { 
34764        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
34765          composeStructureMapStructureMapGroupRuleComponent("rule", e);
34766      }
34767      if (element.hasDependent()) { 
34768        for (StructureMap.StructureMapGroupRuleDependentComponent e : element.getDependent()) 
34769          composeStructureMapStructureMapGroupRuleDependentComponent("dependent", e);
34770      }
34771      if (element.hasDocumentationElement()) {
34772        composeString("documentation", element.getDocumentationElement());
34773      }
34774  }
34775
34776  protected void composeStructureMapStructureMapGroupRuleSourceComponent(String name, StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
34777    if (element != null) {
34778      composeElementAttributes(element);
34779      xml.enter(FHIR_NS, name);
34780      composeStructureMapStructureMapGroupRuleSourceComponentElements(element);
34781      composeElementClose(element);
34782      xml.exit(FHIR_NS, name);
34783    }
34784  }
34785
34786  protected void composeStructureMapStructureMapGroupRuleSourceComponentElements(StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
34787      composeBackboneElements(element);
34788      if (element.hasContextElement()) {
34789        composeId("context", element.getContextElement());
34790      }
34791      if (element.hasMinElement()) {
34792        composeInteger("min", element.getMinElement());
34793      }
34794      if (element.hasMaxElement()) {
34795        composeString("max", element.getMaxElement());
34796      }
34797      if (element.hasTypeElement()) {
34798        composeString("type", element.getTypeElement());
34799      }
34800      if (element.hasDefaultValue()) {
34801        composeType("defaultValue", element.getDefaultValue());
34802      }      if (element.hasElementElement()) {
34803        composeString("element", element.getElementElement());
34804      }
34805      if (element.hasListModeElement())
34806        composeEnumeration("listMode", element.getListModeElement(), new StructureMap.StructureMapSourceListModeEnumFactory());
34807      if (element.hasVariableElement()) {
34808        composeId("variable", element.getVariableElement());
34809      }
34810      if (element.hasConditionElement()) {
34811        composeString("condition", element.getConditionElement());
34812      }
34813      if (element.hasCheckElement()) {
34814        composeString("check", element.getCheckElement());
34815      }
34816  }
34817
34818  protected void composeStructureMapStructureMapGroupRuleTargetComponent(String name, StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
34819    if (element != null) {
34820      composeElementAttributes(element);
34821      xml.enter(FHIR_NS, name);
34822      composeStructureMapStructureMapGroupRuleTargetComponentElements(element);
34823      composeElementClose(element);
34824      xml.exit(FHIR_NS, name);
34825    }
34826  }
34827
34828  protected void composeStructureMapStructureMapGroupRuleTargetComponentElements(StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
34829      composeBackboneElements(element);
34830      if (element.hasContextElement()) {
34831        composeId("context", element.getContextElement());
34832      }
34833      if (element.hasContextTypeElement())
34834        composeEnumeration("contextType", element.getContextTypeElement(), new StructureMap.StructureMapContextTypeEnumFactory());
34835      if (element.hasElementElement()) {
34836        composeString("element", element.getElementElement());
34837      }
34838      if (element.hasVariableElement()) {
34839        composeId("variable", element.getVariableElement());
34840      }
34841        if (element.hasListMode()) 
34842          for (Enumeration<StructureMap.StructureMapTargetListMode> e : element.getListMode()) 
34843            composeEnumeration("listMode", e, new StructureMap.StructureMapTargetListModeEnumFactory());
34844      if (element.hasListRuleIdElement()) {
34845        composeId("listRuleId", element.getListRuleIdElement());
34846      }
34847      if (element.hasTransformElement())
34848        composeEnumeration("transform", element.getTransformElement(), new StructureMap.StructureMapTransformEnumFactory());
34849      if (element.hasParameter()) { 
34850        for (StructureMap.StructureMapGroupRuleTargetParameterComponent e : element.getParameter()) 
34851          composeStructureMapStructureMapGroupRuleTargetParameterComponent("parameter", e);
34852      }
34853  }
34854
34855  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponent(String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
34856    if (element != null) {
34857      composeElementAttributes(element);
34858      xml.enter(FHIR_NS, name);
34859      composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(element);
34860      composeElementClose(element);
34861      xml.exit(FHIR_NS, name);
34862    }
34863  }
34864
34865  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
34866      composeBackboneElements(element);
34867      if (element.hasValue()) {
34868        composeType("value", element.getValue());
34869      }  }
34870
34871  protected void composeStructureMapStructureMapGroupRuleDependentComponent(String name, StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
34872    if (element != null) {
34873      composeElementAttributes(element);
34874      xml.enter(FHIR_NS, name);
34875      composeStructureMapStructureMapGroupRuleDependentComponentElements(element);
34876      composeElementClose(element);
34877      xml.exit(FHIR_NS, name);
34878    }
34879  }
34880
34881  protected void composeStructureMapStructureMapGroupRuleDependentComponentElements(StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
34882      composeBackboneElements(element);
34883      if (element.hasNameElement()) {
34884        composeId("name", element.getNameElement());
34885      }
34886      if (element.hasVariable()) { 
34887        for (StringType e : element.getVariable()) 
34888          composeString("variable", e);
34889      }
34890  }
34891
34892  protected void composeSubscription(String name, Subscription element) throws IOException {
34893    if (element != null) {
34894      composeDomainResourceAttributes(element);
34895      xml.enter(FHIR_NS, name);
34896      composeSubscriptionElements(element);
34897      composeElementClose(element);
34898      xml.exit(FHIR_NS, name);
34899    }
34900  }
34901
34902  protected void composeSubscriptionElements(Subscription element) throws IOException {
34903      composeDomainResourceElements(element);
34904      if (element.hasStatusElement())
34905        composeEnumeration("status", element.getStatusElement(), new Subscription.SubscriptionStatusEnumFactory());
34906      if (element.hasContact()) { 
34907        for (ContactPoint e : element.getContact()) 
34908          composeContactPoint("contact", e);
34909      }
34910      if (element.hasEndElement()) {
34911        composeInstant("end", element.getEndElement());
34912      }
34913      if (element.hasReasonElement()) {
34914        composeString("reason", element.getReasonElement());
34915      }
34916      if (element.hasCriteriaElement()) {
34917        composeString("criteria", element.getCriteriaElement());
34918      }
34919      if (element.hasErrorElement()) {
34920        composeString("error", element.getErrorElement());
34921      }
34922      if (element.hasChannel()) {
34923        composeSubscriptionSubscriptionChannelComponent("channel", element.getChannel());
34924      }
34925      if (element.hasTag()) { 
34926        for (Coding e : element.getTag()) 
34927          composeCoding("tag", e);
34928      }
34929  }
34930
34931  protected void composeSubscriptionSubscriptionChannelComponent(String name, Subscription.SubscriptionChannelComponent element) throws IOException {
34932    if (element != null) {
34933      composeElementAttributes(element);
34934      xml.enter(FHIR_NS, name);
34935      composeSubscriptionSubscriptionChannelComponentElements(element);
34936      composeElementClose(element);
34937      xml.exit(FHIR_NS, name);
34938    }
34939  }
34940
34941  protected void composeSubscriptionSubscriptionChannelComponentElements(Subscription.SubscriptionChannelComponent element) throws IOException {
34942      composeBackboneElements(element);
34943      if (element.hasTypeElement())
34944        composeEnumeration("type", element.getTypeElement(), new Subscription.SubscriptionChannelTypeEnumFactory());
34945      if (element.hasEndpointElement()) {
34946        composeUri("endpoint", element.getEndpointElement());
34947      }
34948      if (element.hasPayloadElement()) {
34949        composeString("payload", element.getPayloadElement());
34950      }
34951      if (element.hasHeader()) { 
34952        for (StringType e : element.getHeader()) 
34953          composeString("header", e);
34954      }
34955  }
34956
34957  protected void composeSubstance(String name, Substance element) throws IOException {
34958    if (element != null) {
34959      composeDomainResourceAttributes(element);
34960      xml.enter(FHIR_NS, name);
34961      composeSubstanceElements(element);
34962      composeElementClose(element);
34963      xml.exit(FHIR_NS, name);
34964    }
34965  }
34966
34967  protected void composeSubstanceElements(Substance element) throws IOException {
34968      composeDomainResourceElements(element);
34969      if (element.hasIdentifier()) { 
34970        for (Identifier e : element.getIdentifier()) 
34971          composeIdentifier("identifier", e);
34972      }
34973      if (element.hasStatusElement())
34974        composeEnumeration("status", element.getStatusElement(), new Substance.FHIRSubstanceStatusEnumFactory());
34975      if (element.hasCategory()) { 
34976        for (CodeableConcept e : element.getCategory()) 
34977          composeCodeableConcept("category", e);
34978      }
34979      if (element.hasCode()) {
34980        composeCodeableConcept("code", element.getCode());
34981      }
34982      if (element.hasDescriptionElement()) {
34983        composeString("description", element.getDescriptionElement());
34984      }
34985      if (element.hasInstance()) { 
34986        for (Substance.SubstanceInstanceComponent e : element.getInstance()) 
34987          composeSubstanceSubstanceInstanceComponent("instance", e);
34988      }
34989      if (element.hasIngredient()) { 
34990        for (Substance.SubstanceIngredientComponent e : element.getIngredient()) 
34991          composeSubstanceSubstanceIngredientComponent("ingredient", e);
34992      }
34993  }
34994
34995  protected void composeSubstanceSubstanceInstanceComponent(String name, Substance.SubstanceInstanceComponent element) throws IOException {
34996    if (element != null) {
34997      composeElementAttributes(element);
34998      xml.enter(FHIR_NS, name);
34999      composeSubstanceSubstanceInstanceComponentElements(element);
35000      composeElementClose(element);
35001      xml.exit(FHIR_NS, name);
35002    }
35003  }
35004
35005  protected void composeSubstanceSubstanceInstanceComponentElements(Substance.SubstanceInstanceComponent element) throws IOException {
35006      composeBackboneElements(element);
35007      if (element.hasIdentifier()) {
35008        composeIdentifier("identifier", element.getIdentifier());
35009      }
35010      if (element.hasExpiryElement()) {
35011        composeDateTime("expiry", element.getExpiryElement());
35012      }
35013      if (element.hasQuantity()) {
35014        composeSimpleQuantity("quantity", element.getQuantity());
35015      }
35016  }
35017
35018  protected void composeSubstanceSubstanceIngredientComponent(String name, Substance.SubstanceIngredientComponent element) throws IOException {
35019    if (element != null) {
35020      composeElementAttributes(element);
35021      xml.enter(FHIR_NS, name);
35022      composeSubstanceSubstanceIngredientComponentElements(element);
35023      composeElementClose(element);
35024      xml.exit(FHIR_NS, name);
35025    }
35026  }
35027
35028  protected void composeSubstanceSubstanceIngredientComponentElements(Substance.SubstanceIngredientComponent element) throws IOException {
35029      composeBackboneElements(element);
35030      if (element.hasQuantity()) {
35031        composeRatio("quantity", element.getQuantity());
35032      }
35033      if (element.hasSubstance()) {
35034        composeType("substance", element.getSubstance());
35035      }  }
35036
35037  protected void composeSupplyDelivery(String name, SupplyDelivery element) throws IOException {
35038    if (element != null) {
35039      composeDomainResourceAttributes(element);
35040      xml.enter(FHIR_NS, name);
35041      composeSupplyDeliveryElements(element);
35042      composeElementClose(element);
35043      xml.exit(FHIR_NS, name);
35044    }
35045  }
35046
35047  protected void composeSupplyDeliveryElements(SupplyDelivery element) throws IOException {
35048      composeDomainResourceElements(element);
35049      if (element.hasIdentifier()) {
35050        composeIdentifier("identifier", element.getIdentifier());
35051      }
35052      if (element.hasBasedOn()) { 
35053        for (Reference e : element.getBasedOn()) 
35054          composeReference("basedOn", e);
35055      }
35056      if (element.hasPartOf()) { 
35057        for (Reference e : element.getPartOf()) 
35058          composeReference("partOf", e);
35059      }
35060      if (element.hasStatusElement())
35061        composeEnumeration("status", element.getStatusElement(), new SupplyDelivery.SupplyDeliveryStatusEnumFactory());
35062      if (element.hasPatient()) {
35063        composeReference("patient", element.getPatient());
35064      }
35065      if (element.hasType()) {
35066        composeCodeableConcept("type", element.getType());
35067      }
35068      if (element.hasSuppliedItem()) {
35069        composeSupplyDeliverySupplyDeliverySuppliedItemComponent("suppliedItem", element.getSuppliedItem());
35070      }
35071      if (element.hasOccurrence()) {
35072        composeType("occurrence", element.getOccurrence());
35073      }      if (element.hasSupplier()) {
35074        composeReference("supplier", element.getSupplier());
35075      }
35076      if (element.hasDestination()) {
35077        composeReference("destination", element.getDestination());
35078      }
35079      if (element.hasReceiver()) { 
35080        for (Reference e : element.getReceiver()) 
35081          composeReference("receiver", e);
35082      }
35083  }
35084
35085  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponent(String name, SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
35086    if (element != null) {
35087      composeElementAttributes(element);
35088      xml.enter(FHIR_NS, name);
35089      composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(element);
35090      composeElementClose(element);
35091      xml.exit(FHIR_NS, name);
35092    }
35093  }
35094
35095  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
35096      composeBackboneElements(element);
35097      if (element.hasQuantity()) {
35098        composeSimpleQuantity("quantity", element.getQuantity());
35099      }
35100      if (element.hasItem()) {
35101        composeType("item", element.getItem());
35102      }  }
35103
35104  protected void composeSupplyRequest(String name, SupplyRequest element) throws IOException {
35105    if (element != null) {
35106      composeDomainResourceAttributes(element);
35107      xml.enter(FHIR_NS, name);
35108      composeSupplyRequestElements(element);
35109      composeElementClose(element);
35110      xml.exit(FHIR_NS, name);
35111    }
35112  }
35113
35114  protected void composeSupplyRequestElements(SupplyRequest element) throws IOException {
35115      composeDomainResourceElements(element);
35116      if (element.hasIdentifier()) {
35117        composeIdentifier("identifier", element.getIdentifier());
35118      }
35119      if (element.hasStatusElement())
35120        composeEnumeration("status", element.getStatusElement(), new SupplyRequest.SupplyRequestStatusEnumFactory());
35121      if (element.hasCategory()) {
35122        composeCodeableConcept("category", element.getCategory());
35123      }
35124      if (element.hasPriorityElement())
35125        composeEnumeration("priority", element.getPriorityElement(), new SupplyRequest.RequestPriorityEnumFactory());
35126      if (element.hasOrderedItem()) {
35127        composeSupplyRequestSupplyRequestOrderedItemComponent("orderedItem", element.getOrderedItem());
35128      }
35129      if (element.hasOccurrence()) {
35130        composeType("occurrence", element.getOccurrence());
35131      }      if (element.hasAuthoredOnElement()) {
35132        composeDateTime("authoredOn", element.getAuthoredOnElement());
35133      }
35134      if (element.hasRequester()) {
35135        composeSupplyRequestSupplyRequestRequesterComponent("requester", element.getRequester());
35136      }
35137      if (element.hasSupplier()) { 
35138        for (Reference e : element.getSupplier()) 
35139          composeReference("supplier", e);
35140      }
35141      if (element.hasReason()) {
35142        composeType("reason", element.getReason());
35143      }      if (element.hasDeliverFrom()) {
35144        composeReference("deliverFrom", element.getDeliverFrom());
35145      }
35146      if (element.hasDeliverTo()) {
35147        composeReference("deliverTo", element.getDeliverTo());
35148      }
35149  }
35150
35151  protected void composeSupplyRequestSupplyRequestOrderedItemComponent(String name, SupplyRequest.SupplyRequestOrderedItemComponent element) throws IOException {
35152    if (element != null) {
35153      composeElementAttributes(element);
35154      xml.enter(FHIR_NS, name);
35155      composeSupplyRequestSupplyRequestOrderedItemComponentElements(element);
35156      composeElementClose(element);
35157      xml.exit(FHIR_NS, name);
35158    }
35159  }
35160
35161  protected void composeSupplyRequestSupplyRequestOrderedItemComponentElements(SupplyRequest.SupplyRequestOrderedItemComponent element) throws IOException {
35162      composeBackboneElements(element);
35163      if (element.hasQuantity()) {
35164        composeQuantity("quantity", element.getQuantity());
35165      }
35166      if (element.hasItem()) {
35167        composeType("item", element.getItem());
35168      }  }
35169
35170  protected void composeSupplyRequestSupplyRequestRequesterComponent(String name, SupplyRequest.SupplyRequestRequesterComponent element) throws IOException {
35171    if (element != null) {
35172      composeElementAttributes(element);
35173      xml.enter(FHIR_NS, name);
35174      composeSupplyRequestSupplyRequestRequesterComponentElements(element);
35175      composeElementClose(element);
35176      xml.exit(FHIR_NS, name);
35177    }
35178  }
35179
35180  protected void composeSupplyRequestSupplyRequestRequesterComponentElements(SupplyRequest.SupplyRequestRequesterComponent element) throws IOException {
35181      composeBackboneElements(element);
35182      if (element.hasAgent()) {
35183        composeReference("agent", element.getAgent());
35184      }
35185      if (element.hasOnBehalfOf()) {
35186        composeReference("onBehalfOf", element.getOnBehalfOf());
35187      }
35188  }
35189
35190  protected void composeTask(String name, Task element) throws IOException {
35191    if (element != null) {
35192      composeDomainResourceAttributes(element);
35193      xml.enter(FHIR_NS, name);
35194      composeTaskElements(element);
35195      composeElementClose(element);
35196      xml.exit(FHIR_NS, name);
35197    }
35198  }
35199
35200  protected void composeTaskElements(Task element) throws IOException {
35201      composeDomainResourceElements(element);
35202      if (element.hasIdentifier()) { 
35203        for (Identifier e : element.getIdentifier()) 
35204          composeIdentifier("identifier", e);
35205      }
35206      if (element.hasDefinition()) {
35207        composeType("definition", element.getDefinition());
35208      }      if (element.hasBasedOn()) { 
35209        for (Reference e : element.getBasedOn()) 
35210          composeReference("basedOn", e);
35211      }
35212      if (element.hasGroupIdentifier()) {
35213        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
35214      }
35215      if (element.hasPartOf()) { 
35216        for (Reference e : element.getPartOf()) 
35217          composeReference("partOf", e);
35218      }
35219      if (element.hasStatusElement())
35220        composeEnumeration("status", element.getStatusElement(), new Task.TaskStatusEnumFactory());
35221      if (element.hasStatusReason()) {
35222        composeCodeableConcept("statusReason", element.getStatusReason());
35223      }
35224      if (element.hasBusinessStatus()) {
35225        composeCodeableConcept("businessStatus", element.getBusinessStatus());
35226      }
35227      if (element.hasIntentElement())
35228        composeEnumeration("intent", element.getIntentElement(), new Task.TaskIntentEnumFactory());
35229      if (element.hasPriorityElement())
35230        composeEnumeration("priority", element.getPriorityElement(), new Task.TaskPriorityEnumFactory());
35231      if (element.hasCode()) {
35232        composeCodeableConcept("code", element.getCode());
35233      }
35234      if (element.hasDescriptionElement()) {
35235        composeString("description", element.getDescriptionElement());
35236      }
35237      if (element.hasFocus()) {
35238        composeReference("focus", element.getFocus());
35239      }
35240      if (element.hasFor()) {
35241        composeReference("for", element.getFor());
35242      }
35243      if (element.hasContext()) {
35244        composeReference("context", element.getContext());
35245      }
35246      if (element.hasExecutionPeriod()) {
35247        composePeriod("executionPeriod", element.getExecutionPeriod());
35248      }
35249      if (element.hasAuthoredOnElement()) {
35250        composeDateTime("authoredOn", element.getAuthoredOnElement());
35251      }
35252      if (element.hasLastModifiedElement()) {
35253        composeDateTime("lastModified", element.getLastModifiedElement());
35254      }
35255      if (element.hasRequester()) {
35256        composeTaskTaskRequesterComponent("requester", element.getRequester());
35257      }
35258      if (element.hasPerformerType()) { 
35259        for (CodeableConcept e : element.getPerformerType()) 
35260          composeCodeableConcept("performerType", e);
35261      }
35262      if (element.hasOwner()) {
35263        composeReference("owner", element.getOwner());
35264      }
35265      if (element.hasReason()) {
35266        composeCodeableConcept("reason", element.getReason());
35267      }
35268      if (element.hasNote()) { 
35269        for (Annotation e : element.getNote()) 
35270          composeAnnotation("note", e);
35271      }
35272      if (element.hasRelevantHistory()) { 
35273        for (Reference e : element.getRelevantHistory()) 
35274          composeReference("relevantHistory", e);
35275      }
35276      if (element.hasRestriction()) {
35277        composeTaskTaskRestrictionComponent("restriction", element.getRestriction());
35278      }
35279      if (element.hasInput()) { 
35280        for (Task.ParameterComponent e : element.getInput()) 
35281          composeTaskParameterComponent("input", e);
35282      }
35283      if (element.hasOutput()) { 
35284        for (Task.TaskOutputComponent e : element.getOutput()) 
35285          composeTaskTaskOutputComponent("output", e);
35286      }
35287  }
35288
35289  protected void composeTaskTaskRequesterComponent(String name, Task.TaskRequesterComponent element) throws IOException {
35290    if (element != null) {
35291      composeElementAttributes(element);
35292      xml.enter(FHIR_NS, name);
35293      composeTaskTaskRequesterComponentElements(element);
35294      composeElementClose(element);
35295      xml.exit(FHIR_NS, name);
35296    }
35297  }
35298
35299  protected void composeTaskTaskRequesterComponentElements(Task.TaskRequesterComponent element) throws IOException {
35300      composeBackboneElements(element);
35301      if (element.hasAgent()) {
35302        composeReference("agent", element.getAgent());
35303      }
35304      if (element.hasOnBehalfOf()) {
35305        composeReference("onBehalfOf", element.getOnBehalfOf());
35306      }
35307  }
35308
35309  protected void composeTaskTaskRestrictionComponent(String name, Task.TaskRestrictionComponent element) throws IOException {
35310    if (element != null) {
35311      composeElementAttributes(element);
35312      xml.enter(FHIR_NS, name);
35313      composeTaskTaskRestrictionComponentElements(element);
35314      composeElementClose(element);
35315      xml.exit(FHIR_NS, name);
35316    }
35317  }
35318
35319  protected void composeTaskTaskRestrictionComponentElements(Task.TaskRestrictionComponent element) throws IOException {
35320      composeBackboneElements(element);
35321      if (element.hasRepetitionsElement()) {
35322        composePositiveInt("repetitions", element.getRepetitionsElement());
35323      }
35324      if (element.hasPeriod()) {
35325        composePeriod("period", element.getPeriod());
35326      }
35327      if (element.hasRecipient()) { 
35328        for (Reference e : element.getRecipient()) 
35329          composeReference("recipient", e);
35330      }
35331  }
35332
35333  protected void composeTaskParameterComponent(String name, Task.ParameterComponent element) throws IOException {
35334    if (element != null) {
35335      composeElementAttributes(element);
35336      xml.enter(FHIR_NS, name);
35337      composeTaskParameterComponentElements(element);
35338      composeElementClose(element);
35339      xml.exit(FHIR_NS, name);
35340    }
35341  }
35342
35343  protected void composeTaskParameterComponentElements(Task.ParameterComponent element) throws IOException {
35344      composeBackboneElements(element);
35345      if (element.hasType()) {
35346        composeCodeableConcept("type", element.getType());
35347      }
35348      if (element.hasValue()) {
35349        composeType("value", element.getValue());
35350      }  }
35351
35352  protected void composeTaskTaskOutputComponent(String name, Task.TaskOutputComponent element) throws IOException {
35353    if (element != null) {
35354      composeElementAttributes(element);
35355      xml.enter(FHIR_NS, name);
35356      composeTaskTaskOutputComponentElements(element);
35357      composeElementClose(element);
35358      xml.exit(FHIR_NS, name);
35359    }
35360  }
35361
35362  protected void composeTaskTaskOutputComponentElements(Task.TaskOutputComponent element) throws IOException {
35363      composeBackboneElements(element);
35364      if (element.hasType()) {
35365        composeCodeableConcept("type", element.getType());
35366      }
35367      if (element.hasValue()) {
35368        composeType("value", element.getValue());
35369      }  }
35370
35371  protected void composeTestReport(String name, TestReport element) throws IOException {
35372    if (element != null) {
35373      composeDomainResourceAttributes(element);
35374      xml.enter(FHIR_NS, name);
35375      composeTestReportElements(element);
35376      composeElementClose(element);
35377      xml.exit(FHIR_NS, name);
35378    }
35379  }
35380
35381  protected void composeTestReportElements(TestReport element) throws IOException {
35382      composeDomainResourceElements(element);
35383      if (element.hasIdentifier()) {
35384        composeIdentifier("identifier", element.getIdentifier());
35385      }
35386      if (element.hasNameElement()) {
35387        composeString("name", element.getNameElement());
35388      }
35389      if (element.hasStatusElement())
35390        composeEnumeration("status", element.getStatusElement(), new TestReport.TestReportStatusEnumFactory());
35391      if (element.hasTestScript()) {
35392        composeReference("testScript", element.getTestScript());
35393      }
35394      if (element.hasResultElement())
35395        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportResultEnumFactory());
35396      if (element.hasScoreElement()) {
35397        composeDecimal("score", element.getScoreElement());
35398      }
35399      if (element.hasTesterElement()) {
35400        composeString("tester", element.getTesterElement());
35401      }
35402      if (element.hasIssuedElement()) {
35403        composeDateTime("issued", element.getIssuedElement());
35404      }
35405      if (element.hasParticipant()) { 
35406        for (TestReport.TestReportParticipantComponent e : element.getParticipant()) 
35407          composeTestReportTestReportParticipantComponent("participant", e);
35408      }
35409      if (element.hasSetup()) {
35410        composeTestReportTestReportSetupComponent("setup", element.getSetup());
35411      }
35412      if (element.hasTest()) { 
35413        for (TestReport.TestReportTestComponent e : element.getTest()) 
35414          composeTestReportTestReportTestComponent("test", e);
35415      }
35416      if (element.hasTeardown()) {
35417        composeTestReportTestReportTeardownComponent("teardown", element.getTeardown());
35418      }
35419  }
35420
35421  protected void composeTestReportTestReportParticipantComponent(String name, TestReport.TestReportParticipantComponent element) throws IOException {
35422    if (element != null) {
35423      composeElementAttributes(element);
35424      xml.enter(FHIR_NS, name);
35425      composeTestReportTestReportParticipantComponentElements(element);
35426      composeElementClose(element);
35427      xml.exit(FHIR_NS, name);
35428    }
35429  }
35430
35431  protected void composeTestReportTestReportParticipantComponentElements(TestReport.TestReportParticipantComponent element) throws IOException {
35432      composeBackboneElements(element);
35433      if (element.hasTypeElement())
35434        composeEnumeration("type", element.getTypeElement(), new TestReport.TestReportParticipantTypeEnumFactory());
35435      if (element.hasUriElement()) {
35436        composeUri("uri", element.getUriElement());
35437      }
35438      if (element.hasDisplayElement()) {
35439        composeString("display", element.getDisplayElement());
35440      }
35441  }
35442
35443  protected void composeTestReportTestReportSetupComponent(String name, TestReport.TestReportSetupComponent element) throws IOException {
35444    if (element != null) {
35445      composeElementAttributes(element);
35446      xml.enter(FHIR_NS, name);
35447      composeTestReportTestReportSetupComponentElements(element);
35448      composeElementClose(element);
35449      xml.exit(FHIR_NS, name);
35450    }
35451  }
35452
35453  protected void composeTestReportTestReportSetupComponentElements(TestReport.TestReportSetupComponent element) throws IOException {
35454      composeBackboneElements(element);
35455      if (element.hasAction()) { 
35456        for (TestReport.SetupActionComponent e : element.getAction()) 
35457          composeTestReportSetupActionComponent("action", e);
35458      }
35459  }
35460
35461  protected void composeTestReportSetupActionComponent(String name, TestReport.SetupActionComponent element) throws IOException {
35462    if (element != null) {
35463      composeElementAttributes(element);
35464      xml.enter(FHIR_NS, name);
35465      composeTestReportSetupActionComponentElements(element);
35466      composeElementClose(element);
35467      xml.exit(FHIR_NS, name);
35468    }
35469  }
35470
35471  protected void composeTestReportSetupActionComponentElements(TestReport.SetupActionComponent element) throws IOException {
35472      composeBackboneElements(element);
35473      if (element.hasOperation()) {
35474        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
35475      }
35476      if (element.hasAssert()) {
35477        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
35478      }
35479  }
35480
35481  protected void composeTestReportSetupActionOperationComponent(String name, TestReport.SetupActionOperationComponent element) throws IOException {
35482    if (element != null) {
35483      composeElementAttributes(element);
35484      xml.enter(FHIR_NS, name);
35485      composeTestReportSetupActionOperationComponentElements(element);
35486      composeElementClose(element);
35487      xml.exit(FHIR_NS, name);
35488    }
35489  }
35490
35491  protected void composeTestReportSetupActionOperationComponentElements(TestReport.SetupActionOperationComponent element) throws IOException {
35492      composeBackboneElements(element);
35493      if (element.hasResultElement())
35494        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
35495      if (element.hasMessageElement()) {
35496        composeMarkdown("message", element.getMessageElement());
35497      }
35498      if (element.hasDetailElement()) {
35499        composeUri("detail", element.getDetailElement());
35500      }
35501  }
35502
35503  protected void composeTestReportSetupActionAssertComponent(String name, TestReport.SetupActionAssertComponent element) throws IOException {
35504    if (element != null) {
35505      composeElementAttributes(element);
35506      xml.enter(FHIR_NS, name);
35507      composeTestReportSetupActionAssertComponentElements(element);
35508      composeElementClose(element);
35509      xml.exit(FHIR_NS, name);
35510    }
35511  }
35512
35513  protected void composeTestReportSetupActionAssertComponentElements(TestReport.SetupActionAssertComponent element) throws IOException {
35514      composeBackboneElements(element);
35515      if (element.hasResultElement())
35516        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
35517      if (element.hasMessageElement()) {
35518        composeMarkdown("message", element.getMessageElement());
35519      }
35520      if (element.hasDetailElement()) {
35521        composeString("detail", element.getDetailElement());
35522      }
35523  }
35524
35525  protected void composeTestReportTestReportTestComponent(String name, TestReport.TestReportTestComponent element) throws IOException {
35526    if (element != null) {
35527      composeElementAttributes(element);
35528      xml.enter(FHIR_NS, name);
35529      composeTestReportTestReportTestComponentElements(element);
35530      composeElementClose(element);
35531      xml.exit(FHIR_NS, name);
35532    }
35533  }
35534
35535  protected void composeTestReportTestReportTestComponentElements(TestReport.TestReportTestComponent element) throws IOException {
35536      composeBackboneElements(element);
35537      if (element.hasNameElement()) {
35538        composeString("name", element.getNameElement());
35539      }
35540      if (element.hasDescriptionElement()) {
35541        composeString("description", element.getDescriptionElement());
35542      }
35543      if (element.hasAction()) { 
35544        for (TestReport.TestActionComponent e : element.getAction()) 
35545          composeTestReportTestActionComponent("action", e);
35546      }
35547  }
35548
35549  protected void composeTestReportTestActionComponent(String name, TestReport.TestActionComponent element) throws IOException {
35550    if (element != null) {
35551      composeElementAttributes(element);
35552      xml.enter(FHIR_NS, name);
35553      composeTestReportTestActionComponentElements(element);
35554      composeElementClose(element);
35555      xml.exit(FHIR_NS, name);
35556    }
35557  }
35558
35559  protected void composeTestReportTestActionComponentElements(TestReport.TestActionComponent element) throws IOException {
35560      composeBackboneElements(element);
35561      if (element.hasOperation()) {
35562        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
35563      }
35564      if (element.hasAssert()) {
35565        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
35566      }
35567  }
35568
35569  protected void composeTestReportTestReportTeardownComponent(String name, TestReport.TestReportTeardownComponent element) throws IOException {
35570    if (element != null) {
35571      composeElementAttributes(element);
35572      xml.enter(FHIR_NS, name);
35573      composeTestReportTestReportTeardownComponentElements(element);
35574      composeElementClose(element);
35575      xml.exit(FHIR_NS, name);
35576    }
35577  }
35578
35579  protected void composeTestReportTestReportTeardownComponentElements(TestReport.TestReportTeardownComponent element) throws IOException {
35580      composeBackboneElements(element);
35581      if (element.hasAction()) { 
35582        for (TestReport.TeardownActionComponent e : element.getAction()) 
35583          composeTestReportTeardownActionComponent("action", e);
35584      }
35585  }
35586
35587  protected void composeTestReportTeardownActionComponent(String name, TestReport.TeardownActionComponent element) throws IOException {
35588    if (element != null) {
35589      composeElementAttributes(element);
35590      xml.enter(FHIR_NS, name);
35591      composeTestReportTeardownActionComponentElements(element);
35592      composeElementClose(element);
35593      xml.exit(FHIR_NS, name);
35594    }
35595  }
35596
35597  protected void composeTestReportTeardownActionComponentElements(TestReport.TeardownActionComponent element) throws IOException {
35598      composeBackboneElements(element);
35599      if (element.hasOperation()) {
35600        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
35601      }
35602  }
35603
35604  protected void composeTestScript(String name, TestScript element) throws IOException {
35605    if (element != null) {
35606      composeDomainResourceAttributes(element);
35607      xml.enter(FHIR_NS, name);
35608      composeTestScriptElements(element);
35609      composeElementClose(element);
35610      xml.exit(FHIR_NS, name);
35611    }
35612  }
35613
35614  protected void composeTestScriptElements(TestScript element) throws IOException {
35615      composeDomainResourceElements(element);
35616      if (element.hasUrlElement()) {
35617        composeUri("url", element.getUrlElement());
35618      }
35619      if (element.hasIdentifier()) {
35620        composeIdentifier("identifier", element.getIdentifier());
35621      }
35622      if (element.hasVersionElement()) {
35623        composeString("version", element.getVersionElement());
35624      }
35625      if (element.hasNameElement()) {
35626        composeString("name", element.getNameElement());
35627      }
35628      if (element.hasTitleElement()) {
35629        composeString("title", element.getTitleElement());
35630      }
35631      if (element.hasStatusElement())
35632        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
35633      if (element.hasExperimentalElement()) {
35634        composeBoolean("experimental", element.getExperimentalElement());
35635      }
35636      if (element.hasDateElement()) {
35637        composeDateTime("date", element.getDateElement());
35638      }
35639      if (element.hasPublisherElement()) {
35640        composeString("publisher", element.getPublisherElement());
35641      }
35642      if (element.hasContact()) { 
35643        for (ContactDetail e : element.getContact()) 
35644          composeContactDetail("contact", e);
35645      }
35646      if (element.hasDescriptionElement()) {
35647        composeMarkdown("description", element.getDescriptionElement());
35648      }
35649      if (element.hasUseContext()) { 
35650        for (UsageContext e : element.getUseContext()) 
35651          composeUsageContext("useContext", e);
35652      }
35653      if (element.hasJurisdiction()) { 
35654        for (CodeableConcept e : element.getJurisdiction()) 
35655          composeCodeableConcept("jurisdiction", e);
35656      }
35657      if (element.hasPurposeElement()) {
35658        composeMarkdown("purpose", element.getPurposeElement());
35659      }
35660      if (element.hasCopyrightElement()) {
35661        composeMarkdown("copyright", element.getCopyrightElement());
35662      }
35663      if (element.hasOrigin()) { 
35664        for (TestScript.TestScriptOriginComponent e : element.getOrigin()) 
35665          composeTestScriptTestScriptOriginComponent("origin", e);
35666      }
35667      if (element.hasDestination()) { 
35668        for (TestScript.TestScriptDestinationComponent e : element.getDestination()) 
35669          composeTestScriptTestScriptDestinationComponent("destination", e);
35670      }
35671      if (element.hasMetadata()) {
35672        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
35673      }
35674      if (element.hasFixture()) { 
35675        for (TestScript.TestScriptFixtureComponent e : element.getFixture()) 
35676          composeTestScriptTestScriptFixtureComponent("fixture", e);
35677      }
35678      if (element.hasProfile()) { 
35679        for (Reference e : element.getProfile()) 
35680          composeReference("profile", e);
35681      }
35682      if (element.hasVariable()) { 
35683        for (TestScript.TestScriptVariableComponent e : element.getVariable()) 
35684          composeTestScriptTestScriptVariableComponent("variable", e);
35685      }
35686      if (element.hasRule()) { 
35687        for (TestScript.TestScriptRuleComponent e : element.getRule()) 
35688          composeTestScriptTestScriptRuleComponent("rule", e);
35689      }
35690      if (element.hasRuleset()) { 
35691        for (TestScript.TestScriptRulesetComponent e : element.getRuleset()) 
35692          composeTestScriptTestScriptRulesetComponent("ruleset", e);
35693      }
35694      if (element.hasSetup()) {
35695        composeTestScriptTestScriptSetupComponent("setup", element.getSetup());
35696      }
35697      if (element.hasTest()) { 
35698        for (TestScript.TestScriptTestComponent e : element.getTest()) 
35699          composeTestScriptTestScriptTestComponent("test", e);
35700      }
35701      if (element.hasTeardown()) {
35702        composeTestScriptTestScriptTeardownComponent("teardown", element.getTeardown());
35703      }
35704  }
35705
35706  protected void composeTestScriptTestScriptOriginComponent(String name, TestScript.TestScriptOriginComponent element) throws IOException {
35707    if (element != null) {
35708      composeElementAttributes(element);
35709      xml.enter(FHIR_NS, name);
35710      composeTestScriptTestScriptOriginComponentElements(element);
35711      composeElementClose(element);
35712      xml.exit(FHIR_NS, name);
35713    }
35714  }
35715
35716  protected void composeTestScriptTestScriptOriginComponentElements(TestScript.TestScriptOriginComponent element) throws IOException {
35717      composeBackboneElements(element);
35718      if (element.hasIndexElement()) {
35719        composeInteger("index", element.getIndexElement());
35720      }
35721      if (element.hasProfile()) {
35722        composeCoding("profile", element.getProfile());
35723      }
35724  }
35725
35726  protected void composeTestScriptTestScriptDestinationComponent(String name, TestScript.TestScriptDestinationComponent element) throws IOException {
35727    if (element != null) {
35728      composeElementAttributes(element);
35729      xml.enter(FHIR_NS, name);
35730      composeTestScriptTestScriptDestinationComponentElements(element);
35731      composeElementClose(element);
35732      xml.exit(FHIR_NS, name);
35733    }
35734  }
35735
35736  protected void composeTestScriptTestScriptDestinationComponentElements(TestScript.TestScriptDestinationComponent element) throws IOException {
35737      composeBackboneElements(element);
35738      if (element.hasIndexElement()) {
35739        composeInteger("index", element.getIndexElement());
35740      }
35741      if (element.hasProfile()) {
35742        composeCoding("profile", element.getProfile());
35743      }
35744  }
35745
35746  protected void composeTestScriptTestScriptMetadataComponent(String name, TestScript.TestScriptMetadataComponent element) throws IOException {
35747    if (element != null) {
35748      composeElementAttributes(element);
35749      xml.enter(FHIR_NS, name);
35750      composeTestScriptTestScriptMetadataComponentElements(element);
35751      composeElementClose(element);
35752      xml.exit(FHIR_NS, name);
35753    }
35754  }
35755
35756  protected void composeTestScriptTestScriptMetadataComponentElements(TestScript.TestScriptMetadataComponent element) throws IOException {
35757      composeBackboneElements(element);
35758      if (element.hasLink()) { 
35759        for (TestScript.TestScriptMetadataLinkComponent e : element.getLink()) 
35760          composeTestScriptTestScriptMetadataLinkComponent("link", e);
35761      }
35762      if (element.hasCapability()) { 
35763        for (TestScript.TestScriptMetadataCapabilityComponent e : element.getCapability()) 
35764          composeTestScriptTestScriptMetadataCapabilityComponent("capability", e);
35765      }
35766  }
35767
35768  protected void composeTestScriptTestScriptMetadataLinkComponent(String name, TestScript.TestScriptMetadataLinkComponent element) throws IOException {
35769    if (element != null) {
35770      composeElementAttributes(element);
35771      xml.enter(FHIR_NS, name);
35772      composeTestScriptTestScriptMetadataLinkComponentElements(element);
35773      composeElementClose(element);
35774      xml.exit(FHIR_NS, name);
35775    }
35776  }
35777
35778  protected void composeTestScriptTestScriptMetadataLinkComponentElements(TestScript.TestScriptMetadataLinkComponent element) throws IOException {
35779      composeBackboneElements(element);
35780      if (element.hasUrlElement()) {
35781        composeUri("url", element.getUrlElement());
35782      }
35783      if (element.hasDescriptionElement()) {
35784        composeString("description", element.getDescriptionElement());
35785      }
35786  }
35787
35788  protected void composeTestScriptTestScriptMetadataCapabilityComponent(String name, TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
35789    if (element != null) {
35790      composeElementAttributes(element);
35791      xml.enter(FHIR_NS, name);
35792      composeTestScriptTestScriptMetadataCapabilityComponentElements(element);
35793      composeElementClose(element);
35794      xml.exit(FHIR_NS, name);
35795    }
35796  }
35797
35798  protected void composeTestScriptTestScriptMetadataCapabilityComponentElements(TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
35799      composeBackboneElements(element);
35800      if (element.hasRequiredElement()) {
35801        composeBoolean("required", element.getRequiredElement());
35802      }
35803      if (element.hasValidatedElement()) {
35804        composeBoolean("validated", element.getValidatedElement());
35805      }
35806      if (element.hasDescriptionElement()) {
35807        composeString("description", element.getDescriptionElement());
35808      }
35809      if (element.hasOrigin()) { 
35810        for (IntegerType e : element.getOrigin()) 
35811          composeInteger("origin", e);
35812      }
35813      if (element.hasDestinationElement()) {
35814        composeInteger("destination", element.getDestinationElement());
35815      }
35816      if (element.hasLink()) { 
35817        for (UriType e : element.getLink()) 
35818          composeUri("link", e);
35819      }
35820      if (element.hasCapabilities()) {
35821        composeReference("capabilities", element.getCapabilities());
35822      }
35823  }
35824
35825  protected void composeTestScriptTestScriptFixtureComponent(String name, TestScript.TestScriptFixtureComponent element) throws IOException {
35826    if (element != null) {
35827      composeElementAttributes(element);
35828      xml.enter(FHIR_NS, name);
35829      composeTestScriptTestScriptFixtureComponentElements(element);
35830      composeElementClose(element);
35831      xml.exit(FHIR_NS, name);
35832    }
35833  }
35834
35835  protected void composeTestScriptTestScriptFixtureComponentElements(TestScript.TestScriptFixtureComponent element) throws IOException {
35836      composeBackboneElements(element);
35837      if (element.hasAutocreateElement()) {
35838        composeBoolean("autocreate", element.getAutocreateElement());
35839      }
35840      if (element.hasAutodeleteElement()) {
35841        composeBoolean("autodelete", element.getAutodeleteElement());
35842      }
35843      if (element.hasResource()) {
35844        composeReference("resource", element.getResource());
35845      }
35846  }
35847
35848  protected void composeTestScriptTestScriptVariableComponent(String name, TestScript.TestScriptVariableComponent element) throws IOException {
35849    if (element != null) {
35850      composeElementAttributes(element);
35851      xml.enter(FHIR_NS, name);
35852      composeTestScriptTestScriptVariableComponentElements(element);
35853      composeElementClose(element);
35854      xml.exit(FHIR_NS, name);
35855    }
35856  }
35857
35858  protected void composeTestScriptTestScriptVariableComponentElements(TestScript.TestScriptVariableComponent element) throws IOException {
35859      composeBackboneElements(element);
35860      if (element.hasNameElement()) {
35861        composeString("name", element.getNameElement());
35862      }
35863      if (element.hasDefaultValueElement()) {
35864        composeString("defaultValue", element.getDefaultValueElement());
35865      }
35866      if (element.hasDescriptionElement()) {
35867        composeString("description", element.getDescriptionElement());
35868      }
35869      if (element.hasExpressionElement()) {
35870        composeString("expression", element.getExpressionElement());
35871      }
35872      if (element.hasHeaderFieldElement()) {
35873        composeString("headerField", element.getHeaderFieldElement());
35874      }
35875      if (element.hasHintElement()) {
35876        composeString("hint", element.getHintElement());
35877      }
35878      if (element.hasPathElement()) {
35879        composeString("path", element.getPathElement());
35880      }
35881      if (element.hasSourceIdElement()) {
35882        composeId("sourceId", element.getSourceIdElement());
35883      }
35884  }
35885
35886  protected void composeTestScriptTestScriptRuleComponent(String name, TestScript.TestScriptRuleComponent element) throws IOException {
35887    if (element != null) {
35888      composeElementAttributes(element);
35889      xml.enter(FHIR_NS, name);
35890      composeTestScriptTestScriptRuleComponentElements(element);
35891      composeElementClose(element);
35892      xml.exit(FHIR_NS, name);
35893    }
35894  }
35895
35896  protected void composeTestScriptTestScriptRuleComponentElements(TestScript.TestScriptRuleComponent element) throws IOException {
35897      composeBackboneElements(element);
35898      if (element.hasResource()) {
35899        composeReference("resource", element.getResource());
35900      }
35901      if (element.hasParam()) { 
35902        for (TestScript.RuleParamComponent e : element.getParam()) 
35903          composeTestScriptRuleParamComponent("param", e);
35904      }
35905  }
35906
35907  protected void composeTestScriptRuleParamComponent(String name, TestScript.RuleParamComponent element) throws IOException {
35908    if (element != null) {
35909      composeElementAttributes(element);
35910      xml.enter(FHIR_NS, name);
35911      composeTestScriptRuleParamComponentElements(element);
35912      composeElementClose(element);
35913      xml.exit(FHIR_NS, name);
35914    }
35915  }
35916
35917  protected void composeTestScriptRuleParamComponentElements(TestScript.RuleParamComponent element) throws IOException {
35918      composeBackboneElements(element);
35919      if (element.hasNameElement()) {
35920        composeString("name", element.getNameElement());
35921      }
35922      if (element.hasValueElement()) {
35923        composeString("value", element.getValueElement());
35924      }
35925  }
35926
35927  protected void composeTestScriptTestScriptRulesetComponent(String name, TestScript.TestScriptRulesetComponent element) throws IOException {
35928    if (element != null) {
35929      composeElementAttributes(element);
35930      xml.enter(FHIR_NS, name);
35931      composeTestScriptTestScriptRulesetComponentElements(element);
35932      composeElementClose(element);
35933      xml.exit(FHIR_NS, name);
35934    }
35935  }
35936
35937  protected void composeTestScriptTestScriptRulesetComponentElements(TestScript.TestScriptRulesetComponent element) throws IOException {
35938      composeBackboneElements(element);
35939      if (element.hasResource()) {
35940        composeReference("resource", element.getResource());
35941      }
35942      if (element.hasRule()) { 
35943        for (TestScript.RulesetRuleComponent e : element.getRule()) 
35944          composeTestScriptRulesetRuleComponent("rule", e);
35945      }
35946  }
35947
35948  protected void composeTestScriptRulesetRuleComponent(String name, TestScript.RulesetRuleComponent element) throws IOException {
35949    if (element != null) {
35950      composeElementAttributes(element);
35951      xml.enter(FHIR_NS, name);
35952      composeTestScriptRulesetRuleComponentElements(element);
35953      composeElementClose(element);
35954      xml.exit(FHIR_NS, name);
35955    }
35956  }
35957
35958  protected void composeTestScriptRulesetRuleComponentElements(TestScript.RulesetRuleComponent element) throws IOException {
35959      composeBackboneElements(element);
35960      if (element.hasRuleIdElement()) {
35961        composeId("ruleId", element.getRuleIdElement());
35962      }
35963      if (element.hasParam()) { 
35964        for (TestScript.RulesetRuleParamComponent e : element.getParam()) 
35965          composeTestScriptRulesetRuleParamComponent("param", e);
35966      }
35967  }
35968
35969  protected void composeTestScriptRulesetRuleParamComponent(String name, TestScript.RulesetRuleParamComponent element) throws IOException {
35970    if (element != null) {
35971      composeElementAttributes(element);
35972      xml.enter(FHIR_NS, name);
35973      composeTestScriptRulesetRuleParamComponentElements(element);
35974      composeElementClose(element);
35975      xml.exit(FHIR_NS, name);
35976    }
35977  }
35978
35979  protected void composeTestScriptRulesetRuleParamComponentElements(TestScript.RulesetRuleParamComponent element) throws IOException {
35980      composeBackboneElements(element);
35981      if (element.hasNameElement()) {
35982        composeString("name", element.getNameElement());
35983      }
35984      if (element.hasValueElement()) {
35985        composeString("value", element.getValueElement());
35986      }
35987  }
35988
35989  protected void composeTestScriptTestScriptSetupComponent(String name, TestScript.TestScriptSetupComponent element) throws IOException {
35990    if (element != null) {
35991      composeElementAttributes(element);
35992      xml.enter(FHIR_NS, name);
35993      composeTestScriptTestScriptSetupComponentElements(element);
35994      composeElementClose(element);
35995      xml.exit(FHIR_NS, name);
35996    }
35997  }
35998
35999  protected void composeTestScriptTestScriptSetupComponentElements(TestScript.TestScriptSetupComponent element) throws IOException {
36000      composeBackboneElements(element);
36001      if (element.hasAction()) { 
36002        for (TestScript.SetupActionComponent e : element.getAction()) 
36003          composeTestScriptSetupActionComponent("action", e);
36004      }
36005  }
36006
36007  protected void composeTestScriptSetupActionComponent(String name, TestScript.SetupActionComponent element) throws IOException {
36008    if (element != null) {
36009      composeElementAttributes(element);
36010      xml.enter(FHIR_NS, name);
36011      composeTestScriptSetupActionComponentElements(element);
36012      composeElementClose(element);
36013      xml.exit(FHIR_NS, name);
36014    }
36015  }
36016
36017  protected void composeTestScriptSetupActionComponentElements(TestScript.SetupActionComponent element) throws IOException {
36018      composeBackboneElements(element);
36019      if (element.hasOperation()) {
36020        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
36021      }
36022      if (element.hasAssert()) {
36023        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
36024      }
36025  }
36026
36027  protected void composeTestScriptSetupActionOperationComponent(String name, TestScript.SetupActionOperationComponent element) throws IOException {
36028    if (element != null) {
36029      composeElementAttributes(element);
36030      xml.enter(FHIR_NS, name);
36031      composeTestScriptSetupActionOperationComponentElements(element);
36032      composeElementClose(element);
36033      xml.exit(FHIR_NS, name);
36034    }
36035  }
36036
36037  protected void composeTestScriptSetupActionOperationComponentElements(TestScript.SetupActionOperationComponent element) throws IOException {
36038      composeBackboneElements(element);
36039      if (element.hasType()) {
36040        composeCoding("type", element.getType());
36041      }
36042      if (element.hasResourceElement()) {
36043        composeCode("resource", element.getResourceElement());
36044      }
36045      if (element.hasLabelElement()) {
36046        composeString("label", element.getLabelElement());
36047      }
36048      if (element.hasDescriptionElement()) {
36049        composeString("description", element.getDescriptionElement());
36050      }
36051      if (element.hasAcceptElement())
36052        composeEnumeration("accept", element.getAcceptElement(), new TestScript.ContentTypeEnumFactory());
36053      if (element.hasContentTypeElement())
36054        composeEnumeration("contentType", element.getContentTypeElement(), new TestScript.ContentTypeEnumFactory());
36055      if (element.hasDestinationElement()) {
36056        composeInteger("destination", element.getDestinationElement());
36057      }
36058      if (element.hasEncodeRequestUrlElement()) {
36059        composeBoolean("encodeRequestUrl", element.getEncodeRequestUrlElement());
36060      }
36061      if (element.hasOriginElement()) {
36062        composeInteger("origin", element.getOriginElement());
36063      }
36064      if (element.hasParamsElement()) {
36065        composeString("params", element.getParamsElement());
36066      }
36067      if (element.hasRequestHeader()) { 
36068        for (TestScript.SetupActionOperationRequestHeaderComponent e : element.getRequestHeader()) 
36069          composeTestScriptSetupActionOperationRequestHeaderComponent("requestHeader", e);
36070      }
36071      if (element.hasRequestIdElement()) {
36072        composeId("requestId", element.getRequestIdElement());
36073      }
36074      if (element.hasResponseIdElement()) {
36075        composeId("responseId", element.getResponseIdElement());
36076      }
36077      if (element.hasSourceIdElement()) {
36078        composeId("sourceId", element.getSourceIdElement());
36079      }
36080      if (element.hasTargetIdElement()) {
36081        composeId("targetId", element.getTargetIdElement());
36082      }
36083      if (element.hasUrlElement()) {
36084        composeString("url", element.getUrlElement());
36085      }
36086  }
36087
36088  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(String name, TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
36089    if (element != null) {
36090      composeElementAttributes(element);
36091      xml.enter(FHIR_NS, name);
36092      composeTestScriptSetupActionOperationRequestHeaderComponentElements(element);
36093      composeElementClose(element);
36094      xml.exit(FHIR_NS, name);
36095    }
36096  }
36097
36098  protected void composeTestScriptSetupActionOperationRequestHeaderComponentElements(TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
36099      composeBackboneElements(element);
36100      if (element.hasFieldElement()) {
36101        composeString("field", element.getFieldElement());
36102      }
36103      if (element.hasValueElement()) {
36104        composeString("value", element.getValueElement());
36105      }
36106  }
36107
36108  protected void composeTestScriptSetupActionAssertComponent(String name, TestScript.SetupActionAssertComponent element) throws IOException {
36109    if (element != null) {
36110      composeElementAttributes(element);
36111      xml.enter(FHIR_NS, name);
36112      composeTestScriptSetupActionAssertComponentElements(element);
36113      composeElementClose(element);
36114      xml.exit(FHIR_NS, name);
36115    }
36116  }
36117
36118  protected void composeTestScriptSetupActionAssertComponentElements(TestScript.SetupActionAssertComponent element) throws IOException {
36119      composeBackboneElements(element);
36120      if (element.hasLabelElement()) {
36121        composeString("label", element.getLabelElement());
36122      }
36123      if (element.hasDescriptionElement()) {
36124        composeString("description", element.getDescriptionElement());
36125      }
36126      if (element.hasDirectionElement())
36127        composeEnumeration("direction", element.getDirectionElement(), new TestScript.AssertionDirectionTypeEnumFactory());
36128      if (element.hasCompareToSourceIdElement()) {
36129        composeString("compareToSourceId", element.getCompareToSourceIdElement());
36130      }
36131      if (element.hasCompareToSourceExpressionElement()) {
36132        composeString("compareToSourceExpression", element.getCompareToSourceExpressionElement());
36133      }
36134      if (element.hasCompareToSourcePathElement()) {
36135        composeString("compareToSourcePath", element.getCompareToSourcePathElement());
36136      }
36137      if (element.hasContentTypeElement())
36138        composeEnumeration("contentType", element.getContentTypeElement(), new TestScript.ContentTypeEnumFactory());
36139      if (element.hasExpressionElement()) {
36140        composeString("expression", element.getExpressionElement());
36141      }
36142      if (element.hasHeaderFieldElement()) {
36143        composeString("headerField", element.getHeaderFieldElement());
36144      }
36145      if (element.hasMinimumIdElement()) {
36146        composeString("minimumId", element.getMinimumIdElement());
36147      }
36148      if (element.hasNavigationLinksElement()) {
36149        composeBoolean("navigationLinks", element.getNavigationLinksElement());
36150      }
36151      if (element.hasOperatorElement())
36152        composeEnumeration("operator", element.getOperatorElement(), new TestScript.AssertionOperatorTypeEnumFactory());
36153      if (element.hasPathElement()) {
36154        composeString("path", element.getPathElement());
36155      }
36156      if (element.hasRequestMethodElement())
36157        composeEnumeration("requestMethod", element.getRequestMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
36158      if (element.hasRequestURLElement()) {
36159        composeString("requestURL", element.getRequestURLElement());
36160      }
36161      if (element.hasResourceElement()) {
36162        composeCode("resource", element.getResourceElement());
36163      }
36164      if (element.hasResponseElement())
36165        composeEnumeration("response", element.getResponseElement(), new TestScript.AssertionResponseTypesEnumFactory());
36166      if (element.hasResponseCodeElement()) {
36167        composeString("responseCode", element.getResponseCodeElement());
36168      }
36169      if (element.hasRule()) {
36170        composeTestScriptActionAssertRuleComponent("rule", element.getRule());
36171      }
36172      if (element.hasRuleset()) {
36173        composeTestScriptActionAssertRulesetComponent("ruleset", element.getRuleset());
36174      }
36175      if (element.hasSourceIdElement()) {
36176        composeId("sourceId", element.getSourceIdElement());
36177      }
36178      if (element.hasValidateProfileIdElement()) {
36179        composeId("validateProfileId", element.getValidateProfileIdElement());
36180      }
36181      if (element.hasValueElement()) {
36182        composeString("value", element.getValueElement());
36183      }
36184      if (element.hasWarningOnlyElement()) {
36185        composeBoolean("warningOnly", element.getWarningOnlyElement());
36186      }
36187  }
36188
36189  protected void composeTestScriptActionAssertRuleComponent(String name, TestScript.ActionAssertRuleComponent element) throws IOException {
36190    if (element != null) {
36191      composeElementAttributes(element);
36192      xml.enter(FHIR_NS, name);
36193      composeTestScriptActionAssertRuleComponentElements(element);
36194      composeElementClose(element);
36195      xml.exit(FHIR_NS, name);
36196    }
36197  }
36198
36199  protected void composeTestScriptActionAssertRuleComponentElements(TestScript.ActionAssertRuleComponent element) throws IOException {
36200      composeBackboneElements(element);
36201      if (element.hasRuleIdElement()) {
36202        composeId("ruleId", element.getRuleIdElement());
36203      }
36204      if (element.hasParam()) { 
36205        for (TestScript.ActionAssertRuleParamComponent e : element.getParam()) 
36206          composeTestScriptActionAssertRuleParamComponent("param", e);
36207      }
36208  }
36209
36210  protected void composeTestScriptActionAssertRuleParamComponent(String name, TestScript.ActionAssertRuleParamComponent element) throws IOException {
36211    if (element != null) {
36212      composeElementAttributes(element);
36213      xml.enter(FHIR_NS, name);
36214      composeTestScriptActionAssertRuleParamComponentElements(element);
36215      composeElementClose(element);
36216      xml.exit(FHIR_NS, name);
36217    }
36218  }
36219
36220  protected void composeTestScriptActionAssertRuleParamComponentElements(TestScript.ActionAssertRuleParamComponent element) throws IOException {
36221      composeBackboneElements(element);
36222      if (element.hasNameElement()) {
36223        composeString("name", element.getNameElement());
36224      }
36225      if (element.hasValueElement()) {
36226        composeString("value", element.getValueElement());
36227      }
36228  }
36229
36230  protected void composeTestScriptActionAssertRulesetComponent(String name, TestScript.ActionAssertRulesetComponent element) throws IOException {
36231    if (element != null) {
36232      composeElementAttributes(element);
36233      xml.enter(FHIR_NS, name);
36234      composeTestScriptActionAssertRulesetComponentElements(element);
36235      composeElementClose(element);
36236      xml.exit(FHIR_NS, name);
36237    }
36238  }
36239
36240  protected void composeTestScriptActionAssertRulesetComponentElements(TestScript.ActionAssertRulesetComponent element) throws IOException {
36241      composeBackboneElements(element);
36242      if (element.hasRulesetIdElement()) {
36243        composeId("rulesetId", element.getRulesetIdElement());
36244      }
36245      if (element.hasRule()) { 
36246        for (TestScript.ActionAssertRulesetRuleComponent e : element.getRule()) 
36247          composeTestScriptActionAssertRulesetRuleComponent("rule", e);
36248      }
36249  }
36250
36251  protected void composeTestScriptActionAssertRulesetRuleComponent(String name, TestScript.ActionAssertRulesetRuleComponent element) throws IOException {
36252    if (element != null) {
36253      composeElementAttributes(element);
36254      xml.enter(FHIR_NS, name);
36255      composeTestScriptActionAssertRulesetRuleComponentElements(element);
36256      composeElementClose(element);
36257      xml.exit(FHIR_NS, name);
36258    }
36259  }
36260
36261  protected void composeTestScriptActionAssertRulesetRuleComponentElements(TestScript.ActionAssertRulesetRuleComponent element) throws IOException {
36262      composeBackboneElements(element);
36263      if (element.hasRuleIdElement()) {
36264        composeId("ruleId", element.getRuleIdElement());
36265      }
36266      if (element.hasParam()) { 
36267        for (TestScript.ActionAssertRulesetRuleParamComponent e : element.getParam()) 
36268          composeTestScriptActionAssertRulesetRuleParamComponent("param", e);
36269      }
36270  }
36271
36272  protected void composeTestScriptActionAssertRulesetRuleParamComponent(String name, TestScript.ActionAssertRulesetRuleParamComponent element) throws IOException {
36273    if (element != null) {
36274      composeElementAttributes(element);
36275      xml.enter(FHIR_NS, name);
36276      composeTestScriptActionAssertRulesetRuleParamComponentElements(element);
36277      composeElementClose(element);
36278      xml.exit(FHIR_NS, name);
36279    }
36280  }
36281
36282  protected void composeTestScriptActionAssertRulesetRuleParamComponentElements(TestScript.ActionAssertRulesetRuleParamComponent element) throws IOException {
36283      composeBackboneElements(element);
36284      if (element.hasNameElement()) {
36285        composeString("name", element.getNameElement());
36286      }
36287      if (element.hasValueElement()) {
36288        composeString("value", element.getValueElement());
36289      }
36290  }
36291
36292  protected void composeTestScriptTestScriptTestComponent(String name, TestScript.TestScriptTestComponent element) throws IOException {
36293    if (element != null) {
36294      composeElementAttributes(element);
36295      xml.enter(FHIR_NS, name);
36296      composeTestScriptTestScriptTestComponentElements(element);
36297      composeElementClose(element);
36298      xml.exit(FHIR_NS, name);
36299    }
36300  }
36301
36302  protected void composeTestScriptTestScriptTestComponentElements(TestScript.TestScriptTestComponent element) throws IOException {
36303      composeBackboneElements(element);
36304      if (element.hasNameElement()) {
36305        composeString("name", element.getNameElement());
36306      }
36307      if (element.hasDescriptionElement()) {
36308        composeString("description", element.getDescriptionElement());
36309      }
36310      if (element.hasAction()) { 
36311        for (TestScript.TestActionComponent e : element.getAction()) 
36312          composeTestScriptTestActionComponent("action", e);
36313      }
36314  }
36315
36316  protected void composeTestScriptTestActionComponent(String name, TestScript.TestActionComponent element) throws IOException {
36317    if (element != null) {
36318      composeElementAttributes(element);
36319      xml.enter(FHIR_NS, name);
36320      composeTestScriptTestActionComponentElements(element);
36321      composeElementClose(element);
36322      xml.exit(FHIR_NS, name);
36323    }
36324  }
36325
36326  protected void composeTestScriptTestActionComponentElements(TestScript.TestActionComponent element) throws IOException {
36327      composeBackboneElements(element);
36328      if (element.hasOperation()) {
36329        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
36330      }
36331      if (element.hasAssert()) {
36332        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
36333      }
36334  }
36335
36336  protected void composeTestScriptTestScriptTeardownComponent(String name, TestScript.TestScriptTeardownComponent element) throws IOException {
36337    if (element != null) {
36338      composeElementAttributes(element);
36339      xml.enter(FHIR_NS, name);
36340      composeTestScriptTestScriptTeardownComponentElements(element);
36341      composeElementClose(element);
36342      xml.exit(FHIR_NS, name);
36343    }
36344  }
36345
36346  protected void composeTestScriptTestScriptTeardownComponentElements(TestScript.TestScriptTeardownComponent element) throws IOException {
36347      composeBackboneElements(element);
36348      if (element.hasAction()) { 
36349        for (TestScript.TeardownActionComponent e : element.getAction()) 
36350          composeTestScriptTeardownActionComponent("action", e);
36351      }
36352  }
36353
36354  protected void composeTestScriptTeardownActionComponent(String name, TestScript.TeardownActionComponent element) throws IOException {
36355    if (element != null) {
36356      composeElementAttributes(element);
36357      xml.enter(FHIR_NS, name);
36358      composeTestScriptTeardownActionComponentElements(element);
36359      composeElementClose(element);
36360      xml.exit(FHIR_NS, name);
36361    }
36362  }
36363
36364  protected void composeTestScriptTeardownActionComponentElements(TestScript.TeardownActionComponent element) throws IOException {
36365      composeBackboneElements(element);
36366      if (element.hasOperation()) {
36367        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
36368      }
36369  }
36370
36371  protected void composeValueSet(String name, ValueSet element) throws IOException {
36372    if (element != null) {
36373      composeDomainResourceAttributes(element);
36374      xml.enter(FHIR_NS, name);
36375      composeValueSetElements(element);
36376      composeElementClose(element);
36377      xml.exit(FHIR_NS, name);
36378    }
36379  }
36380
36381  protected void composeValueSetElements(ValueSet element) throws IOException {
36382      composeDomainResourceElements(element);
36383      if (element.hasUrlElement()) {
36384        composeUri("url", element.getUrlElement());
36385      }
36386      if (element.hasIdentifier()) { 
36387        for (Identifier e : element.getIdentifier()) 
36388          composeIdentifier("identifier", e);
36389      }
36390      if (element.hasVersionElement()) {
36391        composeString("version", element.getVersionElement());
36392      }
36393      if (element.hasNameElement()) {
36394        composeString("name", element.getNameElement());
36395      }
36396      if (element.hasTitleElement()) {
36397        composeString("title", element.getTitleElement());
36398      }
36399      if (element.hasStatusElement())
36400        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
36401      if (element.hasExperimentalElement()) {
36402        composeBoolean("experimental", element.getExperimentalElement());
36403      }
36404      if (element.hasDateElement()) {
36405        composeDateTime("date", element.getDateElement());
36406      }
36407      if (element.hasPublisherElement()) {
36408        composeString("publisher", element.getPublisherElement());
36409      }
36410      if (element.hasContact()) { 
36411        for (ContactDetail e : element.getContact()) 
36412          composeContactDetail("contact", e);
36413      }
36414      if (element.hasDescriptionElement()) {
36415        composeMarkdown("description", element.getDescriptionElement());
36416      }
36417      if (element.hasUseContext()) { 
36418        for (UsageContext e : element.getUseContext()) 
36419          composeUsageContext("useContext", e);
36420      }
36421      if (element.hasJurisdiction()) { 
36422        for (CodeableConcept e : element.getJurisdiction()) 
36423          composeCodeableConcept("jurisdiction", e);
36424      }
36425      if (element.hasImmutableElement()) {
36426        composeBoolean("immutable", element.getImmutableElement());
36427      }
36428      if (element.hasPurposeElement()) {
36429        composeMarkdown("purpose", element.getPurposeElement());
36430      }
36431      if (element.hasCopyrightElement()) {
36432        composeMarkdown("copyright", element.getCopyrightElement());
36433      }
36434      if (element.hasExtensibleElement()) {
36435        composeBoolean("extensible", element.getExtensibleElement());
36436      }
36437      if (element.hasCompose()) {
36438        composeValueSetValueSetComposeComponent("compose", element.getCompose());
36439      }
36440      if (element.hasExpansion()) {
36441        composeValueSetValueSetExpansionComponent("expansion", element.getExpansion());
36442      }
36443  }
36444
36445  protected void composeValueSetValueSetComposeComponent(String name, ValueSet.ValueSetComposeComponent element) throws IOException {
36446    if (element != null) {
36447      composeElementAttributes(element);
36448      xml.enter(FHIR_NS, name);
36449      composeValueSetValueSetComposeComponentElements(element);
36450      composeElementClose(element);
36451      xml.exit(FHIR_NS, name);
36452    }
36453  }
36454
36455  protected void composeValueSetValueSetComposeComponentElements(ValueSet.ValueSetComposeComponent element) throws IOException {
36456      composeBackboneElements(element);
36457      if (element.hasLockedDateElement()) {
36458        composeDate("lockedDate", element.getLockedDateElement());
36459      }
36460      if (element.hasInactiveElement()) {
36461        composeBoolean("inactive", element.getInactiveElement());
36462      }
36463      if (element.hasInclude()) { 
36464        for (ValueSet.ConceptSetComponent e : element.getInclude()) 
36465          composeValueSetConceptSetComponent("include", e);
36466      }
36467      if (element.hasExclude()) { 
36468        for (ValueSet.ConceptSetComponent e : element.getExclude()) 
36469          composeValueSetConceptSetComponent("exclude", e);
36470      }
36471  }
36472
36473  protected void composeValueSetConceptSetComponent(String name, ValueSet.ConceptSetComponent element) throws IOException {
36474    if (element != null) {
36475      composeElementAttributes(element);
36476      xml.enter(FHIR_NS, name);
36477      composeValueSetConceptSetComponentElements(element);
36478      composeElementClose(element);
36479      xml.exit(FHIR_NS, name);
36480    }
36481  }
36482
36483  protected void composeValueSetConceptSetComponentElements(ValueSet.ConceptSetComponent element) throws IOException {
36484      composeBackboneElements(element);
36485      if (element.hasSystemElement()) {
36486        composeUri("system", element.getSystemElement());
36487      }
36488      if (element.hasVersionElement()) {
36489        composeString("version", element.getVersionElement());
36490      }
36491      if (element.hasConcept()) { 
36492        for (ValueSet.ConceptReferenceComponent e : element.getConcept()) 
36493          composeValueSetConceptReferenceComponent("concept", e);
36494      }
36495      if (element.hasFilter()) { 
36496        for (ValueSet.ConceptSetFilterComponent e : element.getFilter()) 
36497          composeValueSetConceptSetFilterComponent("filter", e);
36498      }
36499      if (element.hasValueSet()) { 
36500        for (UriType e : element.getValueSet()) 
36501          composeUri("valueSet", e);
36502      }
36503  }
36504
36505  protected void composeValueSetConceptReferenceComponent(String name, ValueSet.ConceptReferenceComponent element) throws IOException {
36506    if (element != null) {
36507      composeElementAttributes(element);
36508      xml.enter(FHIR_NS, name);
36509      composeValueSetConceptReferenceComponentElements(element);
36510      composeElementClose(element);
36511      xml.exit(FHIR_NS, name);
36512    }
36513  }
36514
36515  protected void composeValueSetConceptReferenceComponentElements(ValueSet.ConceptReferenceComponent element) throws IOException {
36516      composeBackboneElements(element);
36517      if (element.hasCodeElement()) {
36518        composeCode("code", element.getCodeElement());
36519      }
36520      if (element.hasDisplayElement()) {
36521        composeString("display", element.getDisplayElement());
36522      }
36523      if (element.hasDesignation()) { 
36524        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
36525          composeValueSetConceptReferenceDesignationComponent("designation", e);
36526      }
36527  }
36528
36529  protected void composeValueSetConceptReferenceDesignationComponent(String name, ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
36530    if (element != null) {
36531      composeElementAttributes(element);
36532      xml.enter(FHIR_NS, name);
36533      composeValueSetConceptReferenceDesignationComponentElements(element);
36534      composeElementClose(element);
36535      xml.exit(FHIR_NS, name);
36536    }
36537  }
36538
36539  protected void composeValueSetConceptReferenceDesignationComponentElements(ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
36540      composeBackboneElements(element);
36541      if (element.hasLanguageElement()) {
36542        composeCode("language", element.getLanguageElement());
36543      }
36544      if (element.hasUse()) {
36545        composeCoding("use", element.getUse());
36546      }
36547      if (element.hasValueElement()) {
36548        composeString("value", element.getValueElement());
36549      }
36550  }
36551
36552  protected void composeValueSetConceptSetFilterComponent(String name, ValueSet.ConceptSetFilterComponent element) throws IOException {
36553    if (element != null) {
36554      composeElementAttributes(element);
36555      xml.enter(FHIR_NS, name);
36556      composeValueSetConceptSetFilterComponentElements(element);
36557      composeElementClose(element);
36558      xml.exit(FHIR_NS, name);
36559    }
36560  }
36561
36562  protected void composeValueSetConceptSetFilterComponentElements(ValueSet.ConceptSetFilterComponent element) throws IOException {
36563      composeBackboneElements(element);
36564      if (element.hasPropertyElement()) {
36565        composeCode("property", element.getPropertyElement());
36566      }
36567      if (element.hasOpElement())
36568        composeEnumeration("op", element.getOpElement(), new ValueSet.FilterOperatorEnumFactory());
36569      if (element.hasValueElement()) {
36570        composeCode("value", element.getValueElement());
36571      }
36572  }
36573
36574  protected void composeValueSetValueSetExpansionComponent(String name, ValueSet.ValueSetExpansionComponent element) throws IOException {
36575    if (element != null) {
36576      composeElementAttributes(element);
36577      xml.enter(FHIR_NS, name);
36578      composeValueSetValueSetExpansionComponentElements(element);
36579      composeElementClose(element);
36580      xml.exit(FHIR_NS, name);
36581    }
36582  }
36583
36584  protected void composeValueSetValueSetExpansionComponentElements(ValueSet.ValueSetExpansionComponent element) throws IOException {
36585      composeBackboneElements(element);
36586      if (element.hasIdentifierElement()) {
36587        composeUri("identifier", element.getIdentifierElement());
36588      }
36589      if (element.hasTimestampElement()) {
36590        composeDateTime("timestamp", element.getTimestampElement());
36591      }
36592      if (element.hasTotalElement()) {
36593        composeInteger("total", element.getTotalElement());
36594      }
36595      if (element.hasOffsetElement()) {
36596        composeInteger("offset", element.getOffsetElement());
36597      }
36598      if (element.hasParameter()) { 
36599        for (ValueSet.ValueSetExpansionParameterComponent e : element.getParameter()) 
36600          composeValueSetValueSetExpansionParameterComponent("parameter", e);
36601      }
36602      if (element.hasContains()) { 
36603        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
36604          composeValueSetValueSetExpansionContainsComponent("contains", e);
36605      }
36606  }
36607
36608  protected void composeValueSetValueSetExpansionParameterComponent(String name, ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
36609    if (element != null) {
36610      composeElementAttributes(element);
36611      xml.enter(FHIR_NS, name);
36612      composeValueSetValueSetExpansionParameterComponentElements(element);
36613      composeElementClose(element);
36614      xml.exit(FHIR_NS, name);
36615    }
36616  }
36617
36618  protected void composeValueSetValueSetExpansionParameterComponentElements(ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
36619      composeBackboneElements(element);
36620      if (element.hasNameElement()) {
36621        composeString("name", element.getNameElement());
36622      }
36623      if (element.hasValue()) {
36624        composeType("value", element.getValue());
36625      }  }
36626
36627  protected void composeValueSetValueSetExpansionContainsComponent(String name, ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
36628    if (element != null) {
36629      composeElementAttributes(element);
36630      xml.enter(FHIR_NS, name);
36631      composeValueSetValueSetExpansionContainsComponentElements(element);
36632      composeElementClose(element);
36633      xml.exit(FHIR_NS, name);
36634    }
36635  }
36636
36637  protected void composeValueSetValueSetExpansionContainsComponentElements(ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
36638      composeBackboneElements(element);
36639      if (element.hasSystemElement()) {
36640        composeUri("system", element.getSystemElement());
36641      }
36642      if (element.hasAbstractElement()) {
36643        composeBoolean("abstract", element.getAbstractElement());
36644      }
36645      if (element.hasInactiveElement()) {
36646        composeBoolean("inactive", element.getInactiveElement());
36647      }
36648      if (element.hasVersionElement()) {
36649        composeString("version", element.getVersionElement());
36650      }
36651      if (element.hasCodeElement()) {
36652        composeCode("code", element.getCodeElement());
36653      }
36654      if (element.hasDisplayElement()) {
36655        composeString("display", element.getDisplayElement());
36656      }
36657      if (element.hasDesignation()) { 
36658        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
36659          composeValueSetConceptReferenceDesignationComponent("designation", e);
36660      }
36661      if (element.hasContains()) { 
36662        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
36663          composeValueSetValueSetExpansionContainsComponent("contains", e);
36664      }
36665  }
36666
36667  protected void composeVisionPrescription(String name, VisionPrescription element) throws IOException {
36668    if (element != null) {
36669      composeDomainResourceAttributes(element);
36670      xml.enter(FHIR_NS, name);
36671      composeVisionPrescriptionElements(element);
36672      composeElementClose(element);
36673      xml.exit(FHIR_NS, name);
36674    }
36675  }
36676
36677  protected void composeVisionPrescriptionElements(VisionPrescription element) throws IOException {
36678      composeDomainResourceElements(element);
36679      if (element.hasIdentifier()) { 
36680        for (Identifier e : element.getIdentifier()) 
36681          composeIdentifier("identifier", e);
36682      }
36683      if (element.hasStatusElement())
36684        composeEnumeration("status", element.getStatusElement(), new VisionPrescription.VisionStatusEnumFactory());
36685      if (element.hasPatient()) {
36686        composeReference("patient", element.getPatient());
36687      }
36688      if (element.hasEncounter()) {
36689        composeReference("encounter", element.getEncounter());
36690      }
36691      if (element.hasDateWrittenElement()) {
36692        composeDateTime("dateWritten", element.getDateWrittenElement());
36693      }
36694      if (element.hasPrescriber()) {
36695        composeReference("prescriber", element.getPrescriber());
36696      }
36697      if (element.hasReason()) {
36698        composeType("reason", element.getReason());
36699      }      if (element.hasDispense()) { 
36700        for (VisionPrescription.VisionPrescriptionDispenseComponent e : element.getDispense()) 
36701          composeVisionPrescriptionVisionPrescriptionDispenseComponent("dispense", e);
36702      }
36703  }
36704
36705  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponent(String name, VisionPrescription.VisionPrescriptionDispenseComponent element) throws IOException {
36706    if (element != null) {
36707      composeElementAttributes(element);
36708      xml.enter(FHIR_NS, name);
36709      composeVisionPrescriptionVisionPrescriptionDispenseComponentElements(element);
36710      composeElementClose(element);
36711      xml.exit(FHIR_NS, name);
36712    }
36713  }
36714
36715  protected void composeVisionPrescriptionVisionPrescriptionDispenseComponentElements(VisionPrescription.VisionPrescriptionDispenseComponent element) throws IOException {
36716      composeBackboneElements(element);
36717      if (element.hasProduct()) {
36718        composeCodeableConcept("product", element.getProduct());
36719      }
36720      if (element.hasEyeElement())
36721        composeEnumeration("eye", element.getEyeElement(), new VisionPrescription.VisionEyesEnumFactory());
36722      if (element.hasSphereElement()) {
36723        composeDecimal("sphere", element.getSphereElement());
36724      }
36725      if (element.hasCylinderElement()) {
36726        composeDecimal("cylinder", element.getCylinderElement());
36727      }
36728      if (element.hasAxisElement()) {
36729        composeInteger("axis", element.getAxisElement());
36730      }
36731      if (element.hasPrismElement()) {
36732        composeDecimal("prism", element.getPrismElement());
36733      }
36734      if (element.hasBaseElement())
36735        composeEnumeration("base", element.getBaseElement(), new VisionPrescription.VisionBaseEnumFactory());
36736      if (element.hasAddElement()) {
36737        composeDecimal("add", element.getAddElement());
36738      }
36739      if (element.hasPowerElement()) {
36740        composeDecimal("power", element.getPowerElement());
36741      }
36742      if (element.hasBackCurveElement()) {
36743        composeDecimal("backCurve", element.getBackCurveElement());
36744      }
36745      if (element.hasDiameterElement()) {
36746        composeDecimal("diameter", element.getDiameterElement());
36747      }
36748      if (element.hasDuration()) {
36749        composeSimpleQuantity("duration", element.getDuration());
36750      }
36751      if (element.hasColorElement()) {
36752        composeString("color", element.getColorElement());
36753      }
36754      if (element.hasBrandElement()) {
36755        composeString("brand", element.getBrandElement());
36756      }
36757      if (element.hasNote()) { 
36758        for (Annotation e : element.getNote()) 
36759          composeAnnotation("note", e);
36760      }
36761  }
36762
36763  @Override
36764  protected void composeResource(Resource resource) throws IOException {
36765    if (resource instanceof Parameters)
36766      composeParameters("Parameters", (Parameters)resource);
36767    else if (resource instanceof Account)
36768      composeAccount("Account", (Account)resource);
36769    else if (resource instanceof ActivityDefinition)
36770      composeActivityDefinition("ActivityDefinition", (ActivityDefinition)resource);
36771    else if (resource instanceof AdverseEvent)
36772      composeAdverseEvent("AdverseEvent", (AdverseEvent)resource);
36773    else if (resource instanceof AllergyIntolerance)
36774      composeAllergyIntolerance("AllergyIntolerance", (AllergyIntolerance)resource);
36775    else if (resource instanceof Appointment)
36776      composeAppointment("Appointment", (Appointment)resource);
36777    else if (resource instanceof AppointmentResponse)
36778      composeAppointmentResponse("AppointmentResponse", (AppointmentResponse)resource);
36779    else if (resource instanceof AuditEvent)
36780      composeAuditEvent("AuditEvent", (AuditEvent)resource);
36781    else if (resource instanceof Basic)
36782      composeBasic("Basic", (Basic)resource);
36783    else if (resource instanceof Binary)
36784      composeBinary("Binary", (Binary)resource);
36785    else if (resource instanceof BodySite)
36786      composeBodySite("BodySite", (BodySite)resource);
36787    else if (resource instanceof Bundle)
36788      composeBundle("Bundle", (Bundle)resource);
36789    else if (resource instanceof CapabilityStatement)
36790      composeCapabilityStatement("CapabilityStatement", (CapabilityStatement)resource);
36791    else if (resource instanceof CarePlan)
36792      composeCarePlan("CarePlan", (CarePlan)resource);
36793    else if (resource instanceof CareTeam)
36794      composeCareTeam("CareTeam", (CareTeam)resource);
36795    else if (resource instanceof ChargeItem)
36796      composeChargeItem("ChargeItem", (ChargeItem)resource);
36797    else if (resource instanceof Claim)
36798      composeClaim("Claim", (Claim)resource);
36799    else if (resource instanceof ClaimResponse)
36800      composeClaimResponse("ClaimResponse", (ClaimResponse)resource);
36801    else if (resource instanceof ClinicalImpression)
36802      composeClinicalImpression("ClinicalImpression", (ClinicalImpression)resource);
36803    else if (resource instanceof CodeSystem)
36804      composeCodeSystem("CodeSystem", (CodeSystem)resource);
36805    else if (resource instanceof Communication)
36806      composeCommunication("Communication", (Communication)resource);
36807    else if (resource instanceof CommunicationRequest)
36808      composeCommunicationRequest("CommunicationRequest", (CommunicationRequest)resource);
36809    else if (resource instanceof CompartmentDefinition)
36810      composeCompartmentDefinition("CompartmentDefinition", (CompartmentDefinition)resource);
36811    else if (resource instanceof Composition)
36812      composeComposition("Composition", (Composition)resource);
36813    else if (resource instanceof ConceptMap)
36814      composeConceptMap("ConceptMap", (ConceptMap)resource);
36815    else if (resource instanceof Condition)
36816      composeCondition("Condition", (Condition)resource);
36817    else if (resource instanceof Consent)
36818      composeConsent("Consent", (Consent)resource);
36819    else if (resource instanceof Contract)
36820      composeContract("Contract", (Contract)resource);
36821    else if (resource instanceof Coverage)
36822      composeCoverage("Coverage", (Coverage)resource);
36823    else if (resource instanceof DataElement)
36824      composeDataElement("DataElement", (DataElement)resource);
36825    else if (resource instanceof DetectedIssue)
36826      composeDetectedIssue("DetectedIssue", (DetectedIssue)resource);
36827    else if (resource instanceof Device)
36828      composeDevice("Device", (Device)resource);
36829    else if (resource instanceof DeviceComponent)
36830      composeDeviceComponent("DeviceComponent", (DeviceComponent)resource);
36831    else if (resource instanceof DeviceMetric)
36832      composeDeviceMetric("DeviceMetric", (DeviceMetric)resource);
36833    else if (resource instanceof DeviceRequest)
36834      composeDeviceRequest("DeviceRequest", (DeviceRequest)resource);
36835    else if (resource instanceof DeviceUseStatement)
36836      composeDeviceUseStatement("DeviceUseStatement", (DeviceUseStatement)resource);
36837    else if (resource instanceof DiagnosticReport)
36838      composeDiagnosticReport("DiagnosticReport", (DiagnosticReport)resource);
36839    else if (resource instanceof DocumentManifest)
36840      composeDocumentManifest("DocumentManifest", (DocumentManifest)resource);
36841    else if (resource instanceof DocumentReference)
36842      composeDocumentReference("DocumentReference", (DocumentReference)resource);
36843    else if (resource instanceof EligibilityRequest)
36844      composeEligibilityRequest("EligibilityRequest", (EligibilityRequest)resource);
36845    else if (resource instanceof EligibilityResponse)
36846      composeEligibilityResponse("EligibilityResponse", (EligibilityResponse)resource);
36847    else if (resource instanceof Encounter)
36848      composeEncounter("Encounter", (Encounter)resource);
36849    else if (resource instanceof Endpoint)
36850      composeEndpoint("Endpoint", (Endpoint)resource);
36851    else if (resource instanceof EnrollmentRequest)
36852      composeEnrollmentRequest("EnrollmentRequest", (EnrollmentRequest)resource);
36853    else if (resource instanceof EnrollmentResponse)
36854      composeEnrollmentResponse("EnrollmentResponse", (EnrollmentResponse)resource);
36855    else if (resource instanceof EpisodeOfCare)
36856      composeEpisodeOfCare("EpisodeOfCare", (EpisodeOfCare)resource);
36857    else if (resource instanceof ExpansionProfile)
36858      composeExpansionProfile("ExpansionProfile", (ExpansionProfile)resource);
36859    else if (resource instanceof ExplanationOfBenefit)
36860      composeExplanationOfBenefit("ExplanationOfBenefit", (ExplanationOfBenefit)resource);
36861    else if (resource instanceof FamilyMemberHistory)
36862      composeFamilyMemberHistory("FamilyMemberHistory", (FamilyMemberHistory)resource);
36863    else if (resource instanceof Flag)
36864      composeFlag("Flag", (Flag)resource);
36865    else if (resource instanceof Goal)
36866      composeGoal("Goal", (Goal)resource);
36867    else if (resource instanceof GraphDefinition)
36868      composeGraphDefinition("GraphDefinition", (GraphDefinition)resource);
36869    else if (resource instanceof Group)
36870      composeGroup("Group", (Group)resource);
36871    else if (resource instanceof GuidanceResponse)
36872      composeGuidanceResponse("GuidanceResponse", (GuidanceResponse)resource);
36873    else if (resource instanceof HealthcareService)
36874      composeHealthcareService("HealthcareService", (HealthcareService)resource);
36875    else if (resource instanceof ImagingManifest)
36876      composeImagingManifest("ImagingManifest", (ImagingManifest)resource);
36877    else if (resource instanceof ImagingStudy)
36878      composeImagingStudy("ImagingStudy", (ImagingStudy)resource);
36879    else if (resource instanceof Immunization)
36880      composeImmunization("Immunization", (Immunization)resource);
36881    else if (resource instanceof ImmunizationRecommendation)
36882      composeImmunizationRecommendation("ImmunizationRecommendation", (ImmunizationRecommendation)resource);
36883    else if (resource instanceof ImplementationGuide)
36884      composeImplementationGuide("ImplementationGuide", (ImplementationGuide)resource);
36885    else if (resource instanceof Library)
36886      composeLibrary("Library", (Library)resource);
36887    else if (resource instanceof Linkage)
36888      composeLinkage("Linkage", (Linkage)resource);
36889    else if (resource instanceof ListResource)
36890      composeListResource("List", (ListResource)resource);
36891    else if (resource instanceof Location)
36892      composeLocation("Location", (Location)resource);
36893    else if (resource instanceof Measure)
36894      composeMeasure("Measure", (Measure)resource);
36895    else if (resource instanceof MeasureReport)
36896      composeMeasureReport("MeasureReport", (MeasureReport)resource);
36897    else if (resource instanceof Media)
36898      composeMedia("Media", (Media)resource);
36899    else if (resource instanceof Medication)
36900      composeMedication("Medication", (Medication)resource);
36901    else if (resource instanceof MedicationAdministration)
36902      composeMedicationAdministration("MedicationAdministration", (MedicationAdministration)resource);
36903    else if (resource instanceof MedicationDispense)
36904      composeMedicationDispense("MedicationDispense", (MedicationDispense)resource);
36905    else if (resource instanceof MedicationRequest)
36906      composeMedicationRequest("MedicationRequest", (MedicationRequest)resource);
36907    else if (resource instanceof MedicationStatement)
36908      composeMedicationStatement("MedicationStatement", (MedicationStatement)resource);
36909    else if (resource instanceof MessageDefinition)
36910      composeMessageDefinition("MessageDefinition", (MessageDefinition)resource);
36911    else if (resource instanceof MessageHeader)
36912      composeMessageHeader("MessageHeader", (MessageHeader)resource);
36913    else if (resource instanceof NamingSystem)
36914      composeNamingSystem("NamingSystem", (NamingSystem)resource);
36915    else if (resource instanceof NutritionOrder)
36916      composeNutritionOrder("NutritionOrder", (NutritionOrder)resource);
36917    else if (resource instanceof Observation)
36918      composeObservation("Observation", (Observation)resource);
36919    else if (resource instanceof OperationDefinition)
36920      composeOperationDefinition("OperationDefinition", (OperationDefinition)resource);
36921    else if (resource instanceof OperationOutcome)
36922      composeOperationOutcome("OperationOutcome", (OperationOutcome)resource);
36923    else if (resource instanceof Organization)
36924      composeOrganization("Organization", (Organization)resource);
36925    else if (resource instanceof Patient)
36926      composePatient("Patient", (Patient)resource);
36927    else if (resource instanceof PaymentNotice)
36928      composePaymentNotice("PaymentNotice", (PaymentNotice)resource);
36929    else if (resource instanceof PaymentReconciliation)
36930      composePaymentReconciliation("PaymentReconciliation", (PaymentReconciliation)resource);
36931    else if (resource instanceof Person)
36932      composePerson("Person", (Person)resource);
36933    else if (resource instanceof PlanDefinition)
36934      composePlanDefinition("PlanDefinition", (PlanDefinition)resource);
36935    else if (resource instanceof Practitioner)
36936      composePractitioner("Practitioner", (Practitioner)resource);
36937    else if (resource instanceof PractitionerRole)
36938      composePractitionerRole("PractitionerRole", (PractitionerRole)resource);
36939    else if (resource instanceof Procedure)
36940      composeProcedure("Procedure", (Procedure)resource);
36941    else if (resource instanceof ProcedureRequest)
36942      composeProcedureRequest("ProcedureRequest", (ProcedureRequest)resource);
36943    else if (resource instanceof ProcessRequest)
36944      composeProcessRequest("ProcessRequest", (ProcessRequest)resource);
36945    else if (resource instanceof ProcessResponse)
36946      composeProcessResponse("ProcessResponse", (ProcessResponse)resource);
36947    else if (resource instanceof Provenance)
36948      composeProvenance("Provenance", (Provenance)resource);
36949    else if (resource instanceof Questionnaire)
36950      composeQuestionnaire("Questionnaire", (Questionnaire)resource);
36951    else if (resource instanceof QuestionnaireResponse)
36952      composeQuestionnaireResponse("QuestionnaireResponse", (QuestionnaireResponse)resource);
36953    else if (resource instanceof ReferralRequest)
36954      composeReferralRequest("ReferralRequest", (ReferralRequest)resource);
36955    else if (resource instanceof RelatedPerson)
36956      composeRelatedPerson("RelatedPerson", (RelatedPerson)resource);
36957    else if (resource instanceof RequestGroup)
36958      composeRequestGroup("RequestGroup", (RequestGroup)resource);
36959    else if (resource instanceof ResearchStudy)
36960      composeResearchStudy("ResearchStudy", (ResearchStudy)resource);
36961    else if (resource instanceof ResearchSubject)
36962      composeResearchSubject("ResearchSubject", (ResearchSubject)resource);
36963    else if (resource instanceof RiskAssessment)
36964      composeRiskAssessment("RiskAssessment", (RiskAssessment)resource);
36965    else if (resource instanceof Schedule)
36966      composeSchedule("Schedule", (Schedule)resource);
36967    else if (resource instanceof SearchParameter)
36968      composeSearchParameter("SearchParameter", (SearchParameter)resource);
36969    else if (resource instanceof Sequence)
36970      composeSequence("Sequence", (Sequence)resource);
36971    else if (resource instanceof ServiceDefinition)
36972      composeServiceDefinition("ServiceDefinition", (ServiceDefinition)resource);
36973    else if (resource instanceof Slot)
36974      composeSlot("Slot", (Slot)resource);
36975    else if (resource instanceof Specimen)
36976      composeSpecimen("Specimen", (Specimen)resource);
36977    else if (resource instanceof StructureDefinition)
36978      composeStructureDefinition("StructureDefinition", (StructureDefinition)resource);
36979    else if (resource instanceof StructureMap)
36980      composeStructureMap("StructureMap", (StructureMap)resource);
36981    else if (resource instanceof Subscription)
36982      composeSubscription("Subscription", (Subscription)resource);
36983    else if (resource instanceof Substance)
36984      composeSubstance("Substance", (Substance)resource);
36985    else if (resource instanceof SupplyDelivery)
36986      composeSupplyDelivery("SupplyDelivery", (SupplyDelivery)resource);
36987    else if (resource instanceof SupplyRequest)
36988      composeSupplyRequest("SupplyRequest", (SupplyRequest)resource);
36989    else if (resource instanceof Task)
36990      composeTask("Task", (Task)resource);
36991    else if (resource instanceof TestReport)
36992      composeTestReport("TestReport", (TestReport)resource);
36993    else if (resource instanceof TestScript)
36994      composeTestScript("TestScript", (TestScript)resource);
36995    else if (resource instanceof ValueSet)
36996      composeValueSet("ValueSet", (ValueSet)resource);
36997    else if (resource instanceof VisionPrescription)
36998      composeVisionPrescription("VisionPrescription", (VisionPrescription)resource);
36999    else if (resource instanceof Binary)
37000      composeBinary("Binary", (Binary)resource);
37001    else
37002      throw new Error("Unhandled resource type "+resource.getClass().getName());
37003  }
37004
37005  protected void composeResource(String name, Resource resource) throws IOException {
37006    if (resource instanceof Parameters)
37007      composeParameters(name, (Parameters)resource);
37008    else if (resource instanceof Account)
37009      composeAccount(name, (Account)resource);
37010    else if (resource instanceof ActivityDefinition)
37011      composeActivityDefinition(name, (ActivityDefinition)resource);
37012    else if (resource instanceof AdverseEvent)
37013      composeAdverseEvent(name, (AdverseEvent)resource);
37014    else if (resource instanceof AllergyIntolerance)
37015      composeAllergyIntolerance(name, (AllergyIntolerance)resource);
37016    else if (resource instanceof Appointment)
37017      composeAppointment(name, (Appointment)resource);
37018    else if (resource instanceof AppointmentResponse)
37019      composeAppointmentResponse(name, (AppointmentResponse)resource);
37020    else if (resource instanceof AuditEvent)
37021      composeAuditEvent(name, (AuditEvent)resource);
37022    else if (resource instanceof Basic)
37023      composeBasic(name, (Basic)resource);
37024    else if (resource instanceof Binary)
37025      composeBinary(name, (Binary)resource);
37026    else if (resource instanceof BodySite)
37027      composeBodySite(name, (BodySite)resource);
37028    else if (resource instanceof Bundle)
37029      composeBundle(name, (Bundle)resource);
37030    else if (resource instanceof CapabilityStatement)
37031      composeCapabilityStatement(name, (CapabilityStatement)resource);
37032    else if (resource instanceof CarePlan)
37033      composeCarePlan(name, (CarePlan)resource);
37034    else if (resource instanceof CareTeam)
37035      composeCareTeam(name, (CareTeam)resource);
37036    else if (resource instanceof ChargeItem)
37037      composeChargeItem(name, (ChargeItem)resource);
37038    else if (resource instanceof Claim)
37039      composeClaim(name, (Claim)resource);
37040    else if (resource instanceof ClaimResponse)
37041      composeClaimResponse(name, (ClaimResponse)resource);
37042    else if (resource instanceof ClinicalImpression)
37043      composeClinicalImpression(name, (ClinicalImpression)resource);
37044    else if (resource instanceof CodeSystem)
37045      composeCodeSystem(name, (CodeSystem)resource);
37046    else if (resource instanceof Communication)
37047      composeCommunication(name, (Communication)resource);
37048    else if (resource instanceof CommunicationRequest)
37049      composeCommunicationRequest(name, (CommunicationRequest)resource);
37050    else if (resource instanceof CompartmentDefinition)
37051      composeCompartmentDefinition(name, (CompartmentDefinition)resource);
37052    else if (resource instanceof Composition)
37053      composeComposition(name, (Composition)resource);
37054    else if (resource instanceof ConceptMap)
37055      composeConceptMap(name, (ConceptMap)resource);
37056    else if (resource instanceof Condition)
37057      composeCondition(name, (Condition)resource);
37058    else if (resource instanceof Consent)
37059      composeConsent(name, (Consent)resource);
37060    else if (resource instanceof Contract)
37061      composeContract(name, (Contract)resource);
37062    else if (resource instanceof Coverage)
37063      composeCoverage(name, (Coverage)resource);
37064    else if (resource instanceof DataElement)
37065      composeDataElement(name, (DataElement)resource);
37066    else if (resource instanceof DetectedIssue)
37067      composeDetectedIssue(name, (DetectedIssue)resource);
37068    else if (resource instanceof Device)
37069      composeDevice(name, (Device)resource);
37070    else if (resource instanceof DeviceComponent)
37071      composeDeviceComponent(name, (DeviceComponent)resource);
37072    else if (resource instanceof DeviceMetric)
37073      composeDeviceMetric(name, (DeviceMetric)resource);
37074    else if (resource instanceof DeviceRequest)
37075      composeDeviceRequest(name, (DeviceRequest)resource);
37076    else if (resource instanceof DeviceUseStatement)
37077      composeDeviceUseStatement(name, (DeviceUseStatement)resource);
37078    else if (resource instanceof DiagnosticReport)
37079      composeDiagnosticReport(name, (DiagnosticReport)resource);
37080    else if (resource instanceof DocumentManifest)
37081      composeDocumentManifest(name, (DocumentManifest)resource);
37082    else if (resource instanceof DocumentReference)
37083      composeDocumentReference(name, (DocumentReference)resource);
37084    else if (resource instanceof EligibilityRequest)
37085      composeEligibilityRequest(name, (EligibilityRequest)resource);
37086    else if (resource instanceof EligibilityResponse)
37087      composeEligibilityResponse(name, (EligibilityResponse)resource);
37088    else if (resource instanceof Encounter)
37089      composeEncounter(name, (Encounter)resource);
37090    else if (resource instanceof Endpoint)
37091      composeEndpoint(name, (Endpoint)resource);
37092    else if (resource instanceof EnrollmentRequest)
37093      composeEnrollmentRequest(name, (EnrollmentRequest)resource);
37094    else if (resource instanceof EnrollmentResponse)
37095      composeEnrollmentResponse(name, (EnrollmentResponse)resource);
37096    else if (resource instanceof EpisodeOfCare)
37097      composeEpisodeOfCare(name, (EpisodeOfCare)resource);
37098    else if (resource instanceof ExpansionProfile)
37099      composeExpansionProfile(name, (ExpansionProfile)resource);
37100    else if (resource instanceof ExplanationOfBenefit)
37101      composeExplanationOfBenefit(name, (ExplanationOfBenefit)resource);
37102    else if (resource instanceof FamilyMemberHistory)
37103      composeFamilyMemberHistory(name, (FamilyMemberHistory)resource);
37104    else if (resource instanceof Flag)
37105      composeFlag(name, (Flag)resource);
37106    else if (resource instanceof Goal)
37107      composeGoal(name, (Goal)resource);
37108    else if (resource instanceof GraphDefinition)
37109      composeGraphDefinition(name, (GraphDefinition)resource);
37110    else if (resource instanceof Group)
37111      composeGroup(name, (Group)resource);
37112    else if (resource instanceof GuidanceResponse)
37113      composeGuidanceResponse(name, (GuidanceResponse)resource);
37114    else if (resource instanceof HealthcareService)
37115      composeHealthcareService(name, (HealthcareService)resource);
37116    else if (resource instanceof ImagingManifest)
37117      composeImagingManifest(name, (ImagingManifest)resource);
37118    else if (resource instanceof ImagingStudy)
37119      composeImagingStudy(name, (ImagingStudy)resource);
37120    else if (resource instanceof Immunization)
37121      composeImmunization(name, (Immunization)resource);
37122    else if (resource instanceof ImmunizationRecommendation)
37123      composeImmunizationRecommendation(name, (ImmunizationRecommendation)resource);
37124    else if (resource instanceof ImplementationGuide)
37125      composeImplementationGuide(name, (ImplementationGuide)resource);
37126    else if (resource instanceof Library)
37127      composeLibrary(name, (Library)resource);
37128    else if (resource instanceof Linkage)
37129      composeLinkage(name, (Linkage)resource);
37130    else if (resource instanceof ListResource)
37131      composeListResource(name, (ListResource)resource);
37132    else if (resource instanceof Location)
37133      composeLocation(name, (Location)resource);
37134    else if (resource instanceof Measure)
37135      composeMeasure(name, (Measure)resource);
37136    else if (resource instanceof MeasureReport)
37137      composeMeasureReport(name, (MeasureReport)resource);
37138    else if (resource instanceof Media)
37139      composeMedia(name, (Media)resource);
37140    else if (resource instanceof Medication)
37141      composeMedication(name, (Medication)resource);
37142    else if (resource instanceof MedicationAdministration)
37143      composeMedicationAdministration(name, (MedicationAdministration)resource);
37144    else if (resource instanceof MedicationDispense)
37145      composeMedicationDispense(name, (MedicationDispense)resource);
37146    else if (resource instanceof MedicationRequest)
37147      composeMedicationRequest(name, (MedicationRequest)resource);
37148    else if (resource instanceof MedicationStatement)
37149      composeMedicationStatement(name, (MedicationStatement)resource);
37150    else if (resource instanceof MessageDefinition)
37151      composeMessageDefinition(name, (MessageDefinition)resource);
37152    else if (resource instanceof MessageHeader)
37153      composeMessageHeader(name, (MessageHeader)resource);
37154    else if (resource instanceof NamingSystem)
37155      composeNamingSystem(name, (NamingSystem)resource);
37156    else if (resource instanceof NutritionOrder)
37157      composeNutritionOrder(name, (NutritionOrder)resource);
37158    else if (resource instanceof Observation)
37159      composeObservation(name, (Observation)resource);
37160    else if (resource instanceof OperationDefinition)
37161      composeOperationDefinition(name, (OperationDefinition)resource);
37162    else if (resource instanceof OperationOutcome)
37163      composeOperationOutcome(name, (OperationOutcome)resource);
37164    else if (resource instanceof Organization)
37165      composeOrganization(name, (Organization)resource);
37166    else if (resource instanceof Patient)
37167      composePatient(name, (Patient)resource);
37168    else if (resource instanceof PaymentNotice)
37169      composePaymentNotice(name, (PaymentNotice)resource);
37170    else if (resource instanceof PaymentReconciliation)
37171      composePaymentReconciliation(name, (PaymentReconciliation)resource);
37172    else if (resource instanceof Person)
37173      composePerson(name, (Person)resource);
37174    else if (resource instanceof PlanDefinition)
37175      composePlanDefinition(name, (PlanDefinition)resource);
37176    else if (resource instanceof Practitioner)
37177      composePractitioner(name, (Practitioner)resource);
37178    else if (resource instanceof PractitionerRole)
37179      composePractitionerRole(name, (PractitionerRole)resource);
37180    else if (resource instanceof Procedure)
37181      composeProcedure(name, (Procedure)resource);
37182    else if (resource instanceof ProcedureRequest)
37183      composeProcedureRequest(name, (ProcedureRequest)resource);
37184    else if (resource instanceof ProcessRequest)
37185      composeProcessRequest(name, (ProcessRequest)resource);
37186    else if (resource instanceof ProcessResponse)
37187      composeProcessResponse(name, (ProcessResponse)resource);
37188    else if (resource instanceof Provenance)
37189      composeProvenance(name, (Provenance)resource);
37190    else if (resource instanceof Questionnaire)
37191      composeQuestionnaire(name, (Questionnaire)resource);
37192    else if (resource instanceof QuestionnaireResponse)
37193      composeQuestionnaireResponse(name, (QuestionnaireResponse)resource);
37194    else if (resource instanceof ReferralRequest)
37195      composeReferralRequest(name, (ReferralRequest)resource);
37196    else if (resource instanceof RelatedPerson)
37197      composeRelatedPerson(name, (RelatedPerson)resource);
37198    else if (resource instanceof RequestGroup)
37199      composeRequestGroup(name, (RequestGroup)resource);
37200    else if (resource instanceof ResearchStudy)
37201      composeResearchStudy(name, (ResearchStudy)resource);
37202    else if (resource instanceof ResearchSubject)
37203      composeResearchSubject(name, (ResearchSubject)resource);
37204    else if (resource instanceof RiskAssessment)
37205      composeRiskAssessment(name, (RiskAssessment)resource);
37206    else if (resource instanceof Schedule)
37207      composeSchedule(name, (Schedule)resource);
37208    else if (resource instanceof SearchParameter)
37209      composeSearchParameter(name, (SearchParameter)resource);
37210    else if (resource instanceof Sequence)
37211      composeSequence(name, (Sequence)resource);
37212    else if (resource instanceof ServiceDefinition)
37213      composeServiceDefinition(name, (ServiceDefinition)resource);
37214    else if (resource instanceof Slot)
37215      composeSlot(name, (Slot)resource);
37216    else if (resource instanceof Specimen)
37217      composeSpecimen(name, (Specimen)resource);
37218    else if (resource instanceof StructureDefinition)
37219      composeStructureDefinition(name, (StructureDefinition)resource);
37220    else if (resource instanceof StructureMap)
37221      composeStructureMap(name, (StructureMap)resource);
37222    else if (resource instanceof Subscription)
37223      composeSubscription(name, (Subscription)resource);
37224    else if (resource instanceof Substance)
37225      composeSubstance(name, (Substance)resource);
37226    else if (resource instanceof SupplyDelivery)
37227      composeSupplyDelivery(name, (SupplyDelivery)resource);
37228    else if (resource instanceof SupplyRequest)
37229      composeSupplyRequest(name, (SupplyRequest)resource);
37230    else if (resource instanceof Task)
37231      composeTask(name, (Task)resource);
37232    else if (resource instanceof TestReport)
37233      composeTestReport(name, (TestReport)resource);
37234    else if (resource instanceof TestScript)
37235      composeTestScript(name, (TestScript)resource);
37236    else if (resource instanceof ValueSet)
37237      composeValueSet(name, (ValueSet)resource);
37238    else if (resource instanceof VisionPrescription)
37239      composeVisionPrescription(name, (VisionPrescription)resource);
37240    else if (resource instanceof Binary)
37241      composeBinary(name, (Binary)resource);
37242    else
37243      throw new Error("Unhandled resource type "+resource.getClass().getName());
37244  }
37245
37246  protected void composeType(String prefix, Type type) throws IOException {
37247    if (type == null)
37248      ;
37249    else if (type instanceof SimpleQuantity)
37250       composeSimpleQuantity(prefix+"SimpleQuantity", (SimpleQuantity) type);
37251    else if (type instanceof Duration)
37252       composeDuration(prefix+"Duration", (Duration) type);
37253    else if (type instanceof Count)
37254       composeCount(prefix+"Count", (Count) type);
37255    else if (type instanceof Money)
37256       composeMoney(prefix+"Money", (Money) type);
37257    else if (type instanceof Distance)
37258       composeDistance(prefix+"Distance", (Distance) type);
37259    else if (type instanceof Age)
37260       composeAge(prefix+"Age", (Age) type);
37261    else if (type instanceof Reference)
37262       composeReference(prefix+"Reference", (Reference) type);
37263    else if (type instanceof Quantity)
37264       composeQuantity(prefix+"Quantity", (Quantity) type);
37265    else if (type instanceof Period)
37266       composePeriod(prefix+"Period", (Period) type);
37267    else if (type instanceof Attachment)
37268       composeAttachment(prefix+"Attachment", (Attachment) type);
37269    else if (type instanceof Range)
37270       composeRange(prefix+"Range", (Range) type);
37271    else if (type instanceof Annotation)
37272       composeAnnotation(prefix+"Annotation", (Annotation) type);
37273    else if (type instanceof Identifier)
37274       composeIdentifier(prefix+"Identifier", (Identifier) type);
37275    else if (type instanceof Coding)
37276       composeCoding(prefix+"Coding", (Coding) type);
37277    else if (type instanceof Signature)
37278       composeSignature(prefix+"Signature", (Signature) type);
37279    else if (type instanceof SampledData)
37280       composeSampledData(prefix+"SampledData", (SampledData) type);
37281    else if (type instanceof Ratio)
37282       composeRatio(prefix+"Ratio", (Ratio) type);
37283    else if (type instanceof CodeableConcept)
37284       composeCodeableConcept(prefix+"CodeableConcept", (CodeableConcept) type);
37285    else if (type instanceof Meta)
37286       composeMeta(prefix+"Meta", (Meta) type);
37287    else if (type instanceof Address)
37288       composeAddress(prefix+"Address", (Address) type);
37289    else if (type instanceof TriggerDefinition)
37290       composeTriggerDefinition(prefix+"TriggerDefinition", (TriggerDefinition) type);
37291    else if (type instanceof Contributor)
37292       composeContributor(prefix+"Contributor", (Contributor) type);
37293    else if (type instanceof DataRequirement)
37294       composeDataRequirement(prefix+"DataRequirement", (DataRequirement) type);
37295    else if (type instanceof Dosage)
37296       composeDosage(prefix+"Dosage", (Dosage) type);
37297    else if (type instanceof RelatedArtifact)
37298       composeRelatedArtifact(prefix+"RelatedArtifact", (RelatedArtifact) type);
37299    else if (type instanceof ContactDetail)
37300       composeContactDetail(prefix+"ContactDetail", (ContactDetail) type);
37301    else if (type instanceof HumanName)
37302       composeHumanName(prefix+"HumanName", (HumanName) type);
37303    else if (type instanceof ContactPoint)
37304       composeContactPoint(prefix+"ContactPoint", (ContactPoint) type);
37305    else if (type instanceof UsageContext)
37306       composeUsageContext(prefix+"UsageContext", (UsageContext) type);
37307    else if (type instanceof Timing)
37308       composeTiming(prefix+"Timing", (Timing) type);
37309    else if (type instanceof ElementDefinition)
37310       composeElementDefinition(prefix+"ElementDefinition", (ElementDefinition) type);
37311    else if (type instanceof ParameterDefinition)
37312       composeParameterDefinition(prefix+"ParameterDefinition", (ParameterDefinition) type);
37313    else if (type instanceof CodeType)
37314       composeCode(prefix+"Code", (CodeType) type);
37315    else if (type instanceof OidType)
37316       composeOid(prefix+"Oid", (OidType) type);
37317    else if (type instanceof UuidType)
37318       composeUuid(prefix+"Uuid", (UuidType) type);
37319    else if (type instanceof UnsignedIntType)
37320       composeUnsignedInt(prefix+"UnsignedInt", (UnsignedIntType) type);
37321    else if (type instanceof MarkdownType)
37322       composeMarkdown(prefix+"Markdown", (MarkdownType) type);
37323    else if (type instanceof IdType)
37324       composeId(prefix+"Id", (IdType) type);
37325    else if (type instanceof PositiveIntType)
37326       composePositiveInt(prefix+"PositiveInt", (PositiveIntType) type);
37327    else if (type instanceof DateType)
37328       composeDate(prefix+"Date", (DateType) type);
37329    else if (type instanceof DateTimeType)
37330       composeDateTime(prefix+"DateTime", (DateTimeType) type);
37331    else if (type instanceof StringType)
37332       composeString(prefix+"String", (StringType) type);
37333    else if (type instanceof IntegerType)
37334       composeInteger(prefix+"Integer", (IntegerType) type);
37335    else if (type instanceof UriType)
37336       composeUri(prefix+"Uri", (UriType) type);
37337    else if (type instanceof InstantType)
37338       composeInstant(prefix+"Instant", (InstantType) type);
37339    else if (type instanceof BooleanType)
37340       composeBoolean(prefix+"Boolean", (BooleanType) type);
37341    else if (type instanceof Base64BinaryType)
37342       composeBase64Binary(prefix+"Base64Binary", (Base64BinaryType) type);
37343    else if (type instanceof TimeType)
37344       composeTime(prefix+"Time", (TimeType) type);
37345    else if (type instanceof DecimalType)
37346       composeDecimal(prefix+"Decimal", (DecimalType) type);
37347    else
37348      throw new Error("Unhandled type");
37349  }
37350
37351}
37352